Le pipeline CI/CD (Continuous Integration/Continuous Delivery) automatizzate vengono utilizzate per accelerare lo sviluppo. È fantastico avere trigger o pianificazione che prendano il tuo codice, lo uniscano, lo costruiscano, lo testino e lo spediscano automaticamente. Tuttavia, essendo stati costruiti per essere veloci e facili da usare, significa che la maggior parte delle pipeline non sono intrinsecamente costruite pensando alla sicurezza. Poiché le pipeline di solito devono avere accesso a Internet per scaricare le dipendenze e ai vari segreti da caricare nell'ambiente di produzione, significa che una volta compromessa tale pipeline, l'aggressore ha una vasta gamma di opzioni per interrompere le operazioni o esfiltrare informazioni o segreti.
Tutte le storie presentate in questo articolo descrivono violazioni nei principali strumenti CI/CD. Il fatto che la maggior parte delle aziende si affidi a tali strumenti significa che, come molti altri attacchi alla catena di fornitura del software, tutto ciò di cui i malintenzionati hanno bisogno è violare un singolo bersaglio per ottenere un vasto raggio di esplosione.
Diamo un'occhiata ad alcune storie importanti degli ultimi anni che dimostrano le vulnerabilità inerenti a questo vettore di attacco. Alla fine dell'articolo, mi assicurerò di offrire i miei consigli per rafforzare e proteggere le tue condutture, indipendentemente dagli strumenti che stai utilizzando.
La violazione di CircleCI
Nel gennaio 2023, CircleCI, una piattaforma di integrazione e distribuzione continua, ha rivelato a violazione della sicurezza che ha consentito a un utente malintenzionato di ottenere un accesso non autorizzato all'infrastruttura dell'azienda. L'attacco è partito da un'e-mail di phishing che ha indotto con l'inganno un dipendente a condividere le proprie credenziali, che l'aggressore ha poi utilizzato per accedere ai sistemi dell'azienda. Il dipendente stava utilizzando 2FA, ma l'aggressore è riuscito a impossessarsi di un cookie di sessione una volta che il dipendente aveva già effettuato l'accesso al sistema, consentendogli di impersonare il dipendente ed eventualmente aumentare l'accesso a un sottoinsieme dei sistemi di produzione di CircleCI.
L'aggressore ha avuto accesso ad alcuni dati dei clienti, inclusi nomi, indirizzi e-mail e informazioni di fatturazione. La società ha riferito che non è stato effettuato l'accesso a nessun codice o proprietà intellettuale e nessun cliente ha segnalato alcun accesso non autorizzato ai propri account o dati.
CircleCI ha risposto rapidamente alla violazione, conducendo un’indagine e collaborando con le forze dell’ordine e gli esperti di sicurezza informatica per identificare la portata dell’attacco e porre rimedio alle vulnerabilità che ne hanno consentito il verificarsi. L’azienda ha inoltre reimpostato tutte le credenziali di dipendenti e clienti e implementato ulteriori misure di sicurezza, come un maggiore monitoraggio dei propri sistemi.
DevOps interrotto: la violazione della sicurezza del CD Argo
Argo CD è un popolare strumento open source per la distribuzione continua di applicazioni nei cluster Kubernetes. Nel febbraio 2022, a è stata scoperta una nuova vulnerabilità nel CD Argo che consentiva agli utenti non autenticati di accedere a informazioni sensibili sulle applicazioni Kubernetes gestite dallo strumento. La vulnerabilità è stata causata da un'errata configurazione nel server API di Argo CD che consentiva agli utenti non autorizzati di eseguire richieste all'API e recuperare informazioni quali segreti, configurazioni e metadati dell'applicazione. Finché l'aggressore aveva il permesso di creare o aggiornare applicazioni e conosceva o poteva indovinare il percorso completo di un file contenente un YAML valido, poteva creare un grafico Helm dannoso e continuare a consumare file YAML come valori finché non trovava un interessante pezzo di dati che normalmente sarebbe inaccessibile.
Alla vulnerabilità è stato assegnato un punteggio CVSS di 7.5 (gravità elevata) e ha interessato tutte le versioni di Argo CD fino alla versione 2.1.4 inclusa. Argo CD ha rilasciato una patch per la vulnerabilità nella versione 2.1.5 e agli utenti è stato consigliato di eseguire l'aggiornamento a questa versione il prima possibile.
La vulnerabilità è stata ritenuta particolarmente preoccupante perché Argo CD viene spesso utilizzato per gestire applicazioni e infrastrutture critiche in ambienti di produzione. La fuga di informazioni sensibili avrebbe potuto consentire a un utente malintenzionato di accedere a dati sensibili o intraprendere altre azioni dannose che avrebbero potuto influire sulla disponibilità o sulla sicurezza delle applicazioni.
Scoprire la violazione di Codecove: lezioni apprese
Codecov è uno strumento di monitoraggio e analisi della copertura del codice utilizzato all'interno delle pipeline CI/CD che consente agli sviluppatori di misurare e analizzare l'efficacia dei propri test. Come pubblicato su Codecov's l'aggiornamento della protezione:
“Giovedì 1 aprile 2021 abbiamo appreso che qualcuno aveva avuto accesso non autorizzato al nostro Caricatore di Bash script e lo abbiamo modificato senza il nostro permesso. L'attore ha ottenuto l'accesso a causa di un errore nel processo di creazione dell'immagine Docker di Codecov che ha consentito all'attore di estrarre le credenziali necessarie per modificare il nostro script Bash Uploader."
Bash Uploader viene utilizzato dai clienti per caricare i propri report di copertura del codice sulla piattaforma Codecove. Con questo accesso, l'aggressore ha modificato lo script Bash Uploader aggiungendo codice dannoso che raccoglieva variabili di ambiente, token di autenticazione e altri dati sensibili dal sistema dell'utente durante il processo di caricamento. Questi dati sono stati poi inviati a un server remoto controllato dall'aggressore.
Secondo Codecove, la violazione ha colpito circa l’1% della sua base clienti, che comprendeva importanti aziende nei settori tecnologico, finanziario e sanitario. La società ha confermato che nessun codice cliente o report sulla copertura del codice è stato modificato durante la violazione, ma che i token di autenticazione dell'utente e altre informazioni sensibili potrebbero essere stati compromessi.
Codecove ha intrapreso azioni immediate per rimuovere il codice dannoso e avvisare i clienti interessati di reimpostare i propri token di autenticazione e adottare altre misure di sicurezza. La società ha inoltre avviato un’indagine sull’incidente e ha collaborato con le forze dell’ordine e gli esperti di sicurezza informatica per identificare la fonte dell’attacco.
Come puoi difendere la tua pipeline?
Come accennato in precedenza, le pipeline CI/CD sono progettate per la velocità e l'automazione, non necessariamente per la sicurezza. Il fatto che 3 aziende grandi e rispettate siano tutte cadute vittime di una sorta di attacco, esponendo potenzialmente le informazioni dei loro clienti, dimostra la vulnerabilità della tua pipeline e dei tuoi dati.
Indipendentemente dagli strumenti o dalla piattaforma CI/CD che stai utilizzando, puoi fare alcune cose per migliorare la tua sicurezza e ridurre i possibili danni nel caso in cui un utente malintenzionato riesca ad accedere alla tua pipeline o rete.
- Modellazione delle minacce – La modellazione delle minacce è un approccio strutturato per identificare potenziali minacce alla sicurezza di un sistema o di un'applicazione e progettare contromisure adeguate per mitigare tali minacce. Come esercizio, immagina che qualcuno abbia avuto accesso alla tua pipeline. A quali ambienti possono accedere ora? Quali segreti e chiavi possono vedere e utilizzare? Possono modificare il tuo codice? Test di influenza? Estrarre file dal Web o eseguire una shell inversa? Anche se pensi di aver ripulito la tua pipeline e di aver segmentato correttamente l'accesso alla rete, non fa male immaginare e poi controllare solo per essere consapevole dello scenario peggiore. Potresti rimanere sorpreso dai segreti e dalle opzioni di accesso nascosti in bella vista all'interno della piattaforma o degli strumenti della tua pipeline.
- Segmentazione della rete – La segmentazione della rete è la pratica di dividere una rete più grande in sottoreti o segmenti più piccoli e più sicuri, ciascuno con i propri controlli e policy di sicurezza. Lo scopo della segmentazione della rete è aumentare la sicurezza della rete complessiva limitando la portata di una potenziale violazione della sicurezza e riducendo al minimo il potenziale impatto di un attacco. Suddividere una rete in segmenti più piccoli limita il movimento laterale degli aggressori e riduce il rischio di accesso non autorizzato o perdita di dati.
Con la crescente popolarità degli attacchi di phishing, qualsiasi tuo sviluppatore o altro dipendente potrebbe cadere vittima di una simile truffa: siamo tutti umani. Supporre che le credenziali dei tuoi sviluppatori possano essere utilizzate da soggetti malintenzionati significa che devi assicurarti che la stragrande maggioranza degli sviluppatori non abbia il tipo di accesso che consentirebbe loro di esfiltrare da soli segreti, impiantare codice dannoso in un'immagine di produzione, o semplicemente promuovere incontrastata la propria versione di un codice di produzione. Assicurarsi che ogni individuo abbia il minimo accesso necessario per il proprio lavoro richiede molto tempo ed è forte la tentazione di concedere a tutti solo l'accesso amministrativo e di farla finita. Non lasciarti tentare dal lato oscuro: segui le regole di zero trust e privilegi minimi. - Monitoraggio e avvisi – In seguito all’ultimo punto, anche se hai istruito a fondo i tuoi sviluppatori affinché si stancassero del phishing e di altre truffe di ingegneria sociale, una violazione potrebbe comunque verificarsi. Non sai quando né come, ma dovresti essere almeno pronto a scoprirlo. Poiché la maggior parte degli ambienti pipeline sono effimeri, ciò significa che una volta terminato il lavoro, non è possibile trovare tracce di prove su ciò che è accaduto a meno che non si creino personalmente tali tracce.
Assicurati di registrare tutto ciò che accade nelle tue pipeline, su ogni PR, unione, creazione e test eseguito. Assicurati che vengano registrate anche le informazioni degli utenti, da rivedere nel caso in cui un problema richieda tale controllo. Dovrebbero essere registrate anche eventuali modifiche ai file di configurazione o all'ambiente stesso. L'obiettivo qui è quello di essere in grado di eseguire un'autopsia chiara su una violazione per poter dire cosa è successo e come. Determina in anticipo quali eventi dovrebbero giustificare un avviso e assicurati che le persone giuste ricevano tale avviso. Siate stanchi di non inondare le persone con allarmi inutili o falsi: ciò causerebbe un affaticamento degli allarmi che li porterebbe semplicemente a ignorare gli avvisi o a rispondere molto più tardi del previsto. Ovviamente, nessuno di questi log dovrebbe contenere segreti aperti o chiavi, il che porta al punto successivo:
- Gestione dei segreti – Assicurati di utilizzare uno strumento di gestione dei segreti di qualche tipo. Per lo meno renderebbe più semplice la rotazione dei segreti e delle password in caso di violazione. Dovrebbe anche svolgere il lavoro di oscuramento dei segreti aperti e delle chiavi di accesso trovate nella pipeline da qualsiasi registrazione effettuata sul sistema. In nessun caso qualcuno non autorizzato dovrebbe avere accesso a tali informazioni e non dovrebbe assolutamente essere in grado di modificarle.
La gestione dei segreti sta diventando sempre più importante poiché le organizzazioni si affidano sempre più a servizi basati su cloud, applicazioni containerizzate e altri ambienti distribuiti che richiedono la condivisione e la gestione sicura dei segreti tra diversi sistemi e applicazioni. - Utilizzare il principio RBAC combinato con il privilegio minimo – Il principio del controllo degli accessi basato sui ruoli (RBAC) consiste nel fornire l'accesso alle risorse di sistema in base al ruolo assegnato all'utente o alla funzione lavorativa all'interno di un'organizzazione. In RBAC, agli utenti vengono assegnati ruoli che definiscono le autorizzazioni e i diritti di accesso di cui dispongono a varie risorse di sistema, come file, cartelle o applicazioni. Il principio del privilegio minimo, invece, è la pratica di garantire agli utenti il livello minimo di accesso e privilegi necessari per svolgere le proprie funzioni lavorative. Ciò significa che gli utenti hanno accesso solo alle risorse di cui hanno bisogno per svolgere le loro attività specifiche e non altro. RBAC e Least Privilege vengono spesso utilizzati insieme come principi di sicurezza complementari. In RBAC, agli utenti vengono assegnati ruoli che hanno il livello appropriato di accesso alle risorse di cui hanno bisogno per svolgere le loro funzioni lavorative, e il principio del privilegio minimo garantisce che gli utenti abbiano accesso solo al livello minimo di risorse necessarie per svolgere le loro attività specifiche. Insieme, questi principi aiutano a mantenere un sistema sicuro e ben gestito con un rischio minimo di accesso non autorizzato o violazione dei dati. Come ulteriore misura di sicurezza, puoi impostarlo in modo che le azioni critiche nel sistema richiedano più autorizzazioni utente per essere eseguite. Questo approccio dovrebbe essere adottato con cautela poiché può potenzialmente rallentare in modo significativo il lavoro di sviluppo. Tuttavia, per gli aggiornamenti critici, come l'eliminazione di un ramo principale o la modifica di un elenco di dipendenze, è necessario fare in modo che almeno due persone con accesso appropriato debbano approvarlo.
Guardando avanti
Nessuno smetterà di utilizzare CI/CD e altri strumenti di automazione per accelerare il proprio lavoro. Viviamo in un mondo in cui ci impegniamo costantemente per aggiornamenti del codice sempre più rapidi. Dobbiamo solo assicurarci di farlo nel rispetto della sicurezza e di non compromettere il nostro codice e l'ambiente di produzione lungo il percorso.
Una delle cose più importanti che puoi fare è riflettere su cosa potrebbe accadere se persone non autorizzate riuscissero ad accedere. Una volta che sarai consapevole del pericolo e dei diversi punti vulnerabili delle tue condutture e della tua rete, confido che sarai in grado di prendere le misure giuste per tappare le potenziali perdite.
Scribe è una società di sicurezza della catena di fornitura di software la cui piattaforma è progettata per offrirti trasparenza su ciò che avviene nel processo e nella pipeline di sviluppo. Per saperne di più su come Scribe può aiutarti a proteggere le tue pipeline CONTATTACI.
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ù.