← Ultimi articoli
💻 informatica

Feature Engineering Is the Bottleneck: An Explainability Study of ML-Based Security-Relevant Method Detection

Questo articolo dimostra, attraverso lo strumento WEAVE e la spiegabilità basata su SHAP, che i modelli di machine learning per il rilevamento di metodi rilevanti per la sicurezza falliscono su codice non visto non a causa di una scarsa selezione del modello, bensì perché si affidano a caratteristiche superficiali instabili come identificatori e firme, identificando l'ingegneria delle caratteristiche come il vero collo di bottiglia nel raggiungimento di un rilevamento robusto.

Autori originali: Oshando Johnson, Rohith Kumar Shanmuganathan, Ranjith Krishnamurthy, Goran Piskachev, Eric Bodden

Pubblicato 2026-11-12
📖 4 min di lettura☕ Lettura da pausa caffè

Autori originali: Oshando Johnson, Rohith Kumar Shanmuganathan, Ranjith Krishnamurthy, Goran Piskachev, Eric Bodden

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 vasto e intricato panorama del software moderno, gli analisti di sicurezza agiscono come guardiani, scansionando costantemente il codice alla ricerca di debolezze nascoste che potrebbero permettere agli attaccanti di rubare dati o prendere il controllo. Per farlo, si affidano a strumenti automatizzati che tracciano come le informazioni non attendibili, come l'input di un utente, fluiscano attraverso un programma. Questi strumenti necessitano di una mappa precisa del terreno: un elenco di funzioni specifiche che fungono da punti di partenza per i dati, endpoint pericolosi dove quei dati potrebbero causare danni e stazioni di pulizia che li neutralizzano. Queste funzioni critiche sono note come metodi rilevanti per la sicurezza. Per anni, i ricercatori hanno cercato di insegnare ai computer come trovare automaticamente questi metodi utilizzando il machine learning, sperando di sostituire le lente ed erronee liste manuali con sistemi intelligenti e auto-aggiornanti. Sebbene questi programmi informatici abbiano mostrato risultati impressionanti nell'ambiente controllato del loro addestramento, spesso inciampano di fronte al codice del mondo reale, fallendo nel riconoscere proprio i pericoli che erano stati progettati per individuare.

Un team di ricercatori si è posto l'obiettivo di capire perché esista questo divario. Hanno costruito un nuovo strumento chiamato WEAVE, che funge da rigoroso campo di prova per questi algoritmi di rilevamento della sicurezza. Invece di limitarsi a controllare se un modello ottiene la risposta corretta, WEAVE utilizza una tecnica chiamata intelligenza artificiale spiegabile per guardare dentro il processo decisionale del modello. Chiede al modello di mostrare il proprio lavoro, rivelando esattamente quali parti del codice sta osservando quando decide che una funzione è pericolosa. I ricercatori hanno testato i tre metodi più avanzati attualmente disponibili, fornendo loro una vasta collezione appena assemblata di oltre diecimila funzioni Java da cui imparare. Hanno poi chiesto ai modelli di classificare nuovo codice, non visto, e hanno osservato attentamente se il loro ragionamento rimanesse coerente.

L'indagine ha rivelato una verità sorprendente e preoccupante. I modelli non stavano imparando la logica profonda e strutturale del codice, come ciò che una funzione faccia realmente o come manipoli i dati. Al contrario, avevano imparato a fare affidamento quasi interamente su indizi superficiali, nello specifico i nomi delle funzioni e i nomi delle variabili che utilizzano. Durante l'addestramento, i modelli avevano trovato schemi nei nomi che correlando con i rischi di sicurezza. Tuttavia, quando i ricercatori hanno presentato loro nuovo codice in cui i nomi erano diversi o il contesto era cambiato, il ragionamento dei modelli è crollato. Le caratteristiche che i modelli avevano ritenuto affidabili per indicare un pericolo iniziarono improvvisamente a indicare l'opposto, o la loro importanza mutò drasticamente. In quasi ogni caso, i modelli hanno cambiato idea su ciò che fosse importante, non perché avessero imparato qualcosa di nuovo, ma perché i particolari scorciatoie su cui facevano affidamento non esistevano più nel nuovo ambiente.

Lo studio ha anche testato se la semplice scelta di un algoritmo computazionale più potente potesse risolvere il problema. I ricercatori hanno utilizzato un sistema automatizzato per cercare tra migliaia di diverse configurazioni di modelli al fine di trovare la migliore possibile. Sebbene questi nuovi modelli si siano comportati leggermente meglio nei test standard, soffrivano esattamente dello stesso difetto. Continuavano a ignorare il comportamento effettivo del codice e continuavano a fare affidamento sulle fragili scorciatoie basate sui nomi. Questa scoperta ha escluso l'idea che il fallimento fosse dovuto a una scarsa selezione del modello; il problema non era il cervello del sistema, ma gli occhi con cui il sistema vedeva il codice. I ricercatori hanno concluso che il collo di bottiglia non risiede nell'intelligenza del machine learning, ma nell'ingegneria delle caratteristiche utilizzate per descrivere il codice. Finché questi sistemi verranno alimentati con descrizioni che si concentrano su nomi e dettagli superficiali, rimarranno fragili, incapaci di generalizzare alla realtà disordinata e diversificata dello sviluppo software.

Le implicazioni di questa scoperta vanno oltre il semplice miglioramento degli algoritmi. Suggeriscono che, affinché questi strumenti siano davvero affidabili, debbano essere istruiti a guardare la sostanza del codice piuttosto che le sue etichette. I ricercatori hanno scoperto che le parti del codice che descrivono il comportamento effettivo, come la sequenza di operazioni all'interno di una funzione, venivano quasi del tutto ignorate dai modelli. Questo è un punto cieco critico, perché una funzione malevola può facilmente cambiare nome per nascondersi da un rilevatore che legge solo le etichette, mentre il suo comportamento pericoloso rimane invariato. Lo studio evidenzia che l'approccio attuale per insegnare ai computer la sicurezza è fondamentalmente disallineato rispetto alla natura del compito. Per costruire strumenti che possano davvero proteggere il software, l'attenzione deve spostarsi dal trovare modi migliori per classificare i nomi allo sviluppo di modi per comprendere la logica effettiva e il flusso dei programmi stessi. Senza questo cambiamento, anche i modelli di machine learning più sofisticati rimarranno vulnerabili al semplice trucco di rinominare una variabile.

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.

Prova Digest →