Man mano che le organizzazioni si muovono verso la protezione dei propri dati, devono affrontare e risolvere diverse problematiche. La più critica di queste è l'esposizione di dati sensibili come chiavi API, password o token. Per risolvere questo problema, le organizzazioni utilizzano la scansione dei segreti per individuare i segreti esposti. Ma cos'è la scansione dei segreti? Si tratta di un processo che consente di individuare dati sensibili in luoghi quali codici di base, file di configurazione o strumenti di collaborazione come Jira, Confluence, ecc.
La percentuale di rischio di segreti esposti aumenta in modo esponenziale con la crescente complessità delle applicazioni software. La scansione dei segreti diventa di fondamentale importanza perché la fuga di password o di chiavi API può causare ingenti perdite finanziarie alle organizzazioni, in quanto può portare a violazioni dei dati e accessi non autorizzati. Questo blog vi guiderà attraverso la conoscenza completa della scansione dei segreti e della sua importanza nel panorama della sicurezza informatica. Esploreremo le migliori pratiche per garantire una solida posizione di sicurezza attraverso la gestione dei segreti.
Comprendere i segreti
Comprendiamo il ruolo dei segreti nella sicurezza delle applicazioni e dei sistemi nello sviluppo del software.
Cosa sono i segreti?
Per eseguire attività quali la configurazione di canali di comunicazione sicuri, l'identificazione degli utenti, la protezione dei dispositivi personali o l'ottenimento dell'accesso ai dati personali, è necessario avere accesso a credenziali riservate, chiamate segreti.
Esistono diversi tipi di segreti, tra cui chiavi API, token OAuth, chiavi SSH, stringhe di connessione al database e chiavi di crittografia.
Tipi di segreti comunemente presenti nei file di codice e di configurazione
I segreti possono essere presenti in diversi luoghi, come nel codice, nei ticket Jira o persino nei file di configurazione. Ecco alcuni tipi comuni di segreti e dove potrebbero trovarsi:
- Credenziali hardcoded: Per essere fedeli al concetto, se è facile, potrebbe essere sbagliato. L'hardcoding di segreti o credenziali nel codice è un modo conveniente per gli sviluppatori poiché li evita di scrivere configurazioni e codice extra, ma questo può rivelarsi disastroso per l'organizzazione. Se informazioni sensibili come password o token API vengono hardcoded direttamente nel codice sorgente dell'applicazione e il codice viene reso pubblico sul repository GitHub, gli aggressori possono estrarre tali credenziali e riutilizzarle.
- File di configurazione I file di configurazione sono un ottimo modo per conservare tutti i dati, come la chiave API, la password del database o qualsiasi altra informazione necessaria al funzionamento dell'applicazione, ma comportano lo stesso livello di rischio. Chiunque può accedere al file e trovare tutti i segreti o le informazioni sensibili in esso contenuti se il file non è conservato in modo privato o sicuro.
- Variabili d'ambiente L'uso delle variabili d'ambiente è un modo migliore e più adatto per memorizzare i segreti rispetto alle applicazioni locali. Tuttavia, anche queste possono portare all'esposizione se i log di runtime visualizzano tali informazioni.
- Strumenti di gestione dei segreti Molte organizzazioni utilizzano strumenti come HashiCorp Vault, AWS Secrets Manager o Azure KeyVault per crittografare e archiviare i propri segreti. Questi strumenti forniscono archiviazione sicura, crittografia e controlli di accesso per i segreti. Tuttavia, per utilizzare questi strumenti con la massima efficienza, è comunque necessario adottare pratiche di sicurezza corrette.
I rischi dei segreti esposti
Quando i segreti non sono protetti in modo adeguato, possono causare gravi conseguenze per le organizzazioni. È molto importante comprendere i rischi che si corrono se i propri segreti vengono resi pubblici.
Conseguenze della divulgazione dei segreti
- Accesso non autorizzato: Gli aggressori sono sempre alla ricerca di modi per sfruttare un sistema, e il modo più semplice per farlo è trovare i segreti trapelati dei sistemi e dei loro servizi. Ogni applicazione, database o servizio cloud è protetto da una chiave API o da una password che, se divulgata, può finire nelle mani sbagliate e consentire agli autori delle minacce di ottenere un accesso non autorizzato.
- Abuso dei servizi: In passato il mondo ha assistito a pericolosi attacchi DDOS, che consistono fondamentalmente nell'abuso di un servizio per interromperne il funzionamento e sovraccaricarlo, rendendolo così indisponibile o aumentando i costi operativi del fornitore. Ciò può accadere se la chiave API di quel servizio viene divulgata e gli aggressori ne ottengono l'accesso e ne abusano per richiedere costantemente un'API. Ciò può interrompere le operazioni quotidiane dell'organizzazione e danneggiarne anche la reputazione.
- Sanzioni normative: Se in qualche modo i segreti di un'organizzazione vengono compromessi in una violazione dei dati, questa può incorrere in problemi legali e dovrà pagare pesanti multe. Le aziende dovrebbero seguire le normative appropriate per garantire la sicurezza dei dati.
- Perdita della fiducia dei clienti: La fiducia dei clienti è ciò che mantiene in funzione l'organizzazione. Se in un'organizzazione si verificano violazioni dei dati, i clienti potrebbero perdere la loro fiducia, il che, a sua volta, causerebbe un calo delle vendite.
Come vengono divulgati i segreti
I segreti possono essere sfruttati in molti modi se finiscono nelle mani sbagliate (attori malintenzionati):
- Hardcoding: Gli sviluppatori scrivono i segreti nel codice sorgente, che può diventare visibile se il codice viene condiviso o reso pubblico.
- Configurazioni errate: Impostazioni errate o configurazioni errate, come i bucket di archiviazione cloud pubblici, possono causare la divulgazione involontaria dei segreti.
- Pratiche non sicure: gli sviluppatori possono anche commettere facilmente errori e condividere accidentalmente segreti nelle chat e negli strumenti di progetto, dimenticando di rimuovere ciò che non avrebbe dovuto essere condiviso in primo luogo.
- Complessità CI/CD: Le pipeline automatizzate di solito necessitano di segreti, che possono essere divulgati se non vengono gestiti correttamente nel processo di compilazione o distribuzione.
Come funzionano gli strumenti di scansione dei segreti?
Gli strumenti di scansione dei segreti sono realizzati per scansionare e individuare informazioni riservate nei repository di codice o in altre fonti di dati, tra cui password, chiavi API, token di accesso, ecc. Questi strumenti funzionano analizzando il testo o il codice e identificando modelli che assomigliano a formati segreti noti.
Il primo passo della scansione consiste nell'esplorare il codice o la fonte di dati di destinazione. Una volta fatto ciò, lo strumento esamina ogni file riga per riga e cerca determinati modelli. Per specificare questi modelli, che sono sequenze di caratteri che formano un modello di ricerca, vengono utilizzate molte espressioni regolari.
Gli algoritmi utilizzati dalla scansione dei segreti sono in genere il pattern matching e l'analisi dell'entropia. Il pattern matching confronta il testo (il valore di un segreto) con diversi pattern regex specifici per tipo.
I segreti generati in modo casuale (stringhe ad alta entropia) vengono rilevati con l'analisi dell'entropia. La casualità viene calcolata utilizzando la distribuzione dei caratteri e questa tecnica è considerata più sicura di altre in quanto garantisce l'imprevedibilità.
Limiti degli strumenti di scansione dei segreti
Gli strumenti di scansione dei segreti presentano diverse sfide. Una di queste è rappresentata dai falsi positivi, ovvero quando lo strumento rileva stringhe non segrete come segrete. Ciò può causare falsi allarmi e uno spreco di tempo e risorse.
Il limite successivo si verifica se il segreto è hardcoded e crittografato. Gli sviluppatori potrebbero persino suddividere i segreti in vari pezzi memorizzati in variabili separate o utilizzare trucchi di codifica che gli strumenti di scansione avrebbero difficoltà a individuare.
Scansione dei segreti in ambienti diversi
La scansione dei segreti è un'importante misura di sicurezza che dovrebbe funzionare negli strumenti moderni. Ogni strumento o piattaforma presenta le proprie sfide e richiede un approccio diverso per rilevare i segreti.
Sistemi di controllo delle versioni
- GitHub: Integrato in GitHub Sicurezza avanzata, la scansione dei segreti identifica i formati segreti noti come le chiavi di credenziali e può eseguire automaticamente la scansione dei repository.
- GitLab: GitLab offre Secret Detection come parte della sua pipeline CI/CD. È possibile impostare le pipeline in modo che vengano eseguite tramite l'interfaccia web su commit, richieste di merge o pipeline pianificate, il che offre una buona flessibilità in termini di quando e come eseguire queste scansioni.
- BitBucket: BitBucket si affida più o meno a prodotti come Nightfall o GitGuardian, che sono integrazioni di terze parti che monitorano continuamente i repository. Il vantaggio principale è che questi strumenti sono personalizzabili e adattabili alle esigenze specifiche e alle politiche di sicurezza della vostra organizzazione.
La parte più difficile dell'utilizzo dei segreti nei sistemi di controllo delle versioni è gestire la cronologia dei segreti. Dopo che un segreto è stato confermato e inviato, rimarrà comunque nella cronologia di quel repository anche se lo sviluppatore lo rimuove in un secondo momento.
Per risolvere questo problema, molte organizzazioni utilizzano la protezione push e gli hook pre-commit per eseguire la scansione dei segreti prima del commit, applicando così un controllo di sicurezza sui segreti.
Strumenti di collaborazione
Le piattaforme di collaborazione come Jira, Confluence e Slack presentano una serie di sfide separate. I segreti potrebbero essere trasmessi nelle descrizioni dei problemi, nei commenti o nelle pagine wiki, ecc. su Jira e Confluence. Per mantenere l'ambiente sicuro, alcune organizzazioni dispongono di API che consentono scansioni programmate dei contenuti per verificare la presenza di nuovi segreti.
I segreti potrebbero essere condivisi tramite chat/messaggi di gruppo o caricamento di file su Slack e piattaforme di messaggistica simili. Il problema più grande di queste piattaforme è il contenuto dinamico. Le informazioni cambiano costantemente ogni giorno, con nuovi post aggiunti, modificati o eliminati.
Come reagire alla scoperta di segreti?
Se un'organizzazione rileva segreti nel proprio codice, la prima azione da intraprendere è determinare la gravità della situazione. Scoprite il tipo di segreto che è trapelato (ad esempio una chiave API o una password) e il suo potenziale effetto sul vostro sistema. Rispondere a questa domanda rende più facile impostare il piano IR (incident response) e traccia anche una linea su quanto sia grave la situazione.
Quindi, adottate immediatamente misure per revocare o disabilitare il segreto esposto, bloccando così qualsiasi altro bypass non autorizzato. Revocate il vecchio segreto e rilasciatene uno nuovo. Questo processo è chiamato rotazione. Allo stesso tempo, controllate i vostri registri e sistemi per verificare la presenza di accessi non autorizzati o attività irregolari che potrebbero suggerire un abuso del segreto.
Infine, è necessario redigere un rapporto dettagliato sull'incidente che descriva come il segreto è stato divulgato e quali misure sono state adottate per risolvere il problema. Queste sono le informazioni da cui è possibile imparare e migliorare la gestione dei segreti.
Gestione dei falsi positivi e dei falsi negativi
I falsi positivi si verificano quando uno strumento segnala la presenza di un segreto nel codice, ma in realtà non ce n'è. I falsi negativi, invece, si verificano quando uno strumento non riesce a individuare un segreto effettivo. Si tratta di problemi che possono rendere meno efficaci gli strumenti di scansione dei segreti.
I falsi positivi fanno perdere tempo agli sviluppatori tempo degli sviluppatori con problemi inesistenti, mentre i falsi negativi aumentano le possibilità di essere hackerati a causa di problemi inosservati.
Le organizzazioni possono adottare alcune misure per ridurre al minimo questi problemi. L'accuratezza deve essere migliorata in diversi modi, tra cui l'aggiornamento regolare delle configurazioni e degli strumenti di scansione. L'apprendimento automatico aiuta a ridurre il tasso di falsi positivi poiché è in grado di apprendere dalle scansioni precedenti e migliorare il modo in cui viene effettuato il rilevamento. L'analisi contestuale, come la posizione del codice in uso, può aiutare ulteriormente a distinguere quali sono i segreti e quali non lo sono.
Formazione degli sviluppatori sulla gestione dei segreti
Istruite sempre gli sviluppatori su come scrivere codice sicuro senza esporre i loro segreti. Ciascuna di queste sessioni dovrebbe concentrarsi su aspetti essenziali come l'individuazione dei segreti, la conoscenza dei rischi legati alla loro esposizione e l'utilizzo delle migliori pratiche per la gestione delle password.
Lo stesso vale per la creazione di una cultura della consapevolezza della sicurezza all'interno dei team di sviluppo. A tal fine, i leader possono promuovere un ambiente favorevole a conversazioni sincere sulle abitudini e le esperienze in materia di sicurezza, oltre a fornire una formazione continua.
Quali sono le best practice per la gestione della scansione dei segreti?
Una gestione efficace della scansione dei segreti è fondamentale per mantenere la sicurezza delle informazioni sensibili di un'organizzazione. Ecco cinque best practice chiave che possono aiutarti a migliorare l'efficacia delle attività di scansione dei segreti:
1. Implementa una politica completa di scansione dei segreti
La politica di scansione dei segreti deve definire cosa si intende per segreto e specificare quali ambienti devono essere sottoposti a scansione e con quale frequenza devono essere eseguiti gli strumenti di scansione dei segreti. Dovrebbe delineare come gestire la scansione dei segreti all'interno dell'organizzazione, applicare le politiche relative a questa pratica e definire nuovi ruoli. La politica dovrebbe essere rivista e aggiornata per affrontare nuovi tipi di segreti o minacce.
2. Integrare la scansione dei segreti nel ciclo di vita dello sviluppo
Con la scansione dei segreti in fase iniziale, nonché la scansione in ogni fase del processo di sviluppo, le aziende non esporranno mai alcun segreto. Può assumere la forma di hook pre-commit nei sistemi di controllo delle versioni per intercettare i segreti prima del commit o della scansione dei segreti come parte delle pipeline CI/CD.
3. Assegnare priorità e gestire gli avvisi in modo efficace
Troppi avvisi provenienti dagli strumenti di scansione dei segreti possono causare affaticamento da avvisi se non gestiti correttamente. Utilizzate un sistema per classificare gli avvisi in base alla loro gravità e al loro potenziale impatto. Potreste convertire i segreti in categorie in base al loro livello di gravità e sensibilità. Utilizzate l'automazione per classificare gli avvisi e indirizzarli ai diversi team per la risoluzione. Gli avvisi in tempo reale garantiscono una risposta immediata alle esposizioni ad alto rischio ed eliminano il problema dei team di sicurezza sopraffatti dai dati.
4. Effettuare audit regolari e test di penetrazione
Oltre alla scansione automatizzata, dovrebbero essere supportati anche audit manuali e test di penetrazione che potrebbero evidenziare segreti che uno strumento automatizzato potrebbe trascurare. Possono anche garantire che le politiche di scansione dei segreti siano seguite in modo uniforme in tutta l'organizzazione effettuando audit manuali.
5. Fornire formazione e addestramento continui
La scansione dei segreti è efficace solo se tutti i dipendenti, in particolare quelli che lavorano nello sviluppo o nelle operazioni, sono consapevoli e collaborano. La maggior parte del personale che lavora con i segreti spesso non comprende la necessità di una buona gestione dei segreti né sa quanto possa essere grave la fuga delle proprie chiavi. La scansione dei segreti, la formazione sugli avvisi e i mezzi sicuri per condividere le informazioni sensibili dovrebbero far parte di questa formazione.
Guida al mercato CNAPP
La guida di mercato Gartner per le piattaforme di protezione delle applicazioni cloud-native fornisce informazioni chiave sullo stato del mercato delle CNAPP.
Leggi la guidaTendenze future nella scansione dei segreti
La scansione segreta si è evoluta rapidamente grazie ai progressi tecnologici e alla crescente complessità delle minacce alla sicurezza nel campo della sicurezza informatica. Cinque tendenze principali che potremmo vedere nel futuro della scansione segreta sono:
- Integrazione dell'intelligenza artificiale e dell'apprendimento automatico: se alimentati dal giusto insieme di algoritmi di IA e ML, gli strumenti di scansione segreta possono sicuramente ridurre i falsi positivi, trovare modelli segreti unici e adattarsi a nuovi segreti in modo più agile rispetto alle tecniche basate su regole. Possono anche utilizzare i dati storici per prevedere se i segreti sarebbero stati esposti.
- Pratiche di sicurezza shift-left: La scansione dei segreti e altre pratiche di sicurezza si stanno sempre più orientando verso un'integrazione precoce nel processo di sviluppo. Le aziende dovrebbero seguire l'approccio "shift-left" per rilevare fughe o gestioni errate dei segreti nel codice prima che questo venga implementato.
- Rimedio automatizzato: Oltre al rilevamento, gli strumenti esistenti possono essere migliorati in modo da consentire loro di intervenire automaticamente. Ciò significa, ad esempio, ruotare automaticamente le credenziali compromesse o negare temporaneamente l'accesso ai segreti compromessi, riducendo così il tempo che intercorre tra il rilevamento e la risoluzione.
Conclusione
Le organizzazioni attribuiscono ora grande importanza alla protezione di tutte le informazioni sensibili nell'era digitale. I segreti esposti possono portare ad accessi non autorizzati, violazioni dei dati e danni significativi alla reputazione. È molto importante capire come vengono esposti i segreti e gestirli in modo efficace.
Pratiche sicure come l'utilizzo di strumenti di gestione dei segreti quali HashiCorp Vault sono davvero importanti per mantenere i segreti al sicuro. Allo stesso modo, ciò favorisce anche una cultura della consapevolezza della sicurezza all'interno dei team di sviluppo per identificare e correggere facilmente i rischi legati ai segreti.
Concentrarsi sul trattamento dei segreti come un livello e formare continuamente i team sugli standard di codifica sicuri è il modo per rendere un'organizzazione più sicura. Con minacce sempre più sofisticate, l'adozione di una strategia proattiva di gestione dei segreti manterrà sicure le informazioni sensibili e preserverà la fiducia dei clienti e degli altri stakeholder.
"FAQs
Le chiavi API, le password e altre credenziali potrebbero essere hardcoded nel codice sorgente e nei file di configurazione, il che ne comporterebbe l'esposizione. Il processo di rilevamento di queste credenziali sensibili è chiamato scansione dei segreti. Le organizzazioni dovrebbero seguire le migliori pratiche per garantire che i segreti non vengano esposti involontariamente in repository pubblici, al fine di evitare violazioni dei dati e accessi non autorizzati.
La scansione dei segreti consiste principalmente in analisi statiche e dinamiche. Quando il codice viene scansionato a riposo per cercare segreti attraverso il pattern matching, si parla di analisi statica, mentre se gli strumenti identificano il segreto durante il runtime, si parla di analisi dinamica. Oggi, con il progresso dell'intelligenza artificiale nel settore della sicurezza informatica, osserviamo che esistono pochi strumenti che si avvalgono di algoritmi di apprendimento automatico per aumentare la precisione di rilevamento facendo riferimento alle scansioni precedenti, il che porta a un minor numero di falsi positivi.
Gli avvisi di scansione dei segreti vengono generati non appena gli strumenti rilevano la possibilità che dei segreti siano stati esposti. La responsabilità di rispondere a un avviso dovrebbe essere sia del team di sviluppo che di quello di sicurezza. Gli sviluppatori risolveranno il problema e il team di sicurezza fornirà loro consigli su come risolverlo e lo ricontrollerà una volta risolto.
Per utilizzare Git Secrets Scan, installa innanzitutto Git Secrets utilizzando gestori di pacchetti come Homebrew o scaricandolo dal repository ufficiale GitHub. Dopo l'installazione, inizializza Git Secrets eseguendo git secrets –install nel tuo repository per configurare gli hook che eseguono la scansione dei segreti al momento del commit. Puoi eseguire manualmente la scansione del tuo codice alla ricerca di eventuali segreti esposti utilizzando il comando git secrets –scan. Infine, esamina eventuali avvisi e intraprendi le azioni appropriate, come revocare i segreti esposti e sostituirli.
