Nel contesto moderno dello sviluppo software, l’automazione tramite pipeline CI/CD è diventata uno standard. Ma con l’aumento della velocità arriva anche un aumento del rischio, specialmente per quanto riguarda la sicurezza delle API key e di altri secret sensibili.
In questo articolo vedremo come si verificano i leak di credenziali nelle pipeline DevOps e le best practice per proteggersi, con esempi reali e consigli pratici.
Un API key leak si verifica quando una credenziale sensibile viene esposta accidentalmente in un contesto non sicuro: log, file di configurazione, commit, o artefatti di build.
Nel contesto di CI/CD (Continuous Integration / Continuous Deployment), questi leak sono spesso il risultato di pipeline mal configurate, in cui variabili d’ambiente o file contenenti secret non sono gestiti correttamente.
Un errore comune è stampare direttamente le variabili nei log della pipeline:
- name: Stampare variabile (NON SICURO)
run: echo "API_KEY=${{ secrets.API_KEY }}"
Questi log possono essere accessibili pubblicamente o conservati troppo a lungo, diventando un rischio.
Molti leak avvengono per colpa di commit contenenti:
.env
config.js
secrets.yaml
Anche con .gitignore
, errori umani o git add -f
possono forzare l’aggiunta di file pericolosi.
File generati (es. .zip
, .tar.gz
, container Docker) possono contenere:
Token embedded
Configurazioni errate
Log con secret esposti
Un attacker che scarica questi file può facilmente estrarre le chiavi.
È frequente generare token con permessi amministrativi usati nelle pipeline per comodità. Ma se quel token viene compromesso, un attacker può:
Modificare il codice
Accedere a sistemi cloud
Creare ulteriori backdoor
Sistemi come GitHub Actions o GitLab CI permettono di marcare i secret come "masked" per evitare che vengano stampati nei log.
Esempi:
GitHub Actions Secrets
AWS Secrets Manager
Doppler
Azure Key Vault
Evita di salvare i secret direttamente nel repository o in chiaro nei file .yaml
.
Strumenti consigliati:
Integra questi tool direttamente nel flusso CI per scansionare ogni push.
Stabilisci policy per ruotare le chiavi periodicamente, come parte del ciclo di sicurezza.
Applica il principio del minimo privilegio:
Un secret per ogni scopo
Scope limitati
Nessun permesso superfluo
Nel 2024, una chiave AWS venne esposta nel log di una GitHub Actions. In meno di 12 ore, un bot automatico ha usato la chiave per lanciare istanze EC2 e minare criptovalute, generando oltre 300€ di spese cloud.
Questi attacchi sono spesso automatizzati: i bot monitorano in tempo reale le piattaforme pubbliche come GitHub per cercare secret esposti.
Mai stampare secret nei log
Usa strumenti di secret management
Scansiona ogni commit per secret esposti
Limita i permessi dei token
Ruota i secret periodicamente
Pulisci gli artifact e le build pubbliche
I secret leak tramite CI/CD sono tra le vulnerabilità più subdole perché non dipendono da un bug nel codice, ma da cattive pratiche operative. Investire nella sicurezza delle pipeline è fondamentale per proteggere le applicazioni moderne.