Il vero problema della sicurezza del software siamo noi

Un collega ha recentemente descritto un divertente venerdì sera per suo figlio adolescente: stare a casa e chattare online. Ogni tanto c'è una festa in cui tutti i suoi amici parlano sui loro laptop.





Ci stiamo abituando sempre più a vivere in tali spazi virtuali, ma c'è un'importante distinzione da fare tra gli spazi virtuali e gli spazi fisici reali in cui camminiamo. Di solito ci aspettiamo di poter attraversare un ponte o entrare in un edificio senza che la struttura crolli. Non abbiamo quel tipo di fiducia con i programmi software.

Non ci crediate, potremmo, in un futuro non così lontano, vivere effettivamente in un mondo in cui il software non fallisce casualmente e in modo catastrofico. I nostri sistemi software potrebbero resistere agli attacchi. I nostri social media privati ​​e i dati sanitari possono essere visti solo da coloro che sono autorizzati a vederli. Tutto ciò di cui abbiamo bisogno sono le giuste correzioni.

Il problema con i software moderni è che stiamo costruendo i nostri grattacieli con gli stessi materiali e le stesse tecniche usate per costruire le capanne. Il software nasce come una raccolta di mattoni: procedure semplici, sequenze di comandi per calcoli, giochi e curiosità. Decenni dopo, abbiamo milioni di procedure che interagiscono tra loro su macchine interconnesse con accesso a tutti i tipi di informazioni segrete. Eppure stiamo ancora usando linguaggi e strumenti simili.



Se vogliamo che i nostri sistemi abbiano meno vulnerabilità, dobbiamo utilizzare materiali da costruzione migliori. I linguaggi che le persone usano oggi rendono troppo facile per il programmatore commettere errori e rendono troppo difficile rilevare gli errori.

Un modo migliore sarebbe utilizzare linguaggi che forniscano le garanzie di cui abbiamo bisogno. La vulnerabilità Heartbleed si è verificata perché qualcuno ha dimenticato di controllare che un pezzo di memoria finisse dove avrebbe dovuto. Questo potrebbe accadere solo in un linguaggio di programmazione in cui il programmatore è responsabile della gestione della memoria. Allora perché non utilizzare linguaggi che gestiscono automaticamente la memoria? Perché non fare in modo che i linguaggi di programmazione facciano il lavoro pesante?

Un altro modo sarebbe rendere il software più facile da analizzare. Facebook ha avuto così tanti problemi a dare un senso al software utilizzato che ha creato Hack and Flow, versioni annotate di PHP e Javascript, per rendere i due linguaggi più comprensibili.



Questo è in parte colpa nostra. Troviamo divertente la vita online, quindi tendiamo a lasciare che i siti facciano quello che vogliono con i nostri dati personali. Le aziende di software rispondono sfornando nuove funzionalità il più rapidamente possibile, utilizzando i materiali e gli strumenti più convenienti a scapito della sicurezza.

Il cambiamento non accadrà finché non chiediamo che accada. Il nostro software potrebbe essere ben costruito e affidabile come i nostri edifici. Per fare in modo che ciò accada, dobbiamo tutti valutare la solidità tecnica rispetto alla novità. Sta a noi rendere la vita online tanto sicura quanto divertente.

Jean Yang è un assistente professore di informatica alla Carnegie Mellon University e cofondatore di Cybersecurity Factory, un acceleratore incentrato sulla sicurezza del software.



nascondere