Categorie
Notizie

Tempi duri per le vulnerabilità JavaScript

Tempo di lettura: 3 minuti. La John Hopkins University ha sviluppato lo strumento di analisi ODGen

Tempo di lettura: 3 minuti.

I ricercatori della Johns Hopkins University hanno sviluppato uno strumento di analisi del codice basato su graph in grado di rilevare un’ampia gamma di vulnerabilità nei programmi JavaScript.

Chiamato ODGen, lo strumento è stato presentato all’Usenix Security Symposium di quest’anno e affronta alcune delle sfide che limitavano l’uso degli strumenti di sicurezza basati su grafi nell’analisi dei programmi JavaScript.

I ricercatori hanno dimostrato l’efficacia di ODGen applicandolo a migliaia di librerie Node.js, dove ha scoperto 180 vulnerabilità zero-day e ha ricevuto 70 CVE.

Metodi basati su Graph

Gli scanner basati su grafici analizzano i file di codice sorgente per costruire una struttura a grafo che rappresenta le diverse proprietà e i rami di esecuzione di un’applicazione. Questo grafo può quindi essere utilizzato per modellare e trovare le vulnerabilità nel codice sorgente.

Gli approcci basati su query grafiche si sono dimostrati molto efficaci nel rilevare le vulnerabilità in alcuni linguaggi di programmazione. Una tecnica in particolare, il Code Property Graph (CPG), si è dimostrata efficace nella protezione del codice C/C++ e PHP.

Ispirati dal successo dei metodi a grafo, in particolare del CPG, i ricercatori della Johns Hopkins University hanno cercato di applicarli a JavaScript. Mentre esistono diversi strumenti per trovare vulnerabilità specifiche nel codice JavaScript, gli strumenti basati sui grafi promettono di fornire un quadro generale per rilevare tutti i tipi di vulnerabilità.

“JavaScript, in particolare Node.js, sta diventando una comunità vitale con milioni di pacchetti al giorno d’oggi”, ha dichiarato a The Daily Swig Yinzhi Cao, coautore dell’articolo e assistente professore di informatica alla Johns Hopkins University.

“Allo stesso tempo, molti di questi pacchetti NPM sono meno curati e le vulnerabilità sono prevalenti nell’ecosistema NPM. Per questo motivo abbiamo deciso di effettuare lo studio per rendere l’ecosistema un ambiente più sicuro”.

Tuttavia, i risultati iniziali hanno mostrato che il CPG non è molto efficace in JavaScript a causa della struttura dinamica del linguaggio, che rende molto più difficile analizzare le relazioni tra gli oggetti e i rami del programma prima dell’esecuzione.

“Il CPG non modella le relazioni dettagliate tra gli oggetti, tra cui (i) le catene di prototipi e (ii) i flussi di dati a livello di oggetto. Pertanto, è difficile applicare il CPG per rilevare le vulnerabilità specifiche di JavaScript, come l’inquinamento dei prototipi e la manomissione delle proprietà interne. Inoltre, è difficile modellare flussi di dati a livello di oggetto a grana fine in CPG”, ha detto Cao.

Object Dependence Graph (ODG)

Nel loro articolo, i ricercatori propongono Object Dependence Graph (ODG) come metodo innovativo per costruire grafi dal codice JavaScript. ODG utilizza alcuni componenti di CPG, come gli Abstract Syntax Trees (AST), e aggiunge caratteristiche specifiche di JavaScript, tra cui la dipendenza dai dati a grana fine tra gli oggetti. Di conseguenza, i ricercatori hanno creato ODGen, uno strumento per creare e interrogare gli ODG.

“La nostra proposta ODGen interpreta astrattamente il codice JavaScript e genera un cosiddetto Object Dependence Graph per catturare tali caratteristiche dinamiche, tra cui le relazioni tra gli oggetti, in modo che un approccio basato su query a grafo possa facilmente ottenere tali informazioni e rilevare le vulnerabilità”, ha dichiarato Cao.

I ricercatori hanno progettato ODGen per rilevare le vulnerabilità a livello di applicazioni e pacchetti. Hanno testato lo strumento su 330 vulnerabilità documentate che abbracciavano 16 categorie, tra cui cross-site scripting (XSS), server- e client-side request forgery (SSRF/CSRF), SQL injection, prototype pollution e command injection.

Lo strumento è stato in grado di rilevare 13 tipi di vulnerabilità con un’accuratezza molto elevata, scoprendo 302 dei 330 bug.

Hanno ampliato il loro test effettuando il crawling di 300.000 pacchetti NPM e applicando ODGen con query a grafo per rilevare le query. ODGen ha segnalato quasi 3.000 bug di sicurezza, di cui i ricercatori hanno verificato 264 appartenenti a librerie con più di 1.000 download settimanali. Sono stati in grado di confermare e segnalare 180 bug di sicurezza, molti dei quali appartenevano a librerie ampiamente utilizzate nelle applicazioni web. Alle vulnerabilità scoperte, 70 sono state assegnate CVE.

ODGen dimostra quanto ancora ci sia da fare per rendere sicuro l’ecosistema open source di JavaScript e come l’adattamento degli strumenti esistenti possa aiutare a sviluppare approcci olistici alla sicurezza delle librerie Node.js.

In futuro, ha detto Cao, il team potrebbe estendere ODGen ad altri linguaggi di programmazione utilizzati nelle applicazioni web, tra cui PHP e Java.

Pronto a supportare l'informazione libera?

Iscriviti alla nostra newsletter // Seguici gratuitamente su Google News
Exit mobile version