P2Patch trova bypass e rafforza le riparazioni delle vulnerabilità
In parole semplici
P2Patch è un sistema che ripara le vulnerabilità del software. Un agente software trova un esempio eseguibile del difetto, un altro modifica il programma e un arbitro controlla tramite l'esecuzione se quell'esempio funziona ancora.
Il primo esempio diventa un requisito per la riparazione. Poi, il sistema cerca nel programma modificato un altro modo per sfruttare lo stesso difetto.
In 41 delle 101 riparazioni eseguite su C/C++ e Java, ha trovato un bypass confermato dopo che la patch aveva bloccato l'esempio originale. Questo test mostra perché bloccare un solo esempio può lasciare aperto un altro percorso.
La ricerca
Come possono i valutatori capire se una riparazione software chiude la vulnerabilità segnalata invece di bloccare soltanto l'esempio usato per guidarla?
Spesso la stessa prova che guida la riparazione viene usata anche per valutarne il successo; superare un solo test può quindi nascondere un altro percorso che sfrutta lo stesso difetto.
P2Patch trasforma gli attacchi confermati contro una patch in nuovi requisiti di riparazione, poi verifica il risultato con test d'attacco indipendenti.
I ricercatori hanno confrontato P2Patch con la riparazione in un solo passaggio a partire dalla stessa segnalazione, senza un esempio d'attacco eseguibile né la successiva ricerca di bypass. Per ogni progetto hanno misurato la quota di test d'attacco conclusivi, tenuti da parte, bloccati dalla patch; poi hanno calcolato la media tra i progetti.
Nei test bloccati dalla correzione ufficiale, le medie sono state 0.847 per P2Patch e 0.781 per la riparazione in un solo passaggio, considerando 101 casi.
Nei test che si riproducono anche dopo la correzione ufficiale, le medie sono state 0.625 e 0.421 nei 40 casi con suite di questo tipo. L'orchestratore ha valutato gli esiti delle esecuzioni, mentre i ricercatori hanno calcolato le medie.
I due gruppi di test mostrano una maggiore copertura misurata sia sui percorsi chiusi dalla correzione ufficiale sia sui percorsi candidati che essa lascia aperti.
La ricerca degli attacchi ha un budget fisso e le suite di test, scritte indipendentemente, coprono percorsi selezionati, non l'intero spazio degli input. Perciò, una prova stabile o una copertura misurata elevata non dimostrano che una patch sia priva di vulnerabilità.
Analisi
Dettagli
- Autori del paper originale
- Mohsen Iranmanesh, Sina Moradi Sabet, Sina Marefat, Ali Javidi Ghasr, Maxime Newman Nereyabagabo
- Inviato ad arXiv
- Licenza
- arXiv non-exclusive