Secret Scanning with TrrufleHog on DevSecOps

Introduction

Dalam dunia DevSecOps, menjaga keamanan kode sumber adalah prioritas utama. Salah satu langkah penting dalam proses ini adalah melakukan secret scanning untuk mendeteksi kredensial sensitif, token, dan kunci API yang mungkin terungkap dalam kode. TurrtleHog adalah alat yang dirancang khusus untuk mendeteksi kebocoran tersebut dengan cepat dan efisien. Artikel ini akan membahas bagaimana TurrtleHog dapat membantu mengamankan pipeline DevSecOps kita melalui secret scanning yang menyeluruh.

Tools

Ada 2 hal yang akan dibahas yaitu tentan cara scan di local dan juga mengintegrasikanya kedalam Pipeline Jenkins berikut ini tahapanya :

1. Install Truffelhog on Local & Test Run

Install terlebih dahulu, untuk sourcenya dari link berikut trufflehog , dan kemudian kita bisa melakukan scanning langsung ke Repository git atau ke directory Local.

  • Repository scan

trufflehog git https://github.com/gunawan-d/nodejs-goof

  • Scan local

trufflehog filesystem .

  • Scan local with excluded path , yang dimana cara kerjanya mirip dengan gitignore karena kita tidak boleh melakukan scanning ke arah file yang sudah di exclude tersebut


trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt

2. Pre-Commit Hook

Pre-commit kita lakukan ketika kita akan melakukan commit & push, akan tetapi yang di scan adalah code yang baru dibuat / ditambah.

  • Tambahkan script bash beriut ini

nano .git/hooks/pre-commit

#!/bin/sh
echo
exec bash -c 'trufflehog git file://. --since-commit HEAD --fail'
exit

chmod +x .git/hooks/pre-commit

3. Integration to Pipeline

Untuk tahap ini saya akan mencobanya menggunakan Jenkins dan silahkan dibaca terlebih dahulu artikel sebelumnya, disini fungsi di integrasikanya ke pipeline supaya keamananya double, sebelum commit & setelah push

  • Create Jenkinsfile
pipeline {
    agent any
    environment {
        DOCKERHUB_CREDENTIALS = credentials('DockerLogin')
        SNYK_TOKEN = credentials('snyk-api-token')
        SONARQUBE_CREDENTIALS_PSW = credentials('SONARQUBE_CREDENTIALS_PSW')
    }
    stages {
        stage('Checkout Code') {
            steps {
                checkout scm
            }
        }
        stage('Secret Scanning Using Trufflehog'){
            agent {
                docker {
                    image 'trufflesecurity/trufflehog:latest'
                    args '--entrypoint='
                }
            }
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh 'trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt --fail --json --no-update > trufflehog-scan-result.json'
                }
                // sh 'trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt --fail --json --no-update > trufflehog-scan-result.json'
                sh 'cat trufflehog-scan-result.json'
                archiveArtifacts artifacts: 'trufflehog-scan-result.json'
            }
    	}
}
  • Commit & Push , kemudian setup terlebih dahulu untuk repo yang akan ditambahkan contoh sebagai berikut
  • Tunggu kurang lebih 1 menit makan pipeline akan berjalan

Kita lihat bahwa hasil pipeline mengeluarkan log dalam sebuah artifacts dari hasil scanner secret menemukan bahwa adanya secret yang terbuka.

Leave a Reply

Your email address will not be published. Required fields are marked *