
Strumento di Enumerazione e Attacco per Pipeline GitHub Actions
[!WARNING]
Questo repository è deprecato e archiviato
Gato è stato sostituito da Trajan, lo strumento multi-piattaforma di Praetorian per il rilevamento delle vulnerabilità CI/CD e l'automazione degli attacchi. Trajan consolida le capacità di attacco CI/CD di GitHub Actions (Gato) e GitLab (Glato) in un unico progetto mantenuto attivamente.
Per favore migra a Trajan: https://github.com/praetorian-inc/trajan
Non verranno effettuati ulteriori aggiornamenti, correzioni di bug o patch di sicurezza a questo repository.
Gato, o GitHub Attack Toolkit, è uno strumento di enumerazione e attacco che consente sia ai blue team che ai professionisti della sicurezza offensiva di identificare e sfruttare le vulnerabilità delle pipeline all'interno dei repository pubblici e privati di un'organizzazione GitHub.
Lo strumento dispone di funzionalità post-exploitation per sfruttare un token di accesso personale compromesso, oltre a funzionalità di enumerazione per identificare vulnerabilità di esecuzione della pipeline avvelenata e segreti negli artefatti delle azioni nei repository pubblici.
GitHub raccomanda che i runner self-hosted siano utilizzati solo per repository privati, tuttavia ci sono migliaia di organizzazioni che utilizzano runner self-hosted. Le configurazioni predefinite sono spesso vulnerabili e Gato utilizza una combinazione di analisi dei file di workflow e dei log di esecuzione per identificare repository potenzialmente vulnerabili su larga scala.
La versione 1.7 di Gato introduce lo Scanner di Segreti negli Artefatti delle Azioni.
Lo Scanner di Segreti negli Artefatti delle Azioni enumera gli artefatti dei workflow di GitHub Actions alla ricerca di segreti. I ricercatori di Praetorian hanno utilizzato lo scanner per identificare vulnerabilità critiche in diversi importanti progetti open-source. I dettagli di queste vulnerabilità saranno rilasciati una volta completati i processi di divulgazione. Questo lavoro è stato inizialmente ispirato dalla ricerca di Palo Alto Networks.
Lo Scanner di Segreti negli Artefatti delle Azioni esegue le seguenti operazioni:
NoseyParker deve essere installato nel $PATH del sistema che esegue lo Scanner di Segreti negli Artefatti delle Azioni.
I segreti negli artefatti dei workflow pubblici possono contenere molti falsi positivi. Per impostazione predefinita, lo Scanner di Segreti negli Artefatti delle Azioni esclude regole e risultati associati a falsi positivi comuni. Per includere tutti i risultati della scansione dei segreti, puoi utilizzare il flag --include_all_artifact_secrets.
Ecco un comando di esempio che esegue lo Scanner di Segreti negli Artefatti delle Azioni su un elenco di organizzazioni GitHub, disabilita l'enumerazione dei runner self-hosted, include tutti i risultati dei segreti negli artefatti e produce l'output in un file JSON.
gato e --enum_wf_artifacts --include_all_artifact_secrets --skip_sh_runner_enum -O testorgs.txt -oJ testorgoutput.json
Per impostazione predefinita, lo Scanner di Segreti negli Artefatti delle Azioni impone le seguenti limitazioni per ridurre il tempo speso su un singolo repository:
Questi vincoli sono stati ottimizzati in modo che lo Scanner di Segreti negli Artefatti delle Azioni possa scansionare le prime 200 organizzazioni GitHub entro 48 ore. Se desideri modificare questi vincoli, puoi aggiornarli nella funzione scan_wf_artifacts() di gato/enumerate/repository.py.
Gato supporta OS X e Linux con almeno Python 3.7.
Per installare lo strumento, basta clonare il repository e usare pip install. Raccomandiamo di farlo all'interno di un ambiente virtuale.
git clone https://github.com/praetorian-inc/gato
cd gato
python3 -m venv venv
source venv/bin/activate
pip install .
Gato richiede anche che git versione 2.27 o superiore sia installato e presente nel PATH di sistema. Per eseguire il modulo di attacco fork PR, sed deve essere installato e presente nel PATH di sistema.
Manteniamo un ramo di sviluppo che contiene funzionalità più recenti di Gato non ancora aggiunte al ramo principale. C'è una maggiore probabilità di incontrare bug; tuttavia, eseguiamo comunque la nostra suite di test di integrazione sul ramo dev, quindi non dovrebbero esserci bug palesi.
Se vuoi usare il ramo dev, basta passare ad esso prima di eseguire pip install - tutto qui!
Se incontri bug per il tuo caso d'uso specifico, sentiti libero di aprire un issue!
Dopo aver installato lo strumento, può essere lanciato eseguendo gato o praetorian-gato.
Raccomandiamo di visualizzare i parametri per lo strumento base usando gato -h, e i parametri per ciascun modulo dello strumento eseguendo quanto segue:
gato search -hgato enum -hgato attack -hLo strumento richiede un token di accesso personale classico di GitHub o un token di installazione dell'app per funzionare. Per crearne uno, accedi a GitHub e vai su GitHub Developer Settings e seleziona Generate New Token e poi Generate new token (classic).
Dopo aver creato questo token, imposta la variabile d'ambiente GH_TOKEN nella tua shell eseguendo export GH_TOKEN=<IL_TUO_TOKEN_CREATO>. In alternativa, conserva il token in un gestore di password sicuro e inseriscilo quando l'applicazione te lo richiede.