Extracting Database Access-Control Policies From Web Applications
Questo articolo introduce Ote, uno strumento che utilizza l'esecuzione concolica per estrarre e riassumere automaticamente le policy di controllo degli accessi dalle applicazioni web Ruby on Rails, affrontando la natura soggetta a errori delle implementazioni di sicurezza implicite e ad hoc e consentendo il rilevamento degli errori nelle policy.
Articolo originale sotto licenza CC BY 4.0 (http://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
La Mappa Segreta della Giungla Digitale
Immaginate Internet come una città enorme e frenetica, dove ogni sito web è un edificio pieno di stanze, file e segreti. In questa città, i database sono le enormi casseforti dove vengono conservati tutti i dati importanti — come voti, messaggi privati o cartelle cliniche. Per mantenere sicure queste casseforti, ogni edificio ha bisogno di una guardia giurata (una policy di controllo degli accessi) che decida chi può entrare in quale stanza e cosa è autorizzato a guardare.
Di solito, queste guardie giurate sono scritte da sviluppatori umani. Essi nascondono le regole all'interno delle planimetrie dell'edificio (il codice) in modo disordinato e disperso. Potrebbero mettere un cartello "Vietato l'ingresso" su una porta, una nota "Solo per il personale" su una finestra e un indovinello complesso su una parete di un corridoio. Questo è chiamato una policy implicita. Il problema è che questi indizi sparsi sono facili da mancare, facili da sbagliare e quasi impossibili da comprendere per chiunque altro. Se uno sviluppatore lascia il team, nessuno sa più esattamente quali siano le regole. È come cercare di capire le regole di un gioco guardando semplicemente le persone giocare, senza mai vedere il regolamento. Questo articolo affronta il difficile compito di trovare quel libro delle regole nascosto, pulirlo e scriverlo in modo che tutti possano vedere esattamente cosa è permesso fare al computer.
Il Bot Detective che Legge la Mente del Codice
Entra in scena Ote, un nuovo detective digitale progettato per risolvere il mistero di queste regole di sicurezza nascoste. I ricercatori dietro Ote, un team della UC Berkeley e della NYU, si sono resi conto che cercare di leggere il codice disordinato delle vecchie applicazioni web per trovare le regole è come cercare di trovare un ago in un pagliaio indossando delle bende. Invece di leggere il codice riga per riga, Ote decide di giocare al gioco.
Ote utilizza una tecnica chiamata esecuzione concolica. Pensate a questo come a un bot per videogiochi super-potenziato che non si limita a giocare una volta sola; lo gioca milioni di volte, provando ogni possibile combinazione di input. È come un detective che cammina attraverso un edificio, provando ogni porta, controllando ogni finestra e annotando esattamente cosa succede quando preme un determinato pulsante. Se il bot preme un pulsante e un file segreto si apre, scrive: "Premere il Pulsante A apre il File B". Se preme il Pulsante A e non succede nulla, lo annota comunque.
Ma ecco la parte complicata: i veri siti web sono enormi. Se Ote cercasse di controllare ogni singolo percorso, ci vorrebbe un'eternità — forse anni! Per risolvere questo problema, il team ha notato qualcosa di interessante sul funzionamento di questi siti web. Hanno scoperto che la parte del codice che decide effettivamente quali dati recuperare è solitamente molto semplice, come una breve lista di regole "se questo, allora quello". Il resto del codice è solo decorazione appariscente (come rendere la pagina esteticamente gradevole). Quindi, Ote ignora la decorazione e si concentra solo sulla logica semplice.
Ancora meglio, Ote ha un assistente intelligente (un modello linguistico IA) che agisce come un giudice di rilevanza. Quando il bot incontra un ramo strano nel codice, l'assistente chiede: "Questo è importante per la sicurezza?". Se il ramo riguarda solo il cambiare il colore di un carattere o mostrare un'etichetta "Non ufficiale", l'assistente dice: "Ignora quello!". Questo evita a Ote di perdere tempo su vicoli ciechi, trasformando un compito che richiederebbe giorni in uno che richiede solo poche ore.
Cosa ha scoperto Ote: i momenti "Aha!"
Il team ha testato Ote su tre applicazioni reali: diaspora (un social network), Autolab (uno strumento per compiti scolastici) e The Odin Project (un sito web per una scuola di programmazione). Non volevano solo vedere se Ote potesse funzionare; volevano vedere se potesse trovare errori che gli umani avevano mancato.
I risultati sono stati sorprendenti. Quando il team ha confrontato le regole estratte da Ote con le regole che avevano scritto a mano anni prima, Ote ha trovato diversi errori:
- La Guardia Troppo Permissiva: Nel sistema Autolab, le regole scritte dagli umani permettevano accidentalmente ai "correttori del corso" di vedere dati sensibili in corsi che avrebbero dovuto essere "disabilitati". Solo gli istruttori avrebbero dovuto vedere quei dati. Ote ha individuato questa fuga immediatamente.
- La Chiave Mancante: Nel social network diaspora, le regole scritte dagli umani avevano dimenticato di consentire l'accesso a determinate notifiche e dettagli del profilo di cui l'app aveva invece bisogno per funzionare. Se avessero applicato le vecchie regole, l'app si sarebbe interrotta per gli utenti reali.
- Il Bug Silenzioso: La scoperta più eccitante è stata un bug sottile nel codice di Autolab stesso. Anni fa, uno sviluppatore aveva accidentalmente digitato male il nome di una colonna durante la configurazione di un controllo di sicurezza. Il codice sembrava controllare se uno studente avesse il permesso di vedere un esame, ma a causa di un errore di battitura, il controllo non stava facendo nulla in silenzio. La policy estratta da Ote ha mostrato che nessun controllo stava avvenendo, il che ha portato il team a trovare e correggere l'errore di battitura.
Il Verdetto: Un modo migliore per scrivere il Regolamento
Ote non è una bacchetta magica che garantisce una sicurezza perfetta. Ammette di poter perdere alcuni percorsi molto rari o di avere difficoltà con codici estremamente complessi che non seguono regole semplici. Tuttavia, gli esperimenti hanno dimostrato che, per le applicazioni del mondo reale, Ote è incredibilmente utile. Può estrarre una lista chiara e leggibile di regole di sicurezza (scritta in un linguaggio chiamato SQL) in meno di cinque ore.
L'articolo suggerisce che usare Ote è come avere un secondo paio di occhi che non si stanca mai. Aiuta gli sviluppatori a capire cosa il loro codice sta effettivamente facendo, piuttosto che cosa pensano che stia facendo. Trasformando la logica disordinata e nascosta in un libro di regole esplicito e pulito, Ote aiuta i team a intercettare i buchi di sicurezza prima che diventino dei disastri. Non sostituisce lo sviluppatore umano, ma gli fornisce uno strumento potente per assicurarsi che le casseforti digitali rimangano ben chiuse.
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.