Prevalence of Cross-File Dependencies in Terraform and Their Resolution by Security Scanners
Questo articolo analizza un dataset Terraform su larga scala per rivelare che le dipendenze tra file diversi sono diffuse e spesso coinvolgono risorse sensibili alla sicurezza, dimostrando attraverso esperimenti controllati che gli scanner di sicurezza moderni possiedono capacità variabili ma significative nel risolvere queste complesse relazioni inter-file, sfidando l'assunto secondo cui non siano in grado di gestire il ragionamento multi-file.
Articolo originale sotto licenza CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Nel mondo digitale moderno, i massicci server e le reti che alimentano le nostre app, le banche e i servizi di streaming non vengono più costruiti a mano. Invece, gli ingegneri scrivono istruzioni in un linguaggio informatico per dire al cloud esattamente cosa costruire. Questa pratica è chiamata Infrastructure as Code (Infrastruttura come Codice). Essa permette ai team di definire sistemi complessi in file di testo, garantendo che ogni server, firewall e bucket di archiviazione sia creato con la stessa precisione ogni volta. Uno degli strumenti più popolari per questo compito è chiamato Terraform. Funziona come un lettore di progetti, prendendo queste istruzioni testuali e trasformandole in tecnologia reale e funzionante. Tuttavia, proprio come la pianta di una casa potrebbe essere suddivisa in decine di pagine con note che fanno riferimento ad altre pagine, questi file di codice sono raramente isolati. Sono intrecciati tra loro, con un file che richiama un altro, scambiando valori e costruendo un sistema che esiste solo quando tutti i pezzi sono assemblati.
La sicurezza di questi sistemi dipende dall'accuratezza di queste istruzioni. Un singolo errore nel codice, come lasciare accidentalmente una porta digitale aperta, può esporre dati sensibili a tutta la rete internet. Per anni, ricercatori ed esperti di sicurezza hanno temuto che gli strumenti progettati per scansionare questi progetti alla ricerca di errori potessero essere ciechi rispetto alle connessioni tra i file. La convinzione prevalente era che questi scanner potessero leggere un solo file alla volta, perdendo di vista i segreti pericolosi nascosti negli spazi tra di essi. Se un file diceva "usa l'impostazione predefinita" e un altro file definiva quella predefinita come "aperta a tutti", lo scanner avrebbe potuto vedere il primo file come sicuro e il secondo come sicuro in isolamento, fallendo nel rilevare la combinazione pericolosa. Questo articolo si è proposto di testare tale supposizione contro una vasta collezione di codice reale e di vedere se gli strumenti fossero davvero limitati quanto tutti pensavano.
I ricercatori hanno iniziato raccogliendo una vasta libreria di oltre 62.000 progetti pubblici che utilizzano Terraform. Volevano capire quanto spesso questi progetti si affidino effettivamente a connessioni tra file diversi. Mappando le relazioni in questi progetti, hanno scoperto che le connessioni tra file non sono eccezioni rare, ma una parte standard del modo in cui questi sistemi vengono costruiti. Infatti, più di un terzo di tutti i progetti studiati conteneva almeno una connessione in cui un file dipendeva da un altro. Queste connessioni non erano distribuite uniformemente; erano pesantemente concentrate in un numero minore di progetti complessi, mentre molti progetti più semplici ne avevano pochissime o nessuna. Il modo più comune in cui questi file erano collegati era puntando a cartelle condivise, dove un progetto cercava all'interno o attraverso la propria struttura di directory per trovare un pezzo di codice comune di cui aveva bisogno. Questo schema mostrava che il modo in cui gli ingegneri organizzano il loro lavoro crea naturalmente una rete di dipendenze che si estende su molti file.
Lo studio ha poi posto una domanda critica: queste connessioni portano spesso alle parti più sensibili di un sistema? I ricercatori hanno cercato casi in cui un file dipendeva da un altro file che controllava le impostazioni di sicurezza, come chi potesse accedere a un database o quali computer fossero autorizzati a comunicare tra loro. Hanno scoperto che in oltre 9.000 dei progetti, queste connessioni tra file puntavano effettivamente a questi controlli di sicurezza critici. Ciò significava che la sicurezza di questi sistemi dipendeva spesso dalla capacità di tracciare un valore da un file, attraverso una connessione, fino a una regola di sicurezza in un altro file. Se uno strumento non fosse stato in grado di seguire quel percorso, starebbe guardando l'immagine sbagliata, rischiando di mancare una vulnerabilità che esisteva solo grazie al modo in cui i file erano cuciti insieme.
Una volta stabilita l'entità del problema, i ricercatori si sono rivolti agli strumenti stessi per vedere se fossero effettivamente in grado di seguire questi percorsi. Hanno progettato un esperimento controllato utilizzando quattro degli scanner di sicurezza più popolari disponibili. Hanno creato una serie di casi di test che imitavano le connessioni del mondo reale da loro trovate, spaziando da semplici collegamenti tra file nella stessa cartella a catene complesse in cui un valore passava attraverso molteplazioni moduli prima di raggiungere la sua destinazione finale. Hanno testato se gli scanner potessero individuare un difetto di sicurezza quando l'impostazione pericolosa era nascosta in un file diverso, o se gli scanner avrebbero visto il pericolo solo quando era scritto direttamente nello stesso file.
I risultati hanno messo in discussione la lunga convinzione che questi strumenti fossero fondamentalmente ciechi alle connessioni tra i file. Lo studio ha rivelato che le capacità degli strumenti non erano un semplice sì o no, ma uno spettro. Ogni singolo strumento testato è stato in grado di seguire le connesszioni più semplici, come una variabile definita in un file e utilizzata in un altro all'interno della stessa cartella. Tutti hanno individuato con successo il pericolo in questi scenari base. Tuttavia, man mano che le connessioni diventavano più complesse, gli strumenti iniziavano a divergere. Solo uno dei quattro scanner, Checkov, è stato in grado di seguire i percorsi più intricati, inclusi quelli in cui i valori venivano passati attraverso molteplici livelli di moduli o dove le impostazioni venivano sovrascritte da file di configurazione speciali. Gli altri strumenti potevano gestire i collegamenti diretti, ma spesso perdevano la traccia quando la connessione coinvolgeva passaggi intermedi o tipi di file specifici come i file di override delle variabili.
Questo risultato suggerisce che l'assunzione comune che gli scanner non possano seguire i riferimenti tra i file sia troppo ampia per essere accurata. Non è che gli strumenti siano incapaci del compito, ma piuttosto che la loro capacità di farlo varia significativamente a seconda dello strumento specifico e della complessità della connessione. Per i team che si affidano agli strumenti che gestiscono solo i casi più semplici, esiste un rischio reale che stiano perdendo problemi di sicurezza nascosti nel cablaggio più complesso del loro codice. I ricercatori hanno concluso che, sebbene gli strumenti abbiano fatto progressi, l'industria deve essere più precisa su ciò che ogni strumento può e non può vedere. Piuttosto che assumere che uno strumento catturerà ogni errore, i team dovrebbero comprendere i limiti specifici del proprio scanner scelto, specialmente quando il proprio codice si affida a profondi strati di connessioni. Lo studio fornisce una mappa chiara di questi limiti, mostrando che mentre i pericoli tra i file più semplici vengono catturati, quelli più profondi e complessi richiedono o uno strumento più capace o un approccio diverso per garantire la sicurezza.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.