
Ah shhgit! Trova i segreti nel tuo codice. Rilevamento di segreti per i tuoi repository GitHub, GitLab e Bitbucket.
Divulgare accidentalmente segreti — nomi utente e password, token API o chiavi private — in un repository pubblico è l'incubo peggiore per sviluppatori e team di sicurezza. I criminali informatici scansionano costantemente i repository di codice pubblico per trovare questi segreti e ottenere un punto d'accesso nei sistemi. Il codice è più connesso che mai, quindi spesso questi segreti forniscono accesso a dati privati e sensibili — infrastrutture cloud, database server, gateway di pagamento e sistemi di archiviazione file, solo per citarne alcuni.
shhgit può scansionare costantemente i tuoi repository di codice per trovare e avvisarti di questi segreti.
Hai due opzioni. Raccomando la prima perché ti darà accesso all'interfaccia web live di shhgit. Usa la seconda opzione se vuoi solo l'interfaccia a riga di comando.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml (ad esempio aggiungendo i tuoi token GitHub)docker-compose upNota: questo metodo non include l'interfaccia web di shhgit
go get github.com/eth0izzle/shhgit scaricherà e compilerà automaticamente shhgit. Oppure puoi clonare questo repository ed eseguire go build -v -i.config.yaml e consulta l'uso qui sotto.shhgit può funzionare in due modi: consumando le API pubbliche di GitHub, Gist, GitLab e BitBucket oppure elaborando file in una directory locale.
Per impostazione predefinita, shhgit funzionerà nella prima 'modalità pubblica'. Per GitHub e Gist, dovrai ottenere e fornire un token di accesso (vedi questa guida; non richiede alcun ambito o permesso. E poi posizionalo sotto github_access_tokens in config.yaml). GitLab e BitBucket non richiedono token API.
Puoi anche rinunciare alle firme e usare shhgit con la tua query di ricerca personalizzata, ad esempio per trovare tutte le chiavi AWS potresti usare shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. E per eseguire in modalità locale (e magari integrarlo nelle tue pipeline CI), puoi passare il flag --local (vedi l'uso qui sotto).
--clone-repository-timeout
Tempo massimo per clonare un repository in secondi (default 10)
--config-path
Cerca config.yaml dalla directory specificata. Se non impostato, cerca di trovarlo dalla directory del binario shhgit e da quella corrente
--csv-path
Specifica un percorso se vuoi scrivere i segreti trovati in un CSV. Lascia vuoto per disabilitare
--debug
Stampa informazioni di debug
--entropy-threshold
Trova stringhe ad alta entropia nei file. Soglia più alta = segreti più sicuri, soglia più bassa = più falsi positivi. Imposta a 0 per disabilitare i controlli di entropia (default 5.0)
--local
Specifica una directory locale (percorso assoluto) da scansionare. Scansiona solo la directory data ricorsivamente. Non sono necessari token GitHub per l'esecuzione locale.
--maximum-file-size
Dimensione massima del file da elaborare in KB (default 512)
--maximum-repository-size
Dimensione massima del repository da scaricare ed elaborare in KB (default 5120)
--minimum-stars
Clona solo repository con questo numero di stelle o superiore. Imposta a 0 per ignorare il conteggio delle stelle (default 0)
--path-checks
Imposta a false per disabilitare il controllo delle firme dei nomi dei file/percorsi, cioè corrispondi solo ai pattern regex (default true)
--process-gists
Monitora e processa i Gist in tempo reale. Imposta a false per disabilitare (default true)
--search-query
Specifica una stringa di ricerca per ignorare le firme e filtrare i file contenenti questa stringa (compatibile con regex)
--silent
Sopprime tutto l'output tranne gli errori
--temp-directory
Directory per memorizzare repository/corrispondenze (default "%temp%\shhgit")
--threads
Numero di thread simultanei da utilizzare (default numero di CPU logiche)
Il file config.yaml ha 7 elementi. Un default è fornito.
github_access_tokens: # fornisci almeno un token
- 'token uno'
- 'token due'
webhook: '' # URL per un webhook POST.
webhook_payload: '' # Payload da POSTare all'URL del webhook
blacklisted_strings: [] # elenco di stringhe da ignorare
blacklisted_extensions: [] # elenco di estensioni da ignorare
blacklisted_paths: [] # elenco di percorsi da ignorare
blacklisted_entropy_extensions: [] # estensioni aggiuntive da ignorare per i controlli di entropia
signatures: # elenco di firme da controllare
- part: '' # filename, extension, path o contents
match: '' # semplice confronto testuale (se non c'è elemento regex)
regex: '' # pattern regex (se non c'è elemento match)
name: '' # nome della firma
shhgit viene fornito con 150 firme. Puoi rimuoverne o aggiungerne modificando il file config.yaml.