← Ultimi articoli
💻 computer science

Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution

Questo articolo propone una tecnica di analisi sicura basata sull'esecuzione simbolica che combina il precaricamento speculativo delle librerie con hook personalizzati per recuperare i grafi del flusso di controllo dal codice caricato dinamicamente, ottenendo miglioramenti significativi nel recupero di nodi e archi rispetto all'analisi statica, pur mantenendo una precisione e un richiamo del 100% nel rilevamento delle librerie.

Autori originali: Oleksandr Mostovyi

Pubblicato 2026-05-29
📖 5 min di lettura🧠 Approfondimento

Autori originali: Oleksandr Mostovyi

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

Immagina di cercare di capire come funziona una macchina complessa osservandone i progetti. Nel mondo del software informatico, questi progetti sono chiamati Grafici del Flusso di Controllo (CFG). Mappano ogni possibile percorso che un programma può intraprendere, mostrando dove va il codice successivamente.

Tuttavia, il software moderno (e i programmi dannosi come i malware) ha imparato un trucco per nascondere i propri progetti. Utilizzano una tecnica chiamata caricamento dinamico. Invece di avere tutte le proprie parti integrate nella macchina principale fin dall'inizio, mantengono alcune parti in una scatola chiusa a chiave e aprono solo la scatola e assemblano le parti mentre la macchina è in esecuzione.

Il Problema: Le Parti Invisibili

Gli strumenti tradizionali di analisi del software sono come architetti statici. Osservano i progetti sul tavolo e dicono: "Ecco il percorso". Ma se la macchina estrae una parte nascosta da una scatola mentre è in esecuzione, l'architetto statico non vede nulla. Vede uno spazio vuoto dove dovrebbe esserci una porta, quindi non può tracciare il percorso attraverso di essa.

Questo è un enorme problema per la sicurezza. Se non riesci a vedere i percorsi nascosti, non puoi dire se la macchina è sicura o se è una trappola.

La Soluzione: L'Investigatore "Speculativo"

L'autore di questo articolo, O. S. Mostovyi, ha costruito un nuovo tipo di strumento investigativo. Invece di guardare solo i progetti, questo strumento agisce come un simulatore che viaggia nel tempo.

Ecco come funziona, usando un'analogia semplice:

  1. La Simulazione (Esecuzione Simbolica): Immagina di avere un robot in grado di eseguire il software senza accenderlo realmente. Esegue il codice in un mondo "cosa succederebbe se". Non esegue le parti pericolose; le elabora solo mentalmente.
  2. L'Architettura a Due Livelli: Lo strumento ha due sensi speciali che lavorano insieme:
    • Livello 1 (Il Bibliotecario): Questa parte osserva il software chiedere nuove parti. Quando il software dice: "Ho bisogno di una libreria dalla rete" o "Ho bisogno di un file da una posizione di memoria nascosta", il Bibliotecario intercetta la richiesta. Anche se il software dice che il nome del file è cifrato o offuscato, lo strumento utilizza la matematica per capire quale sia effettivamente il file. Quindi carica "speculativamente" quel file nella simulazione in modo che il robot possa vederlo.
    • Livello 2 (Il Vigile Urbano): Questa parte osserva le strade che il robot percorre. Quando il robot raggiunge un bivio dove la direzione dipende da una variabile nascosta (come un indirizzo segreto), il Vigile Urbano controlla gli scenari "cosa succederebbe se" per vedere dove porta effettivamente quella strada.

Come Gestisce Trucchi Difficili

L'articolo spiega che gli attori malintenzionati usano molti modi per nascondere il loro processo di caricamento. Lo strumento è progettato per catturarli tutti:

  • Esecuzione Senza File: Alcuni programmi creano file che non esistono sul disco rigido, vivendo solo nella RAM. Lo strumento vede questi file invisibili.
  • Caricamento di Rete: Alcuni programmi scaricano il proprio codice da Internet mentre sono in esecuzione. Lo strumento simula questo download per vedere cosa arriva.
  • Nomi Cifrati: Se il programma dice "Carica file [codice cifrato]", lo strumento utilizza un risolutore matematico per decifrare il codice e trovare il vero nome del file.

I Risultati: Riempire la Mappa Mancante

Per testare questo, l'autore ha creato 16 diverse "trappole" (benchmark) che utilizzavano varie tecniche di nascondimento, da trucchi semplici a cifrature complesse e multistadio.

I risultati sono stati molto chiari:

  • Completezza: Lo strumento ha trovato 29,8% in più di percorsi (nodi) e 26,5% in più di connessioni (archi) rispetto agli strumenti statici tradizionali. Ha riempito gli spazi vuoti sulla mappa.
  • Accuratezza: È stato 100% accurato. Ogni volta che ha detto di aver trovato una libreria nascosta, aveva ragione. Non ha generato falsi allarmi.
  • Sicurezza: Poiché ha utilizzato la simulazione (esecuzione simbolica) invece di eseguire effettivamente il codice pericoloso, ha potuto analizzare questi programmi complessi in sicurezza senza il rischio che il malware fuggisse o causasse danni.

I Limiti

L'autore è onesto su ciò che lo strumento non può ancora fare:

  • È un Investigatore, Non un Mago: Può trovare le porte nascoste e tracciare i percorsi, ma non "annulla" automaticamente l'offuscamento complesso (l'oscuramento) per rendere il codice facile da leggere. Questo è ancora un problema difficile.
  • Limiti della Piattaforma: Attualmente funziona bene per i sistemi Linux (in particolare i file ELF) su certi chip informatici, ma non ancora per Windows o altri sistemi operativi.
  • Flussi Nascosti: Traccia i dati che si muovono esplicitamente, ma a volte perde i dati che si muovono in modi sottili e indiretti (come attraverso funzioni matematiche complesse).

Riepilogo

In breve, questo articolo presenta un nuovo metodo per mappare il software che nasconde le proprie parti fino alla sua esecuzione. Combinando un simulatore "cosa succederebbe se" con un sistema intelligente che intercetta e risolve le richieste di file nascoste, lo strumento può tracciare una mappa completa del comportamento del programma, rivelando percorsi che erano precedentemente invisibili agli analisti di sicurezza. Ha testato con successo questo metodo su 16 scenari diversi, dimostrando di poter trovare librerie nascoste con perfetta accuratezza.

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 →