Il mese scorso mi sono imbattuto Questo articolo da Lettura Oscura. Sembrava molto familiare. Non mi ci è voluto molto per capire che la vulnerabilità di avvelenamento degli artefatti del cross-workflow di GitHub discussa nell'articolo aveva una sorprendente somiglianza con il cross-workflow di GitHub. avvelenamento della cache vulnerabilità segnalata a marzo 2022.
Flussi di lavoro GitHub: un componente chiave delle pipeline CI/CD GitHub
I flussi di lavoro GitHub vengono utilizzati per definire le azioni specifiche da intraprendere come parte della pipeline CI/CD. Sono processi automatizzati che possono essere attivati da eventi specifici in un repository GitHub. Tali eventi, ad esempio, si verificano quando il codice viene inviato al repository, quando una richiesta pull viene aperta o chiusa o quando viene pubblicata una nuova versione.
I flussi di lavoro vengono creati utilizzando un file YAML, che specifica le azioni da intraprendere quando viene attivato il flusso di lavoro. Tali azioni possono essere scritte dallo sviluppatore o prese interamente dal marketplace di GitHub dove è possibile scaricare e utilizzare più di 10,000 azioni predefinite.
I flussi di lavoro sono costituiti da uno o più lavori, definiti come una serie di passaggi. I passaggi possono essere costituiti da una serie di azioni, ad esempio l'esecuzione di test, la distribuzione di codice o la pubblicazione di un pacchetto.
I flussi di lavoro GitHub sono un potente strumento che può aiutare gli sviluppatori ad automatizzare e semplificare i propri flussi di lavoro, risparmiando tempo e fatica e migliorando l'affidabilità del processo di sviluppo software, ma non sono esenti da difetti incorporati.
Esistono diversi potenziali problemi di sicurezza che possono sorgere quando si utilizzano i flussi di lavoro GitHub. Eccone alcuni comuni:
- Accesso non autorizzato: i flussi di lavoro che non sono configurati o protetti correttamente potrebbero essere potenzialmente accessibili e attivati da utenti non autorizzati. Ciò potrebbe consentire loro di eseguire codice arbitrario o eseguire altre azioni non autorizzate.
- Perdita di segreti: i flussi di lavoro spesso richiedono l'uso di segreti, come chiavi API o password, per accedere a risorse esterne o eseguire determinate azioni. Se questi segreti non sono adeguatamente protetti, potrebbero potenzialmente essere divulgati, causando violazioni della sicurezza.
- Dipendenza insicuras: i flussi di lavoro che si basano su librerie o dipendenze esterne potrebbero essere potenzialmente vulnerabili agli attacchi se tali dipendenze non sono sicure. È importante rivedere e aggiornare regolarmente le dipendenze per garantire che siano sicure.
- Mancanza di convalida e sanificazione degli input: i flussi di lavoro che non convalidano correttamente l'input potrebbero essere potenzialmente sfruttati per eseguire codice arbitrario o eseguire altre azioni non autorizzate.
Diamo uno sguardo più da vicino alle due vulnerabilità del flusso di lavoro incrociato discusse negli articoli sopra menzionati.
Avvelenamento da artefatti tra flussi di lavoro incrociati
Gli artefatti del flusso di lavoro GitHub sono i prodotti del lavoro svolto nelle pipeline CI/CD. Di solito, ogni flusso di lavoro riceve il proprio bucket per l'archiviazione di tali artefatti, ma a volte i flussi di lavoro devono accedere agli artefatti creati da altri flussi di lavoro. GitHub non consente ai flussi di lavoro di accedere direttamente ad archiviazione/artefatti da flussi di lavoro diversi. Per aggirare questo problema esiste un'API approvata da GitHub che consente di scaricare artefatti in base al filtro di base. Il problema è che l'API non distingue tra gli artefatti caricati dai repository biforcati e quelli caricati dai repository di base. Ciò significa che caricare artefatti potenzialmente avvelenati creati da repository biforcati è un pericolo reale e presente.
Per risolvere questo problema, GitHub ha iniziato a fornire informazioni aggiuntive, nonché metadati degli artefatti durante il download degli artefatti. Queste informazioni sono progettate per aiutare l'autore ad assicurarsi che stia scaricando l'artefatto corretto. Il problema di base degli artefatti del flusso di lavoro incrociato non è considerato un problema da GitHub in questo momento. Per saperne di più su questo problema, consulta il articolo menzionato sopra.
Avvelenamento della cache tra flussi di lavoro incrociati
GitHub consente la memorizzazione nella cache di artefatti e pacchetti per accelerare la pipeline CI/CD. Invece di scaricare ripetutamente gli artefatti e i pacchetti necessari per ogni flusso di lavoro in cui potrebbero essere necessari, possono essere memorizzati nella cache e utilizzati in flussi di lavoro diversi.
Poiché la cache è condivisa tra flussi di lavoro, è sufficiente una singola violazione in un flusso di lavoro utilizzando la cache con l'autorizzazione per modificarla e tale cache può essere avvelenata per tutti gli usi successivi del flusso di lavoro. Poiché la cache viene aggiornata solo quando c'è un nuovo artefatto o pacchetto da scaricare, ciò significa che una singola cache avvelenata potrebbe rimanere attiva per molto tempo, influenzando innumerevoli iterazioni di build software eseguite in quella pipeline.
GitHub non considera un problema il problema di una cache potenzialmente avvelenata. La cache è una funzionalità utile e la sua capacità di essere condivisa tra flussi di lavoro non è considerata un bug o un vero e proprio problema di sicurezza al momento. Per saperne di più su questo problema, consulta il articolo menzionato sopra.
Altre vulnerabilità di GitHub meno conosciute e come difendersi da esse
GitHub è uno dei sistemi di gestione del controllo del codice sorgente (SCM) più popolari al mondo. In quanto tale, è ampiamente utilizzato anche per creare e distribuire software utilizzando la pipeline, le azioni e i flussi di lavoro CI/CD.
Le persone devono ricordare che GitHub è stato creato per facilitare la condivisione del codice e lo sviluppo congiunto. È stato originariamente progettato per sviluppatori open source e le funzionalità di account aziendali e organizzativi sono state aggiunte successivamente. Fondamentalmente, la sicurezza non era una delle principali preoccupazioni del sistema. Il fatto che tu debba fare a allestimento speciale su GitHub per abilitare le funzionalità di sicurezza sul tuo account significa che l'idea che utilizzando Git sei intrinsecamente più sicuro è solo un'illusione.
Alla fine di questo mese, Scribe ospiterà Tzachi Zornstain, Responsabile della catena di fornitura del software presso Checkmarx in un webinar per parlare di alcune di queste potenziali insidie della catena di fornitura del software in GitHub.
Se vuoi saperne di più su questa classe di vulnerabilità meno conosciuta e su come difenderti da esse, ascolta questo video on-demand seminario web.
Questo contenuto è offerto da Scribe Security, un fornitore leader di soluzioni di sicurezza end-to-end per la catena di fornitura di software, che offre sicurezza all'avanguardia per artefatti di codice e processi di sviluppo e distribuzione del codice attraverso le catene di fornitura di software. Per saperne di più.