Nome e qualifica del proponente del progetto: 
sb_p_1675966
Anno: 
2019
Abstract: 

A causa delle stringenti logiche di mercato la qualità del software che viene sviluppato per i nuovi smart-devices è bassa e spesso questi dispositivi espongono vulnerabilità che mettono a rischio la privacy, l'incolumità delle persone ed anche la resistenza ad attacchi cyber delle infrastrutture in cui vengono inseriti. Per questo motivo le aziende prima di inserire un nuovo device all'interno dei loro sistemi ne analizzano il software. Per proteggere la proprietà intellettuale dello sviluppatore spesso questo software è disponibile solo in formato binario ciò rende la sua analisi lunga e dispendiosa. Ottimizzare questo processo è un fattore chiave per lo sviluppo di sistemi sicuri.

Diversi lavori dimostrano come sfruttando tecniche di Natural Language Processing è possibile generare delle rappresentazioni vettoriali di funzioni binarie (embeddings) che permettono di ricercare vulnerabilità note all'interno di software binario, velocizzando così la sua analisi.

Tuttavia, i recenti sviluppi in campo NLP hanno portato ad applicazioni di traduzione e generazioni dei testi che fino a poco tempo fa erano impensabili. Partendo da questa constatazione, lo scopo principale di questo progetto è quello di definire nuove tecniche per la creazione di embeddings di funzioni binarie da applicare a nuovi problemi come la traduzione di codice binario in un linguaggio di più alto livello e la generazione automatica di nomi delle funzioni.

Inoltre, è difficile effettuare un confronto diretto tra gli approcci esistenti a causa della mancanza di un benchmark di riferimento. Un'altro obiettivo di questa proposta è quindi quello di creare un benchmark di riferimento pubblico cosa che è già pratica comune in campo NLP e Computer Vision.

Questi sviluppi potranno aprire la strada per nuove soluzioni che potranno semplificare e velocizzare il lavoro del reverse engineer rendendo così più semplice ed economica l'identificazione di vulnerabilità e criticità all'interno di smart devices.

ERC: 
PE6_5
PE6_11
Componenti gruppo di ricerca: 
sb_cp_is_2120014
Innovatività: 

Vista la notevole difficoltà nella comparazione dei diversi lavori, la creazione di un benchmark di riferimento è senza dubbio necessaria per un avanzamento dello stato dell'arte nel campo dell'analisi automatizzata dei programmi binari. Infatti, ad oggi ogni lavoro in questo campo viene validato su un dataset costruito appositamente spesso molto diverso dagli altri già esistenti in letteratura. Questo problema sperimentale introduce due criticità. La prima è la difficoltà di confrontarsi con i lavori già esistenti. Gli autori di un nuovo lavoro infatti a causa della mancanza di un benchmark di riferimento e al fatto che spesso il codice e i dati su cui è stato testato non viene reso pubblico si vedono costretti o a riprodurre da zero un determinato lavoro o a ricreare esattamente lo stesso dataset su cui è stato testato. Questo determina un overhead ed un rallentamento della ricerca che può essere evitato con la pubblicazione di un benchmark.

I nuovi risultati in campo NLP dimostrano che i recenti progressi permettono di avere applicazioni di traduzione o generazione di testo che fino a poco tempo fa erano impensabili. Sicuramente l'applicazione di queste nuove tecniche per la creazione di embedding di funzioni binarie può portare a soluzioni più precise per risolvere il problema della binary similarity e della semantic classification.
Attraverso queste nuove soluzioni sarà possibile sviluppare strumenti che facilitino l'analisi del codice binario rendendo più economico questo processo. Ad esempio potrà essere sviluppata un sistema che indica all'analista la semantica di ogni funzioni in un programma in modo da prioritizzare l'analisi delle funzioni semanticamente più significative. Inoltre, attraverso un database di funzioni già analizzate utilizzando la tecnica della binary similarity sarà possibili identificare quali funzioni sono già state analizzate e quindi evitare di analizzarle di nuove.

Attraverso le nuove soluzioni di embedding sarà anche possibile studiare nuovi problemi come la possibilità di generare automaticamente nomi per le funzioni binarie. Questo insieme alla caratterizzazione semantica semplifica di molto il processo di analisi, in quanto l'analista può condurre ed ottimizzare la sua analisi scartando le funzioni che risultano meno interessanti da analizzare.

Un'altra applicazione interessante potrebbe essere la possibilità di tradurre il codice assembly in un linguaggio intermedio in modo da poter facilmente convertire un codice binario sviluppato per una certa piattaforma (ad esempio X86) in un codice binario per un'altra piattaforma (ad esempio ARM). Questo problema è noto oggi come binary translation ed è di grande interesse in quanto permetterebbe la portabilità di programmi di cui non si dispone del sorgente il cui sviluppo su un'altra piattaforma richiederebbe un tempo troppo lungo ed uno scarso vantaggio economico.

Infine, un altro contributo fondamentale all'avanzamento dello stato dell'arte è la pubblicazione con licenza open source di tutto il software sviluppato nell'ambito di questo progetto di ricerca ciò permetterebbe sia di replicare facilmente e velocemente i risultati di questa ricerca sia di integrare i risultati di questo progetto all'interno di nuovi progetti.

Codice Bando: 
1675966

© Università degli Studi di Roma "La Sapienza" - Piazzale Aldo Moro 5, 00185 Roma