Ricerca nel sito web

Gitleaks - Come controllare il repository git per i segreti


Memorizzi password non crittografate, segreti e altri tipi di dati indesiderati nei tuoi repository di codice sorgente git?. Gitleaks ti offre un modo per scansionare i tuoi repository Git alla ricerca di questi dati indesiderati che dovrebbero essere privati. Le scansioni possono essere automatizzate per adattarsi perfettamente al flusso di lavoro CI/CD per l'identificazione dei segreti prima che entrino più in profondità nella base di codice.

Funzionalità di Gitleaks

Alcune delle interessanti funzionalità di Gitleaks includono:

  • Supporto per scansioni di repository privati e di repository che richiedono l'autenticazione basata su chiave
  • Supporto per l'organizzazione in blocco Gitlab e le scansioni del repository del proprietario del repository (utente) e la scansione delle richieste pull per l'utilizzo nei flussi di lavoro CI comuni.
  • È possibile generare i risultati della scansione in JSON e CSV e in formati da utilizzare in altri strumenti e framework di reporting.
  • Configurazione esternalizzata per la personalizzazione specifica dell'ambiente, comprese le regole regex
  • Nome del repository personalizzabile, tipo di file, ID commit, nome ramo e whitelist regex per ridurre i falsi positivi
  • Prestazioni elevate grazie all'uso del framework go-git di src-d

Come installare Gitleaks su Linux

Gitleaks è scritto in Go e il file binario è disponibile per molte piattaforme e tipi di sistemi operativi più diffusi nella pagina delle versioni.

Scarica Gitleaks su Linux | Mac OS

Controlla l'ultima versione e salvala in una variabile come di seguito.

Per utenti Linux

curl -s  https://api.github.com/repos/zricethezav/gitleaks/releases/latest |grep browser_download_url  |  cut -d '"' -f 4  | grep '\linux-amd64$'| wget -i -

Per utenti macOS:

curl -s  https://api.github.com/repos/zricethezav/gitleaks/releases/latest |grep browser_download_url  |  cut -d '"' -f 4  | grep '\darwin-amd64$'| wget -i -

Se sei un utente Windows, scarica e installa il pacchetto gitleaks-windows-amd64.exe.

Installa Gitleaks su Linux | Mac OS

Una volta scaricato il file, forniscigli l'eseguibile bot e inseriscilo nella directory /usr/local/bin.

mv gitleaks-linux-amd64 gitleaks
chmod +x gitleaks
sudo mv gitleaks /usr/local/bin/

Per macOS:

mv gitleaks-darwin-amd64 /usr/local/bin/gitleaks
sudo chmod +x /usr/local/bin/gitleaks

Conferma di poter chiamare il comando gitleaks.

$ gitleaks --version
v8.17.0

Come utilizzare Gitleaks per controllare i repository Git

Gitleaks ha molti parametri sintonizzabili di cui in realtà non hai bisogno per l'utilizzo di base. La modalità predefinita dovrebbe funzionare con un singolo repository senza alcuna modifica.

$ gitleaks --repo-url=https://github.com/jmutai/dotfiles
 INFO[2019-02-13T15:55:43+03:00] cloning https://github.com/jmutai/dotfiles
 Enumerating objects: 42, done.
 Counting objects: 100% (42/42), done.
 Compressing objects: 100% (34/34), done.
 Total 2255 (delta 10), reused 26 (delta 8), pack-reused 2213
 INFO[2019-02-13T15:55:57+03:00] 0 leaks detected. 159 commits inspected in 13 seconds 389 milliseconds

Per visualizzare l'output dell'audit mentre gitleaks elabora il repository, usa i flag -v o --verbose che attiva la modalità verbose.

$ gitleaks --repo-url=https://github.com/gitleakstest/gronit -v
INFO[0000] cloning... https://github.com/gitleakstest/gronit
Enumerating objects: 135, done.
Total 135 (delta 0), reused 0 (delta 0), pack-reused 135
{
	"line": "const AWS_KEY = \"AKIALALEMEL33243OLIAE\"",
	"lineNumber": 15,
	"offender": "AKIALALEMEL33243OLIA",
	"offenderEntropy": -1,
	"commit": "cb5599aeed261b2c038aa4729e2d53ca050a4988",
	"repo": "gronit",
	"repoURL": "https://github.com/gitleakstest/gronit",
	"leakURL": "https://github.com/gitleakstest/gronit/blob/cb5599aeed261b2c038aa4729e2d53ca050a4988/main.go#L15",
	"rule": "AWS Access Key",
	"commitMessage": "fake key",
	"author": "Zachary Rice",
	"email": "[email ",
	"file": "main.go",
	"date": "2018-02-04T19:10:58-06:00",
	"tags": "key, AWS"
}
INFO[0000] scan time: 48 milliseconds 122 microseconds
INFO[0000] commits scanned: 33
WARN[0000] leaks found: 1

Per abilitare il threading, utilizza l'opzione --threads.

CPU=$(cat /proc/cpuinfo | grep -ic ^processor)
gitleaks --repo=https://github.com/jmutai/dotfiles --threads=$CPU

Questa opzione specifica il numero massimo di thread generati.

Esecuzione di Gitleaks in modalità Redact

--redact aiuterà a mostrare le righe contenenti i segreti senza registrare il contenuto.

$ gitleaks --repo-url=https://github.com/gitleakstest/gronit --redact
INFO[0000] cloning... https://github.com/gitleakstest/gronit
INFO[0000] scan time: 47 milliseconds 664 microseconds
INFO[0000] commits scanned: 33
WARN[0000] leaks found: 1

Salvataggio dei risultati dell'audit di Gitleaks su file

Puoi anche eseguire un controllo su una serie di repository e salvare i report per ciascun repository in un file. Per questo, usa l'opzione --report.

$ gitleaks --repo-url=https://github.com/jmutai/dotfiles --report=gitleaks_results.csv
INFO[0000] cloning... https://github.com/jmutai/dotfiles
INFO[0003] scan time: 2 seconds 774 milliseconds 597 microseconds
INFO[0003] commits scanned: 183
INFO[0003] No leaks found

Il report deve terminare con .csv o .json.

Scansiona la directory locale:

Se vuoi scansionare il contenuto corrente di un repository, ignorando del tutto git. Puoi usare l'opzione –no-git per farlo.

gitleaks --path=path/to/local/repo -v --no-git

Controlla la documentazione Git del progetto per configurazioni ed esempi più avanzati.

Articoli simili:

Come rimuovere file git, directory in .gitignore da un repository remoto

GitLab e Slack Integration per le notifiche

Come configurare l'autenticazione GitLab FreeIPA

Articoli correlati: