10 storie informatiche dell’errore, anzi dell’ORRORE
Articolo speciale di Halloween
L’articolo di oggi è un po’ speciale perché è Halloween, la festa che caratterizza i giorni a cavallo tra ottobre e novembre e che, nella tradizione popolare, è una festa molto ironica e trasgressiva.
Allora, siccome ironici e trasgressivi lo siamo un pochino anche noi, per l’occasione abbiamo pensato di scrivere questo articolo per raccontarti alcune storie dell’errore, anzi dell’ORRORE, che riguardano il mondo dell’informatica.
Stiamo parlando di dieci “casi storici” molto gravi in cui un errore di programmazione ha provocato autentici disastri che hanno fatto perdere molti soldi e la reputazione a chi li ha commessi. E, nell’ultimo caso, purtroppo anche vite umane.
Si tratta di casi più o meno noti che condividono tutti un’unica morale: l’errore di programmazione è sempre dietro l’angolo perché nessun progetto o software – per quanto l’impegno nel realizzarlo sia lodevole – è infallibile.
Lo abbiamo ricordato nell’ultimo articolo e lo ribadiamo anche oggi: programmare richiede uno sforzo intellettuale considerevole, oltre che risorse tecnologiche ed economiche adeguate. Nel nostro piccolo, qui a ESSE I facciamo del nostro meglio per ridurre il rischio di errori. Ad esempio, prima di rilasciare un nuovo software eseguiamo molti test. La nostra filosofia, d’altronde, è l’armonia, valore che proviamo ad applicare giornalmente sia quando ci relazioniamo con i nostri stakeholder sia nell’approccio al coding. Perché non basta che un software sia bello, deve anche funzionare bene. Per noi molto si gioca sul giusto equilibrio tra questi due aspetti.
Ma oggi accantoniamo l’armonia! Il nostro motto sarà “horror, not just bits”.
Pronto allora per questo breve ma pauroso viaggio nel mondo dei fallimenti informatici?
1) Errore del “Pentium FDIV”
Nel 1994 Intel, leader mondiale di microprocessori, rilasciò una versione difettosa dei suoi primi processori (con clock fino a 100 MHz) appartenenti alla linea Pentium. In pratica, produsse e distribuì migliaia di esemplari che generavano risultati di calcolo errati in alcune operazioni di divisione a virgola mobile.
Il fatto curioso è che l’errore non fu scoperto da Intel, ma da un professore di matematica di un liceo americano (prof. Nicely) durante una ricerca sui numeri primi e sulla "costante di Brun".
Un errore che costò all’azienda molti soldi (quasi 500 milioni di dollari) in termini di richiami e sostituzioni di chip.
(fonte: Wikipedia)
2) I fallimenti dei progetti Ariane 4 e Ariane 5
A parte il caso Intel, nel secolo scorso gli “orrori informatici” più popolari si riferiscono al settore aerospaziale. Un po’ perché internet (quindi il problema “sicurezza”) non era ancora decollato, un po’ per la rilevanza mediatica di tutto ciò che riguarda lo spazio, un po’ per le enormi risorse (anche economiche) investite in questo tipo di progetti. Questa e la prossima "storia dell’orrore" che leggerai sono infatti “spaziali”.
I primi due casi sono avvenuti nel 1996 e riguardano il progetto europeo Ariane.
Il primo grave “orrore” avvenne durante il lancio del lanciatore Ariane 4 e fu causato da un’eccezione di divisione per zero nel software di guida che portò all’interruzione del volo. Un bug che causò la perdita di quattro satelliti e milioni di dollari di danni.
Ma il fallimento più grave fu il successivo, dell’11 giugno 1996, quando il volo inaugurale del lanciatore Ariane 5 si concluse con un disastro poco dopo il decollo. Anche in questo caso, il motivo fu un errore di coding nel software di controllo di volo che tentò di convertire dei dati da 64 bit a 16 bit, causando un’eccezione aritmetica e il crash del sistema di guida.
L’incidente distrusse il lanciatore e i satelliti a bordo, causando ingenti perdite finanziarie.
(fonti: Wikipedia, ESA)
3) Errori di Mars Pathfinder e della sonda Mars Climate Orbiter
Appena un anno dopo i disastri di Ariane 4 e 5, durante la missione Mars Pathfinder della NASA, un errore di conversione delle unità tra il sistema metrico e quello imperiale portò al fallimento del modulo di atterraggio. Questo ennesimo errore dimostrò l’importanza della coerenza nelle unità di misura quando si lavora su missioni spaziali.
Sembra una barzelletta, ma nonostante la presa di coscienza conseguente all’errore di Mars Pathfinder, appena due anni dopo la NASA perse anche la sonda Mars Climate Orbiter a causa dello stesso errore di conversione delle unità di misura. Questo bug non risolto in tempo portò a una distanza troppo vicina a Marte durante l’ingresso nell’orbita marziana, provocando la distruzione della sonda.
(fonte: Wikipedia)
4) Il millennium bug
Chi ha superato gli anta ricorderà sicuramente il “millennium bug”.
Alla fine degli anni ’90 si diffuse l’ansia dell’errore Y2K, un problema dovuto al fatto che molti sistemi informatici nel secolo scorso utilizzavano date a due cifre per rappresentare l’anno (per risparmiare memoria, si penserà che fosse folle, ma a suo tempo lo spazio di memorizzazione e archiviazione dei dati era ridottissimo) e si temeva che questo avrebbe causato problemi quando l’anno fosse passato da “99” a “00”.
Gli sforzi di correzione e la migrazione dei sistemi hanno impiegato enormi risorse: si stima infatti che il costo di correzione sia stato tra i 200 e i 600 miliardi di dollari, rendendo il millenium bug probabilmente il bug più costoso della storia.
(fonte: Wikipedia)
5) Incidente di Skype
Nel 2007 un incidente informatico avvenne quando un bug del software di Skype (non ancora controllato da Microsoft, che lo acquistò nel 2011) causò un’interruzione del servizio a livello globale, rendendo impossibile effettuare chiamate e inviare messaggi per molte ore. Skype in quegli anni era leader incontrastato nel settore delle videochiamate, di conseguenza il danno di immagine fu significativo.
Questo bug mise in evidenza la dipendenza dai servizi di comunicazione basati su software e la necessità, da quel momento in poi, di maggiore robustezza e resilienza.
(fonte: The Guardian)
6) Crollo di Knight Capital Group
La Knight Capital Group, un’importante società di trading ad alta frequenza, subì ingenti perdite finanziarie a causa di un incredibile errore software.
Il primo agosto del 2012, un aggiornamento incompleto e non testato fu implementato sul sistema di trading della società, causando l’esecuzione di migliaia di ordini errati e portando a perdite di circa 440 milioni di dollari in meno di un’ora.
L’errore fu un chiaro esempio dei rischi associati al trading ad alta frequenza e dell’importanza di testare rigorosamente il software anche in ambito finanziario.
(fonte: Wikipedia)
7) Errore di Heartbleed
Quello di Heartbleed è un grave e famoso errore di programmazione che fu scoperto nel 2014 in OpenSSL, una libreria ampiamente utilizzata per la crittografia dei dati su internet. Questo bug di sicurezza permise a potenziali aggressori di accedere a informazioni riservate, come chiavi di crittografia e dati utente, senza lasciare traccia.
L’errore ebbe un impatto significativo sulla sicurezza di molte applicazioni web e di servizi online.
(fonte: Wikipedia)
8) Errore di WannaCry
WannaCry fu un attacco avvenuto nel 2017 di tipo “ransomware”, ovvero in grado di chiedere un riscatto economico alle vittime (solitamente in criptovalute), perpetrato su scala globale sfruttando una vulnerabilità, quindi un errore di coding, di Windows precedentemente svelata.
Infatti, molti sistemi non avevano applicato l’aggiornamento critico di sicurezza, cosa che permise a WannaCry di diffondersi rapidamente, causando danni finanziari e bloccando molti computer in tutto il mondo.
(fonte: Wikipedia)
9) Errore di Google+
Non tutti sanno o ricordano che uno dei possibili motivi per cui Google+ – il social di Google – fu ritirato è un bug informatico che nel 2018 aveva consentito agli sviluppatori di accedere in modo improprio ai dati degli utenti. Anziché divulgare la vulnerabilità, Google scelse di non rendere pubblico l’errore fino a quando non fu scoperto da terzi.
Questo, appunto, portò alla chiusura anticipata di Google+ e a indagini sulla gestione della vulnerabilità.
(fonte: Wikipedia)
10) Errore di Boeing 737 Max
Gli incidenti del 2018 e 2019 di due aerei Boeing 737 Max (Lion Air e Ethiopian Airlines) furono attribuiti a un errore di progettazione del software di controllo di volo MCAS. Questo errore causò la perdita di entrambi gli aerei e, purtroppo, la morte di tutti coloro che erano a bordo.
I due tragici disastri aerei e le relative questioni informatiche e legali portarono a una revisione completa del sistema MCAS, oltre a sollevare gravi preoccupazioni sulla sicurezza aerea.
(fonte: Wikipedia)
Come avrai letto e, ci auguriamo, compreso, programmare è un’attività che comporta una certa responsabilità. Una responsabilità che è tanto più grande quanto più è importante l’ambito in cui il software “gira”.
Si pensi al settore medico o della sicurezza, ad esempio. O, come abbiamo visto, a quello aeronautico.
Ma, specie se leggerai questo articolo la sera di Halloween, non ci va di farti la paternale. Vogliamo solo ricordarti l’importanza della qualità del software e della pianificazione accurata dei test.
Va detto che sebbene le “storie dell’orrore informatico” che ti abbiamo raccontato siano tragiche, e soprattutto nell’ultimo caso molto tristi, un aspetto positivo almeno ce l’hanno: questi bug hanno portato enormi miglioramenti nelle pratiche di sviluppo e nella gestione del software per prevenire futuri incidenti simili.
D’altronde vale il detto “sbagliando si impara”. Ma occhio a non esagerare!
E, per chi ci legge tra il 31 ottobre e l'1 novembre... felice Halloween!
(immagine di copertina: Midjourney)