Software che si risolve da solo

Martin Rinard , un professore di informatica al MIT, è imperturbabile riguardo all'obiettivo finale della ricerca del suo gruppo: fornire un programma immortale e invulnerabile. Nel lavoro presentato questo mese all'ACM Symposium on Operating Systems Principles a Big Sky, MT, un gruppo di ricercatori del MIT, guidato da Rinard e Michael Ernst, che ora è professore associato presso l'Università di Washington, ha sviluppato un software in grado di trovare e correggere alcuni tipi di bug del software in pochi minuti.





Secondo un rapporto pubblicato dalla società di sicurezza Symantec nel 2006, quando viene scoperta una vulnerabilità potenzialmente dannosa in un software, ci vuole in media quasi un mese prima che gli ingegneri umani trovino una soluzione e la trasferiscano ai sistemi interessati. I ricercatori, che hanno collaborato al lavoro con una startup chiamata Determina, sperano che il nuovo software, chiamato ClearView, acceleri questo processo, rendendo il software significativamente più resistente a guasti o attacchi.

ClearView funziona senza l'assistenza di esseri umani e senza accesso al codice sorgente sottostante di un programma (un insieme di istruzioni spesso proprietario che definisce come si comporterà un pezzo di software). Invece, il sistema monitora il comportamento di un binario: la forma che il programma assume per eseguire istruzioni sull'hardware di un computer.

Osservando il comportamento normale di un programma e assegnando una serie di regole, ClearView rileva determinati tipi di errori, in particolare quelli causati quando un utente malintenzionato inserisce un input dannoso in un programma. Quando qualcosa va storto, ClearView rileva l'anomalia e identifica le regole che sono state violate. Quindi presenta diverse potenziali patch progettate per costringere il software a seguire le regole violate. (Le patch vengono applicate direttamente al binario, ignorando il codice sorgente.) ClearView analizza queste possibilità per decidere quali hanno maggiori probabilità di funzionare, quindi installa i candidati migliori e ne verifica l'efficacia. Se vengono violate regole aggiuntive o se una patch provoca il crash del sistema, ClearView la rifiuta e ne prova un'altra.



ClearView è particolarmente efficace se installato su un gruppo di macchine che eseguono lo stesso software. In tal caso, ciò che ClearView apprende dagli errori su una macchina viene utilizzato per correggere tutte le altre. Poiché non richiede l'accesso al codice sorgente, Rinard afferma che ClearView potrebbe essere utilizzato per riparare programmi senza richiedere la collaborazione dell'azienda che ha realizzato il software o per riparare programmi che non vengono più mantenuti. Spera che il sistema possa prolungare la vita delle versioni precedenti del software, create da aziende che hanno cessato l'attività, oltre a proteggere il software attuale.

Per testare il sistema, i ricercatori hanno installato ClearView su un gruppo di computer che eseguono Firefox e hanno assunto un team indipendente per attaccare il browser Web. Il team ostile ha utilizzato 10 diversi metodi di attacco, ognuno dei quali prevedeva l'iniezione di codice dannoso in Firefox. ClearView ha bloccato con successo tutti i potenziali attacchi rilevando il comportamento scorretto e chiudendo l'applicazione prima che l'attacco potesse avere l'effetto previsto. La prima volta che ClearView incontra un exploit chiude il programma e inizia ad analizzare il binario, alla ricerca di una patch che potrebbe aver fermato l'errore.

Per sette degli approcci del team attaccante, ClearView ha creato patch che hanno corretto gli errori sottostanti. In tutti i casi, ha scartato le correzioni che hanno avuto effetti collaterali negativi. In media, ClearView ha fornito una patch di successo entro circa cinque minuti dalla sua prima esposizione a un attacco.



Ciò che questa ricerca ci porta a credere è che il software non è di per sé intrinsecamente fragile e fragile a causa di errori, afferma Rinard. È fragile e fragile perché le persone hanno paura di lasciare che il software continui se pensano che ci sia qualcosa di sbagliato in esso. Alcuni approcci di ingegneria del software, come l'elaborazione ignara dei guasti o l'elaborazione accettabile, condividono questa filosofia.

ClearView è davvero un ottimo punto di partenza, afferma Yuanyuan Zhou , professore di informatica presso l'Università della California, San Diego, che si occupa anche di affidabilità del software. Zhou loda il processo di valutazione utilizzato dai ricercatori per il progetto, ma afferma di voler vedere ClearView testato su una più ampia varietà di applicazioni.

Mantenere il sistema in funzione a tutti i costi sembra avere dei meriti, aggiunge David Pearce , docente di informatica presso la Victoria University di Wellington, Nuova Zelanda. Sottolinea che ClearView è progettato per applicare patch ogni volta che rileva che qualcosa è andato storto. Alcuni sistemi sono progettati per spegnersi quando viene rilevato un errore, ma se l'obiettivo di un utente malintenzionato è il sabotaggio, afferma Pearce, questo approccio fa il suo gioco.

Ma l'approccio di ClearView potrebbe causare qualche intoppo per l'utente, aggiunge Pearce. Ad esempio, se un browser Web aveva un bug che lo rendeva incapace di gestire gli URL oltre una certa lunghezza, la patch di ClearView potrebbe proteggere il sistema tagliando le estremità degli URL che erano troppo lunghi, impedendo al programma di fallire, ma anche prevenendo dal lavorare completamente. Tuttavia, tali problemi probabilmente non sarebbero del tutto dannosi. In genere sono solo gli hacker che tentano di sfruttare tali scappatoie, afferma Pearce, e sarebbero loro a soffrirne.

nascondere