Secret Gate
Un gate di rilascio che conosce i tuoi segreti reali: nulla viene pubblicato finché non non trova nulla.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

Cosa fa
Secret Gate risponde a una domanda prima che qualsiasi cosa lasci le tue mani, che si tratti di uno zip di release, di una copia per il cliente, di un push open source o del prossimo commit: contiene un mio segreto? Sa quali sono i tuoi segreti, perché legge i file in cui risiedono, e non ne mostra mai uno: un risultato indica il file, la riga e da dove proviene il valore.
- I tuoi valori esatti. Ogni valore nei tuoi file env, nelle configurazioni JSON e YAML, nei file
.netrce nelle chiavi, cercato così com'è scritto, in base64 e URL-encoded. Una password che sembra una parola comune, o un token interno senza prefisso noto, viene rilevata come tutte le altre. - Segreti da macchine su cui non gira. Crea le impronte sul tuo laptop; il server di build trova quei valori senza mai possederli.
- Altre macchine verificano rispetto ai propri segreti. I file vengono inviati a ogni macchina via SSH, scansionati lì ed eliminati. I segreti non si spostano mai, e una macchina che non può rispondere blocca la release.
- Anche forme, nomi e rumore. 25 formati di token, i tuoi nomi, host, domini e ID account, indirizzi IP privati, indirizzi email personali, numeri di telefono, IBAN, percorsi delle cartelle home e stringhe casuali accanto a nomi che sembrano segreti.
- Si dimostra affidabile ogni volta. Ogni scansione inizia piantando canary di ogni tipo; se un controllo manca la sua canary, la scansione non viene eseguita.
- Dove lavori già. Cartelle, archivi zip e tar, un hook git pre-commit o pre-push, exit code per la CI, un report JSON.
Testato su ciò che spediamo
- Ogni kit che vendiamo: gli 8 archivi rilasciati scansionati rispetto ai 133 valori segreti sulla nostra macchina di build e alle 16.259 impronte dal nostro laptop. Tutti passati, in 5,4 secondi totali.
- Un segreto reale piantato in una copia di release è stato rilevato in chiaro e in base64, ogni volta nominato dal file da cui proveniva. Il valore non è apparso da nessuna parte nell'output o nel report.
- Una scansione remota via SSH ha verificato una release rispetto ai 499 valori segreti di una seconda macchina in 1,4 secondi, e ha rilevato un token piantato in una copia che esisteva solo su quella macchina.
Cosa c'è dentro
Il gate
I quattro controlli, l'autotest, la scansione di archivi e git-staged, un report leggibile e uno JSON.
Impronte
Impronte dei segreti di una macchina, per una scansione su un'altra, senza i valori.
Scansioni remote
Gli stessi file controllati su ogni macchina che contiene segreti, con le regole del tuo progetto inviate insieme.
Configurazione e CI
Un rilevatore per i tuoi file di segreti, git hooks e un workflow di GitHub Actions per gli archivi di rilascio.
Requisiti
- Linux o macOS con Python 3.9 o versioni successive; nulla da installare da pip.
- Git per gli hooks, SSH per le scansioni remote.
Da sapere
- Legge i file così come sono ora. Un segreto già presente nella cronologia di git resta lì: ruotalo.
- Gli archivi all'interno di una cartella scansionata non vengono aperti; scansiona ogni archivio.
- Mantieni i file di fingerprint privati quanto i segreti: contengono i primi 4 caratteri di ogni valore di 16 caratteri o più.
Domande
In cosa è diverso da gitleaks o TruffleHog?
Questi cercano ciò che i segreti di solito sembrano, e sono bravi a farlo. Secret Gate sa anche quali sono i tuoi segreti reali: legge i tuoi file di segreti e cerca quei valori esatti, così viene intercettato anche una password di database o un token interno senza una forma riconoscibile. È costruito per un momento preciso, prima che qualcosa venga rilasciato, e fallisce in modo sicuro (fail closed).
Invia i miei segreti da qualche parte?
No. I valori vengono letti dai tuoi file in memoria per la scansione e mai stampati, scritti o inviati; un file di fingerprint, se ne crei uno, contiene un hash e i primi 4 caratteri di ciascuno. Le scansioni remote inviano i file che stai per rilasciare alla tua macchina; i segreti di quella macchina restano su di essa.
E i falsi allarmi?
Un rilevamento significa "controlla questo". Se è tutto a posto, aggiungi una regola di consenso ristretta per quel tipo di rilevamento nella configurazione del progetto, ad esempio il tuo indirizzo di supporto. Non c'è un interruttore che disattiva un controllo.
Può scansionare la mia cronologia di git?
No. Controlla ciò che stai per rilasciare: una cartella, un archivio o il prossimo commit. Per un segreto già presente nella cronologia, ruota il segreto.
Aggiornato: