Comportamento di sicurezza dell'ambiente DevOps

Completato

Con un aumento degli attacchi informatici sui sistemi di gestione del codice sorgente e sulle pipeline di integrazione continua/recapito continuo, è fondamentale proteggere le piattaforme DevOps dalla vasta gamma di minacce identificate nella matrice di minacce DevOps è fondamentale. Tali attacchi informatici possono abilitare l'inserimento del codice, l'escalation dei privilegi e l'esfiltrazione dei dati, causando potenzialmente un impatto notevole.

La gestione del comportamento DevOps è una funzionalità di Microsoft Defender per il cloud che:

  • Fornisce informazioni dettagliate sul comportamento di sicurezza dell'intero ciclo di vita della catena di approvvigionamento del software.
  • Usa scanner avanzati per eseguire valutazioni approfondite.
  • Comprende varie risorse, dalle organizzazioni alle pipeline e repository.
  • Consente ai clienti di ridurre la superficie di attacco individuando e operando sulle raccomandazioni fornite.

Scanner DevOps

Per fornire risultati, la gestione della postura di DevOps usa gli scanner DevOps per identificare i punti deboli nella gestione del codice sorgente e nelle pipeline di integrazione continua/recapito continuo eseguendo controlli sulle configurazioni di sicurezza e sui controlli di accesso.

Gli scanner di Azure DevOps e GitHub vengono usati all'interno di Microsoft per identificare i rischi associati alle risorse DevOps, riducendo la superficie di attacco e potenziando i sistemi DevOps aziendali.

Una volta connesso un ambiente DevOps, Defender per il cloud configura automaticamente questi scanner per eseguire analisi ricorrenti ogni 24 ore tra più risorse DevOps, tra cui:

  • Compilazioni
  • File protetti
  • Gruppi di variabili
  • Connessioni al servizio
  • Organizzazioni
  • Repository

Riduzione del rischio della matrice di minacce DevOps

La gestione della postura di DevOps consente alle organizzazioni di individuare e correggere errori di configurazione dannosi nella piattaforma DevOps. Questo porta a un ambiente DevOps resiliente e a zero trust, che viene rafforzato contro una serie di minacce definite nella matrice di minacce DevOps. I principali controlli di gestione della postura includono:

  • Accesso segreto con ambito: Ridurre al minimo l'esposizione delle informazioni riservate e ridurre il rischio di accessi non autorizzati, perdite di dati e spostamenti laterali assicurando che ogni pipeline abbia accesso solo ai segreti essenziali per la sua funzione.
  • Restrizione di strumenti di esecuzione self-hosted e autorizzazioni elevate: previene le esecuzioni non autorizzate e le potenziali escalation evitando gli strumenti di esecuzione self-hosted e assicurando che le autorizzazioni della pipeline siano di sola lettura per impostazione predefinita.
  • Protezione avanzata dei rami: Mantenere l'integrità del codice applicando le regole di protezione dei rami e prevenendo inserimenti di codice dannosi.
  • Autorizzazioni ottimizzate e repository sicuri: Ridurre il rischio di accessi non autorizzati e di modifiche, rilevando le autorizzazioni di base minime e abilitando la protezione push dei segreti per i repository.

Matrice di minacce DevOps

Il nostro obiettivo nello sviluppo della matrice delle minacce per DevOps è quello di creare una base di conoscenze completa che Defender può usare per tenere traccia e creare difese contro tecniche di attacco pertinenti. Usando il framework MITRE ATT&CK come base, sono state raccolte tecniche e vettori di attacco associati agli ambienti DevOps e è stata creata una matrice dedicata ai metodi di attacco DevOps.

Vale la pena notare che le tattiche di questa matrice devono essere considerate dal punto di vista di DevOps. Ad esempio, le tecniche di esecuzione in una macchina virtuale che esegue il sistema operativo Windows o Linux sono diverse dall'esecuzione in una pipeline DevOps. Nel caso Linux, l'esecuzione significa eseguire il codice nel sistema operativo. Per ambienti DevOps si intende l'esecuzione del codice nella pipeline o nelle risorse DevOps. Oltre a usare questa matrice di minacce per classificare gli attacchi e i metodi di difesa corrispondenti, Defender può lavorare insieme ai team rossi per testare continuamente le ipotesi e trovare nuove potenziali tecniche di attacco.

MITRE ATT&CK definito

La matrice MITRE ATT&CK è una knowledge base accessibile pubblicamente che fornisce informazioni sulle varie tattiche e tecniche usate dagli utenti malintenzionati durante un attacco informatico.

La knowledge base è organizzata in diverse categorie: pre-attacco, accesso iniziale, esecuzione, persistenza, escalation dei privilegi, elusione della difesa, accesso con credenziali, individuazione, movimenti laterali, raccolta di informazioni, esfiltrazione e comando e controllo.

Le tattiche (T) rappresentano il "motivo" di una tecnica ATT&CK o di una tecnica secondaria. Si tratta dell'obiettivo tattico dell'autore dell'attacco: il motivo dell'esecuzione di un'azione. Ad esempio, l'autore dell'attacco vuole ottenere l'accesso con credenziali.

Le tecniche (T) rappresentano "come" l'autore di un attacco raggiunge un obiettivo tattico eseguendo un'azione. Ad esempio, l'autore dell'attacco cerca di prelevare le credenziali per ottenere l'accesso con credenziali.

Common Knowledge (CK) in ATT&CK indica le conoscenze comuni, in sostanza il modus operandi documentato delle tattiche e delle tecniche eseguite dagli autori degli attacchi.

Accesso iniziale

La tattica di accesso iniziale si riferisce alle tecniche che un utente malintenzionato può utilizzare per ottenere l'accesso alle risorse DevOps come repository, pipeline e dipendenze. Le seguenti tecniche possono costituire un prerequisito per i passaggi successivi:

Autenticazione della gestione del codice sorgente (SCM) - Accesso tramite un metodo di autenticazione per la gestione del codice sorgente dell'organizzazione. Può trattarsi di un token di accesso personale (PAT), di una chiave SSH o di qualsiasi altra credenziale di autenticazione consentita. Un esempio di metodo che un utente malintenzionato può utilizzare per realizzare questa tecnica è l'utilizzo di un attacco di phishing contro un'organizzazione.

Autenticazione del servizio integrazione continua (CI) e distribuzione continua (CD) - Analogamente all'autenticazione SCM, un utente malintenzionato può sfruttare l'autenticazione per il servizio CI/CD per attaccare il DevOps dell'organizzazione.

Repository pubblici dell'organizzazione’ - Accesso ai repository pubblici dell'organizzazione configurati con funzionalità CI/CD. A seconda della configurazione dell'organizzazione, questi repository possono essere in grado di attivare l'esecuzione di una pipeline dopo la creazione di una richiesta di pull (PR).

Compromissione dell'endpoint - Utilizzando una compromissione esistente, un utente malintenzionato può sfruttare la workstation dello sviluppatore compromesso, ottenendo così l'accesso a SCM dell'organizzazione, al registro o a qualsiasi altra risorsa a cui lo sviluppatore ha accesso.

Webhook configurati: Quando un'organizzazione dispone di un webhook configurato, un utente malintenzionato potrebbe usarlo come metodo di accesso iniziale nella rete dell'organizzazione usando SCM stesso per attivare le richieste nella rete. Ciò potrebbe concedere all'utente malintenzionato di accedere a servizi che non sono destinati a essere esposti pubblicamente o che eseguono versioni di software precedenti e vulnerabili all'interno della rete privata.

Esecuzione

La tattica di esecuzione si riferisce alle tecniche che possono essere utilizzate da un antagonista malintenzionato per ottenere l'accesso all'esecuzione sulle risorse, della pipeline stessa o le risorse di distribuzione. Alcune delle tecniche descritte in questa sezione contengono spiegazioni sui diversi modi per eseguirle o sulle tecniche chiamate tecniche secondarie:

Esecuzione della pipeline non elaborabile (PPE) - Fa riferimento a una tecnica in cui un utente malintenzionato può inserire codice in un repository dell'organizzazione, causando l'esecuzione del codice nel sistema CI/CD del repository. Esistono diverse tecniche secondarie per ottenere l'esecuzione del codice:

  • PPE diretto (d-PPE) - Casi in cui l'utente malintenzionato può modificare direttamente il file di configurazione all'interno del repository. Poiché la pipeline viene attivata da una nuova richiesta pull ed eseguita in base al file di configurazione, l'utente malintenzionato può inserire comandi dannosi nel file di configurazione e questi comandi vengono eseguiti nella pipeline.
  • PPE indiretto (i-PPE) - Casi in cui l'utente malintenzionato non può modificare direttamente i file di configurazione o in cui tali modifiche non vengono prese in considerazione al momento dell'attivazione. In questi casi, l'utente malintenzionato può infettare gli script usati dalla pipeline per eseguire codice, ad esempio make files, script di test, script di compilazione e così via.
  • PPE pubblico - Casi in cui la pipeline viene attivata da un progetto open source. In questi casi, l'utente malintenzionato può usare d-PPE o i-PPE nel repository pubblico per infettare la pipeline.

Manomissione delle dipendenze - Fa riferimento a una tecnica in cui un utente malintenzionato può eseguire codice nell'ambiente DevOps o nell'ambiente di produzione inserendo Iil codice dannoso nelle dipendenze di un repository. In questo modo, quando la dipendenza viene scaricata, viene eseguito il codice dannoso. Alcune tecniche secondarie che possono essere usate per ottenere l'esecuzione del codice includono:

  • Confusione delle dipendenze pubbliche - Tecnica in cui l'antagonista pubblica pacchetti dannosi pubblici con lo stesso nome dei pacchetti privati. In questo caso, dato che la ricerca di pacchetti nei meccanismi di controllo dei pacchetti in genere cerca prima nei registri pubblici, il pacchetto dannoso viene scaricato.
  • Hijack del pacchetto pubblico (“repo-jacking”) - Esecuzione dell’hijack di un pacchetto pubblico prendendo il controllo dell'account del responsabile, ad esempio sfruttando la funzionalità di ridenominazione dell'utente di GitHub.
  • Typosquatting - Pubblicazione di pacchetti dannosi con nomi simili ai pacchetti pubblici noti. In questo modo, un utente malintenzionato può confondere gli utenti per scaricare il pacchetto dannoso anziché quello desiderato.

Risorse DevOps compromesse - Le pipeline sono, in sostanza, un set di risorse di calcolo che eseguono gli agenti CI/CD, insieme ad altri software. Un utente malintenzionato può colpire queste risorse sfruttando una vulnerabilità nel sistema operativo, nel codice dell'agente, in altri software installati nelle macchine virtuali o in altri dispositivi della rete per ottenere l'accesso alla pipeline.

Controllo del Registro di sistema comune - Un utente malintenzionato può ottenere il controllo di un registro usato dall'organizzazione, con conseguente esecuzione di immagini o pacchetti dannosi da parte delle macchine virtuali della pipeline o di produzione.

Persistenza

La tattica di persistenza è costituita da tecniche diverse che un utente malintenzionato può usare per mantenere l'accesso a un ambiente vittima:

Modifiche nel repository - Gli avversari possono usare i token automatici dall'interno della pipeline per accedere al repository ed eseguire il push del codice, supponendo che il token automatico disponga di autorizzazioni sufficienti per farlo. In questo modo possono ottenere la persistenza utilizzando diverse tecniche secondarie:

  • Modificare/aggiungere script nel codice - È possibile modificare alcuni degli script di inizializzazione/aggiungere nuovi script, in modo da scaricare una backdoor/starter per l'utente malintenzionato, in modo che ogni volta che la pipeline esegue questi script, verrà eseguito anche il codice dell'utente malintenzionato.
  • Modificare la configurazione della pipeline - È possibile aggiungere nuovi passaggi nella pipeline per scaricare uno script controllato dall'utente malintenzionato nella pipeline prima di continuare con il processo di compilazione.
  • Modificare la configurazione per i percorsi delle dipendenze - per usare pacchetti controllati dall’utente malintenzionato.

L'inserimento in Artifacts - alcuni ambienti CI hanno la funzionalità di creare artefatti da condividere tra diverse esecuzioni della pipeline. Ad esempio, in GitHub è possibile archiviare gli artefatti e scaricarli usando un'azione GitHub dalla configurazione della pipeline.

Modificare le immagini nel registro - Nei casi in cui le pipeline dispongono delle autorizzazioni per accedere al registro delle immagini, ad esempio per la scrittura di immagini nel registro dopo la compilazione, l'utente malintenzionato potrebbe modificare e inserire immagini dannose nel registro, che continuerebbero a essere eseguite dai contenitori dell'utente.

Creare le credenziali del servizio - Un antagonista malintenzionato può sfruttare l'accesso già disponibile nell'ambiente e creare nuove credenziali da utilizzare in caso di perdita del metodo di accesso iniziale. A tale scopo, è possibile creare un token di accesso a SCM, all'applicazione stessa, alle risorse cloud e altro ancora.

Escalation dei privilegi

Le tecniche di escalation dei privilegi vengono usate da un utente malintenzionato per elevare i privilegi nell'ambiente della vittima, ottenendo privilegi più elevati per le risorse già compromesse:

Segreti nei repository privati - Sfruttando un metodo di accesso iniziale già ottenuto, un utente malintenzionato potrebbe analizzare i repository privati per individuare segreti nascosti. Le probabilità di trovare segreti nascosti in un repository privato sono più alte che in un repository pubblico, poiché, dal punto di vista dello sviluppatore, questo è inaccessibile dall'esterno dell'organizzazione.

Commit/push in rami protetti - La pipeline ha accesso al repository che può essere configurato con accesso permissivo, che potrebbe consentire il push del codice direttamente ai rami protetti, permettendo a un antagonista di inserire il codice direttamente nei rami importanti senza l'intervento del team.

Certificati e identità dai servizi di metadati - Una volta che un utente malintenzionato è in esecuzione su pipeline ospitate nel cloud, potrebbe accedere ai servizi di metadati dall'interno della pipeline ed estrarre certificati (richiede privilegi elevati) e identità da questi servizi.

Accesso tramite credenziali

Le tecniche di accesso alle credenziali vengono usate da un utente malintenzionato per rubare le credenziali:

Credenziali utente - Nei casi in cui il cliente richiede l'accesso a servizi esterni dalla pipeline di CI, ad esempio un database esterno, queste credenziali risiedono all'interno della pipeline (possono essere impostate da segreti CI, variabili di ambiente e così via) e possono essere accessibili all'antagonista.

Credenziali del servizio - Esistono casi in cui l'utente malintenzionato può trovare le credenziali del servizio, ad esempio nomi delle entità servizio (SPN), token di firma di accesso condiviso (SAS) e altro ancora, che potrebbe consentire l'accesso ad altri servizi direttamente dalla pipeline.

Spostamento laterale

La tattica di spostamento laterale si riferisce alle tecniche usate dagli utenti malintenzionati per spostarsi tra risorse diverse. Negli ambienti CI/CD questo può fare riferimento al passaggio alle risorse di distribuzione, alla compilazione di artefatti e registri o a nuove destinazioni.

Compromissione degli artefatti di compilazione - Come in altri attacchi della catena di approvvigionamento, una volta che l'utente malintenzionato ha il controllo delle pipeline CI, può interferire con gli artefatti della compilazione. In questo modo, il codice dannoso potrebbe essere inserito nei materiali di costruzione prima della compilazione, quindi inserendo le funzionalità dannose negli artefatti di compilazione.

Inserimento del registro - Se la pipeline è configurata con un registro per gli artefatti di compilazione, l'utente malintenzionato potrebbe infettare il registro con immagini dannose, che in seguito verrebbero scaricate ed eseguite dai contenitori usando tale registro.

Distribuzione alle risorse di distribuzione - Se la pipeline è configurata con l'accesso alle risorse di distribuzione, l'utente malintenzionato ha lo stesso accesso a queste risorse, consentendo all'utente malintenzionato di diffondersi. Ciò potrebbe comportare l'esecuzione del codice, l'esfiltrazione di dati e altro ancora, a seconda delle autorizzazioni concesse alle pipeline.

Evasione delle difese

Le tecniche di evasione della difesa possono essere usate dagli utenti malintenzionati per aggirare le difese usate in un ambiente DevOps e consentire agli attacchi di continuare senza essere notati:

Modifica dei log di servizio - I log dei servizi consentono a Defender di rilevare gli attacchi nel loro ambiente. Un utente malintenzionato in esecuzione all'interno di un ambiente, ad esempio nelle pipeline di compilazione, potrebbe modificare i log per impedire a Defender di osservare l'attacco. È simile a un utente malintenzionato che modifica i log della cronologia in un computer Linux, impedendo a qualsiasi osservatore di visualizzare i comandi eseguiti dall'utente malintenzionato.

Manipolazione della compilazione - se un utente malintenzionato desidera non lasciare tracce nel servizio SCM, può modificare il processo di compilazione per iniettare il codice dannoso. Questa operazione può essere eseguita in diversi modi:

  • Modifica del codice in tempo reale: modificare il codice subito prima dell'inizio del processo di compilazione, senza modificarlo nel repository e lasciare tracce in esso.
  • Compilatore manomesso: modifica del compilatore nell'ambiente di compilazione per introdurre il codice dannoso senza lasciare tracce prima dell'inizio del processo.

Riconfigurare le protezioni dei rami - Strumenti di protezione dei rami consentono a un'organizzazione di configurare i passaggi prima che una richiesta pull o un commit vengano approvati in un ramo. Una volta che un utente malintenzionato dispone delle autorizzazioni dell’amministratore, può modificare queste configurazioni e introdurre codice nel ramo senza alcun intervento dell'utente.

Impatto

La tattica di impatto si riferisce alle tecniche che un utente malintenzionato potrebbe usare per sfruttare l'accesso alle risorse CI/CD per scopi dannosi e non come un altro passaggio dell'attacco, in quanto queste tecniche potrebbero essere rumorose e facili da rilevare:

Denial-of-Service distribuito (DDoS) - Un antagonista potrebbe usare le risorse di calcolo a cui hanno ottenuto l'accesso per eseguire attacchi DDoS (Denial of Service) su target esterni.

Mining di criptovalute - Le risorse di calcolo potrebbero essere usate per il mining di criptovalute controllato da un antagonista.

attacco Denial of Service (DoS) - Una volta che l'utente malintenzionato è in esecuzione nelle pipeline CI, può eseguire un attacco di negazione del servizio da tali pipeline ai clienti arrestando agenti, riavviando o eseguendo l'overload delle macchine virtuali.

Eliminazione delle risorse - Un utente malintenzionato con accesso alle risorse, come risorse cloud, repository e così via, potrebbe eliminare definitivamente le risorse per ottenere servizi DDoS.

Esfiltrazione

La tattica di esfiltrazione si riferisce a diverse tecniche che potrebbero essere utilizzate da un utente malintenzionato per esfiltrare dati sensibili dall'ambiente della vittima:

Clonare repository privati - Una volta che gli utenti malintenzionati hanno accesso alle pipeline di integrazione continua, ottengono anche l'accesso ai repository privati, ad esempio il GITHUB_TOKEN può essere usato in GitHub, e quindi possono clonare e accedere al codice, ottenendo così l'accesso all'indirizzo IP privato.

Log della pipeline - Un antagonista potrebbe accedere ai log di esecuzione della pipeline, visualizzare la cronologia di accesso, i passaggi di compilazione e così via. Questi log possono contenere informazioni sensibili sulla compilazione, sulla distribuzione e, in alcuni casi, anche le credenziali dei servizi, degli account utente e altro ancora.

Esfiltrare i dati dalle risorse di produzione - Nei casi in cui le pipeline possono accedere alle risorse di produzione, gli utenti malintenzionati avranno accesso anche a queste risorse. Pertanto, possono abusare di questo accesso per esfiltrare i dati di produzione.

Raccomandazioni per la gestione della postura DevOps

Quando gli scanner DevOps individuano deviazioni dalle procedure consigliate per la sicurezza all'interno di sistemi di gestione del codice sorgente e pipeline di integrazione continua/recapito continuo, Defender per il cloud restituisce raccomandazioni precise e interattive. Queste raccomandazioni offrono i vantaggi seguenti:

  • Visibilità avanzata: Ottenere informazioni dettagliate complete sulla postura di sicurezza degli ambienti DevOps, assicurando una comprensione completa delle vulnerabilità esistenti. Identificare le regole di protezione dei rami mancanti, i rischi di escalation dei privilegi e le connessioni non sicure per prevenire gli attacchi.
  • Azione basata su priorità: Filtra i risultati in base alla gravità per spendere risorse e gli sforzi in modo più efficace risolvendo prima le vulnerabilità più critiche.
  • Riduzione della superficie di attacco: Risolvere i gap di sicurezza evidenziati per ridurre al minimo le superfici di attacco vulnerabili, in modo da rafforzare le difese contro potenziali minacce.
  • Notifiche in tempo reale: Possibilità di integrarsi con le automazioni del flusso di lavoro per ricevere avvisi immediati quando le configurazioni di sicurezza vengono modificate, consentendo un'azione tempestiva e garantendo una conformità costante ai protocolli di sicurezza.