Perché l'aggiunta di bug al software può renderlo più sicuro

Quando si tratta di tracciamento radar, una delle contromisure più efficaci è rilasciare una nuvola di strisce di alluminio o plastica metallizzata. Questi riflettono fortemente il radar e creano migliaia di bersagli, che inondano e confondono i ritorni del radar. Ciò confonde qualsiasi cosa cerchi di rintracciarti, come un missile a guida radar.





La maggior parte degli aerei e delle navi da guerra militari e molti missili balistici hanno sistemi di esca che includono la pula. E ora i ricercatori di cybersecurity stanno applicando la stessa idea al software.

L'idea è semplice in linea di principio. Il software contiene spesso bug, la maggior parte dei quali passa inosservata ai suoi creatori e agli utenti legittimi. Ma gli attori malintenzionati cercano attivamente questi bug in modo da poterli sfruttare per attacchi mirati. Il loro obiettivo è impadronirsi del computer o manipolarlo in altro modo.

Ma non tutti i bug sono uguali. Alcuni non possono essere sfruttati per scopi dannosi e non fanno niente di peggio che causare l'arresto anomalo di un programma. Questo può essere serio, ma esiste un'ampia classe di software, come i microservizi in background, progettata per gestire gli arresti anomali riavviando il software mentre l'utente non è più saggio. Questi bug sono molto meno gravi di quelli che consentono il controllo dannoso.



Ma distinguerli non è sempre semplice. Dopo che i programmatori dannosi trovano i bug, devono distinguere quelli che sono veramente pericolosi da quelli che sono relativamente benigni, e quel processo è generalmente difficile e richiede tempo.

Questa è la base per un nuovo approccio sviluppato da Zhenghao Hu e colleghi della New York University. Perché non riempire il codice ordinario con bug benigni come un modo per ingannare potenziali aggressori?

L'idea è di costringere gli aggressori a utilizzare le proprie risorse per trovare e testare bug che non saranno utili per loro. Hu e compagni chiamano queste esche cimici della pula, in analogia alle strisce di alluminio usate per ingannare gli operatori radar.



L'idea è solo l'ultima mossa in un gioco del gatto e del topo sempre più complesso che mette gli esperti di sicurezza contro gli aggressori. Negli ultimi anni, vari gruppi hanno sviluppato programmi che esplorano il codice, alla ricerca di vulnerabilità che un utente malintenzionato potrebbe sfruttare. Gli esperti di sicurezza utilizzano questo approccio per trovare e rimuovere queste vulnerabilità prima che il codice diventi pubblico, mentre gli aggressori dannosi utilizzano lo stesso approccio per trovare i bug che possono sfruttare.

Ma per i ricercatori di sicurezza, lo sviluppo di questi programmi è difficile e richiede in primo luogo che ci siano vulnerabilità nel software. Quindi i ricercatori hanno sviluppato un altro strumento che aggiunge automaticamente questi bug al software in modo che possano essere successivamente scoperti dal programma di ricerca delle vulnerabilità.

Si scopre che l'aggiunta di bug non è affatto semplice. Modifiche casuali al codice tendono a renderlo inutile, piuttosto che introdurre anomalie interessanti. Al contrario, il processo prevede l'esecuzione del codice con input diversi e il monitoraggio di ciò che accade a questi input mentre il codice avanza.



Questo processo cerca i punti nel programma in cui l'input non viene più utilizzato per prendere decisioni future. In tal caso, questo input morto può essere manipolato in modo dannoso per corrompere o sovraccaricare la memoria.

Il programma di rilevamento delle vulnerabilità rileva dove si trovano queste zone morte in modo che possano essere sfruttate in seguito.

Si scopre che questi potenziali bug sono comuni nel codice scritto in linguaggi come C e C++, che non hanno sistemi che controllano l'utilizzo della memoria.



Hu e co usano semplicemente questo approccio per aggiungere bug di danneggiamento della memoria in tutto il codice. In circostanze normali, questi bug sono benigni. Ma se trovati da un attore malintenzionato, possono essere sfruttati solo per mandare in crash il programma, non per qualcosa di più sinistro. Ecco perché agiscono come pula.

Gli aggressori che tentano di trovare e sfruttare bug nel software, con alta probabilità, troveranno un bug non sfruttabile posizionato intenzionalmente e sprecheranno risorse preziose nel tentativo di creare un exploit funzionante, affermano Hu e co.

Il team prosegue dimostrando che gli attuali processi per individuare potenziali bug vengono ingannati da questo approccio. Dimostriamo che la funzionalità del software non viene danneggiata e dimostriamo che i nostri bug sembrano sfruttabili per gli attuali strumenti di triage, dicono

Questo è un approccio interessante che ha il potenziale per sviare in modo significativo gli aggressori dannosi. Riteniamo che i bug di paglia possano fungere da deterrente efficace sia contro gli aggressori umani che contro i sistemi di ragionamento informatico automatizzati, affermano Hu e co.

Ma solleva anche alcune domande interessanti. Ad esempio, non esiste alcuna prova concreta che il triage dei bug per trovare quelli sfruttabili sia necessariamente difficile e dispendioso in termini di tempo. È teoricamente possibile che qualcuno, da qualche parte, abbia trovato un modo rapido per farlo.

Se si scopre che c'è un modo per distinguere facilmente i bug di paglia da quelli sfruttabili, allora questo approccio diventa meno prezioso. In effetti, Hu e co non tentano di nascondere o mascherare i loro bug. Ciò significa che attualmente contengono molti artefatti che gli aggressori potrebbero utilizzare per identificarli e ignorarli, dicono.

C'è anche una variazione molto piccola in questi bug iniettati. [Questo] potrebbe consentire a un utente malintenzionato di identificare i modelli nei bug che produciamo ed escludere quelli che corrispondono al modello, dicono.

Ma c'è un potenziale significativo davanti. L'idea di aggiungere bug invece di rimuoverli è un approccio deliziosamente malevolo al crimine informatico e che dovrebbe innescare alcune interessanti vie di ricerca futura.

Rif: arxiv.org/abs/1808.00659 : Chaff Bugs: scoraggiare gli aggressori rendendo il software più bugiardo

nascondere