FV8: Un nuovo strumento per rilevare JavaScript malevolo
FV8 migliora il rilevamento delle tecniche evasive in JavaScript tramite analisi dinamica.
― 6 leggere min
Il Codice Malevolo può nascondersi alla vista, rendendo difficile per gli strumenti di sicurezza trovarlo e fermarlo. Questo è particolarmente vero per JavaScript, un linguaggio di programmazione comunemente usato sui siti web. Gli attaccanti spesso usano trucchi per evitare di essere scoperti, permettendo al codice dannoso di funzionare senza essere notato. Queste Tecniche di evasione rendono difficile per gli strumenti di analisi statici e dinamici individuare azioni malevoli.
Il Problema delle Tecniche di Evasione
Le tecniche di evasione sono metodi che permettono al codice dannoso di sfuggire all’attenzione. Possono far sembrare che non ci sia nulla di sbagliato, il che è particolarmente efficace in JavaScript. Questo linguaggio spesso permette l'iniezione di codice dinamico, il che significa che il codice può essere inserito durante l'esecuzione. Questa natura dinamica facilita il lavoro degli attaccanti per eseguire i loro piani nascosti.
Gli strumenti che si basano sull'analisi statica e dinamica spesso trascurano questo tipo di evasione. L'analisi statica guarda il codice senza eseguirlo, mentre l'Analisi Dinamica valuta il codice mentre è in esecuzione. Entrambi i metodi possono risultare insufficienti contro il codice evasivo, che è una preoccupazione crescente nella cybersicurezza.
FV8: Una Nuova Soluzione
Per combattere questo problema, è stata sviluppata una versione modificata del motore JavaScript V8 chiamata FV8. Questo motore è stato progettato per cercare attivamente tecniche di evasione all'interno del codice JavaScript. Costringendo l'esecuzione di percorsi di codice specifici, FV8 può esporre azioni evasive che di solito sfuggirebbero ad altri strumenti.
FV8 funziona imponendo l'esecuzione del codice su parti vitali dell'ambiente JavaScript, mirato specificamente ad API che possono iniettare codice dinamicamente. Questo aumenta le possibilità di individuare codice malevolo nascosto all'interno dei file JavaScript. Lo strumento è stato integrato sia nell'ambiente Node.js che nel browser Chromium, estendendone l'usabilità e l'efficacia.
Come Funziona FV8
FV8 opera prendendo il controllo dell'esecuzione del codice in modo selettivo. Si concentra su condizioni specifiche che potrebbero indicare tecniche evasive, eseguendo i percorsi di codice pertinenti per aumentare la visibilità. Questo metodo aumenta la copertura del codice, permettendo di analizzare più parti del codice.
L'integrazione di FV8 nell'ambiente Node.js gli consente di esaminare pacchetti npm, mentre la sua presenza nel browser Chromium gli permette di ispezionare estensioni del browser. Lo strumento è stato testato contro un vasto numero di questi pacchetti e estensioni, rivelando molti casi di azioni evasive.
I Risultati: Cosa Ha Trovato FV8
In test approfonditi, FV8 ha rilevato una serie di tecniche di evasione. Ha identificato 28 categorie uniche di evasione, comprese cinque metodologie mai riportate prima. In un campione di dati malevoli confermati, lo strumento ha contrassegnato 1.443 pacchetti npm come contenenti tecniche evasive e ha identificato 164 estensioni malevole. Questo mette in evidenza l'efficacia di FV8 nel rivelare comportamenti evasivi.
Oltre a identificare tecniche evasive, FV8 ha anche scoperto una quantità significativa di codice iniettato. Nei test che coinvolgono oltre 39.000 estensioni del browser, ha rivelato un numero sorprendente di script iniettati, dimostrando quanto possa essere profondamente radicato il codice malevolo.
L'Importanza dell'Analisi Dinamica
L'analisi dinamica è fondamentale per capire il comportamento di JavaScript in tempo reale. Molti strumenti esistenti non riescono a gestire la natura ricorsiva dell'esecuzione del codice, dove FV8 spicca. Esaminando il codice mentre è in esecuzione e forzando i percorsi di esecuzione, FV8 può identificare minacce nascoste che altrimenti rimarrebbero inosservate.
Molte tecniche di evasione comuni, come l'Offuscamento o i controlli di temporizzazione, possono facilmente ingannare i metodi di rilevamento tradizionali. La capacità di FV8 di esporre queste tecniche lo rende un asset prezioso nella lotta contro il JavaScript malevolo.
Il Ruolo dell'Offuscamento
L'offuscamento è una tecnica comune usata dagli attaccanti per nascondere codice malevolo. Rende il codice difficile da leggere e capire, complicando gli sforzi di rilevamento. FV8 ha dimostrato buone prestazioni nella gestione di varie tecniche di offuscamento.
Sebbene non possa affrontare ogni tipo di offuscamento, FV8 copre un numero sostanziale di essi. Questa efficacia rafforza ulteriormente la posizione dello strumento come risorsa essenziale per gli analisti di cybersicurezza.
Verifica Manuale dei Risultati
Nonostante la natura automatizzata di FV8, la verifica umana rimane un componente critico. Dopo che FV8 contrassegna potenziali problemi, gli esperti di sicurezza esaminano manualmente gli elementi contrassegnati per confermare la loro natura malevola. Questo processo manuale combina rilevamento automatizzato con analisi esperta, aumentando la precisione complessiva.
La fase di verifica è fondamentale per garantire che i risultati dello strumento siano validi. Gli esperti valutano le estensioni e i pacchetti contrassegnati per determinare se mostrano effettivamente comportamenti malevoli.
Approfondimenti sulle Estensioni Malevole
Un'analisi delle estensioni contrassegnate ha rivelato che un numero significativo utilizzava tecniche evasive. Tra queste, una varietà di metodi è stata utilizzata per nascondere azioni malevole in modo efficace. Le tattiche comuni includevano controlli per l'interazione dell'utente e condizioni ambientali per evitare il rilevamento.
I risultati hanno mostrato che molte di queste estensioni malevole sono riuscite a sfuggire alle misure di sicurezza esistenti. Utilizzando tattiche evasive, sono state in grado di portare a termine le loro azioni dannose senza destare sospetti.
L'Ecosistema NPM
L'ecosistema npm è un'altra area in cui le tecniche di evasione sono prevalenti. Con milioni di pacchetti disponibili, gli attaccanti possono trovare opportunità per inserire codice malevolo. L'integrazione di FV8 in questo ambiente consente esami approfonditi di questi pacchetti, migliorando le possibilità di identificare minacce.
Lo strumento ha contrassegnato con successo numerosi pacchetti npm malevoli, dimostrando la sua efficacia in questo vasto panorama. Questa capacità di rivelare minacce nascoste in tempo reale è inestimabile, specialmente mentre l'ecosistema npm continua a crescere.
Raggruppamento delle Tecniche di Evasione
Per migliorare l'accuratezza del rilevamento, FV8 utilizza un algoritmo di clustering per analizzare il comportamento delle estensioni contrassegnate. Questo processo raggruppa azioni evasive simili, aiutando a identificare schemi che possono indicare un'intenzione malevola.
Raggruppando le tecniche evasive, i team di sicurezza possono ottenere intuizioni su come operano gli attaccanti. Questa comprensione può informare future misure di sicurezza, aiutando a sviluppare difese più robuste contro minacce in evoluzione.
Conclusione
Lo sviluppo di FV8 rappresenta un avanzamento significativo nella lotta contro il JavaScript malevolo. Offrendo un approccio innovativo all'analisi dinamica, aumenta le possibilità di rilevare tecniche evasive sia nei pacchetti npm che nelle estensioni del browser.
Le intuizioni ottenute dai risultati di FV8 sottolineano l'importanza di misure di sicurezza proattive. Mentre gli attaccanti continuano a perfezionare le loro tattiche di evasione, strumenti come FV8 giocheranno un ruolo fondamentale nel rafforzare le difese contro il codice malevolo.
Nell'eterogeneo panorama della sicurezza web, rimanere un passo avanti rispetto alle potenziali minacce è essenziale. Le capacità di FV8 evidenziano la necessità di ricerca e sviluppo continuo nel campo, garantendo che le misure di sicurezza tengano il passo con le tattiche utilizzate dagli attori malevoli.
Titolo: FV8: A Forced Execution JavaScript Engine for Detecting Evasive Techniques
Estratto: Evasion techniques allow malicious code to never be observed. This impacts significantly the detection capabilities of tools that rely on either dynamic or static analysis, as they never get to process the malicious code. The dynamic nature of JavaScript, where code is often injected dynamically, makes evasions particularly effective. Yet, we lack tools that can detect evasive techniques in a challenging environment such as JavaScript. In this paper, we present FV8, a modified V8 JavaScript engine designed to identify evasion techniques in JavaScript code. FV8 selectively enforces code execution on APIs that conditionally inject dynamic code, thus enhancing code coverage and consequently improving visibility into malicious code. We integrate our tool in both the Node.js engine and the Chromium browser, compelling code execution in npm packages and Chrome browser extensions. Our tool increases code coverage by 11% compared to default V8 and detects 28 unique evasion categories, including five previously unreported techniques. In data confirmed as malicious from both ecosystems, our tool identifies 1,443 (14.6%) npm packages and 164 (82%) extensions containing at least one type of evasion. In previously unexamined extensions (39,592), our tool discovered 16,471 injected third-party scripts, and a total of 8,732,120 lines of code executed due to our forced execution instrumentation. Furthermore, it tagged a total of 423 extensions as both evasive and malicious and we manually verify 110 extensions (26%) to actually be malicious, impacting two million users. Our tool is open-source and serves both as an in-browser and standalone dynamic analysis tool, capable of detecting evasive code, bypassing obfuscation in certain cases, offering improved access to malicious code, and supporting recursive analysis of dynamic code injections
Autori: Nikolaos Pantelaios, Alexandros Kapravelos
Ultimo aggiornamento: 2024-05-21 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2405.13175
Fonte PDF: https://arxiv.org/pdf/2405.13175
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.