10 bug seriamente epici di software per computer
La maggior parte dei bug del software sono piccoli inconvenienti che possono essere superati o aggirati dall'utente - ma ci sono alcuni casi degni di nota in cui un semplice errore ha colpito milioni, in un modo o nell'altro, e persino causato ferite e perdite di vite umane.
Il software è scritto dagli esseri umani - e ogni pezzo di software ha quindi bug, o "caratteristiche non documentate" come potrebbero chiamarli i venditori. Cioè, il software fa qualcosa che non dovrebbe, o non fa qualcosa che dovrebbe. Questi bug possono essere dovuti a cattiva progettazione, incomprensione di un problema o semplicemente semplice errore umano - proprio come un errore di battitura in un libro. Tuttavia, mentre un libro viene letto da un umano che di solito può dedurre il significato di una parola errata, il software viene letto dai computer, che sono relativamente stupidi e fanno solo ciò che viene loro detto.
Ecco dieci casi in cui le conseguenze di questi bug erano enormi, in un modo o nell'altro:
10Therac-25 1985-1987
Therac-25 era una macchina per la somministrazione di radioterapia, in genere per il trattamento di pazienti affetti da cancro. Aveva due modalità di funzionamento. Il primo consisteva in un fascio di elettroni indirizzato direttamente al paziente in piccole dosi per un breve lasso di tempo. La seconda puntava il fascio di elettroni ad alti livelli di energia a un "bersaglio" di metallo per primo, il che convertiva essenzialmente il raggio in raggi X che venivano poi passati al paziente.
Nei precedenti modelli della macchina Therac, per questa seconda modalità di funzionamento, esistevano casseforti di sicurezza fisiche per garantire che questo obiettivo fosse posizionato in quanto, senza di esso, fasci di energia molto elevati potrebbero essere erroneamente attivati direttamente nel paziente. Nel nuovo modello, questi fail-safe fisici sono stati sostituiti da quelli software.
Sfortunatamente, c'era un bug nel software: a volte si verificava un "overflow aritmetico" durante i controlli automatici di sicurezza. Ciò significa sostanzialmente che il sistema utilizzava un numero all'interno dei suoi calcoli interni che era troppo grande per poterlo gestire. Se, in questo preciso istante, l'operatore stava configurando la macchina, i controlli di sicurezza fallirebbero e il bersaglio metallico non verrebbe spostato in posizione. Il risultato è stato che fasci 100 volte più alti della dose prevista sarebbero stati sparati in un paziente, dando loro avvelenamento da radiazioni. Ciò è accaduto in 6 occasioni note, provocando la successiva morte di 4 pazienti.
9 Glitch "Corrupted-Blood" di World of Warcraft il 13 settembre 2005World of Warcraft (WoW), un gioco per computer online creato da Blizzard Entertainment, ha avuto un imbarazzante problema tecnico a seguito di un aggiornamento del loro gioco il 13 settembre 2005, provocando la morte di massa. A seguito di un aggiornamento del contenuto del gioco, è stato introdotto un nuovo personaggio nemico, Hakkar, che aveva la capacità di infliggere una malattia, denominata Blood Corrupted, ai personaggi che giocavano per svuotarsi della loro salute per un periodo di tempo. Questa malattia poteva essere trasmessa da giocatore a giocatore, proprio come nel mondo reale, e aveva il potenziale per uccidere qualsiasi personaggio che la contrasse. Questo effetto era pensato per essere strettamente localizzato nell'area del gioco che Hakkar abitava.
Tuttavia, una cosa è stata trascurata: i giocatori sono stati in grado di teletrasportarsi in altre aree del gioco mentre sono ancora infetti e trasmettono la malattia ad altri - il che è esattamente quello che è successo. Non riesco a trovare cifre sul conteggio del corpo, ma intere città all'interno del mondo di gioco erano aree vietate, con cadaveri di giocatori morti che sparpagliavano per le strade. Fortunatamente, la morte del giocatore non è permanente in WoW e l'evento è stato presto terminato quando gli amministratori del gioco hanno ripristinato i server e applicato ulteriori aggiornamenti software. Particolarmente interessante è il modo in cui le reazioni dei giocatori nel gioco potrebbero riflettere da vicino le loro reazioni a un incidente simile nella vita reale.
Nord America Blackout 14 agosto 2003
Con circa 55 milioni di persone, principalmente negli Stati Uniti nordorientali, ma anche in Ontario Canada, questo è stato uno dei più grandi blackout della storia. È iniziato quando una centrale elettrica lungo la sponda meridionale del lago Erie, in Ohio, è andata offline a causa della forte domanda che ha messo sotto stress il resto della rete elettrica. Quando le linee elettriche sono sotto carico elettrico più pesante, si riscaldano, il che significa che il materiale che compone il cavo (di solito alluminio e acciaio) si espande. Diverse linee elettriche si sono appese più in basso mentre si espandevano e hanno catturato gli alberi, abbattendoli e sottoponendo il sistema a una pressione ancora maggiore. Ciò ha portato ad un effetto a cascata che alla fine ha ridotto la rete di alimentazione al 20% della produzione normale.
Mentre le cause di questo blackout non avevano nulla a che fare con un bug del software, avrebbe potuto essere evitato se non fosse stato per un bug del software nel sistema di allarme del centro di controllo. In quello che viene definito uno scenario di "condizione della competizione", due parti del sistema competevano sulla stessa risorsa e non erano in grado di risolvere il conflitto, il che ha causato il blocco del sistema di allarme e l'interruzione dell'elaborazione degli allarmi. Sfortunatamente, il sistema di allarme fallì "silenziosamente", il che significa che si ruppe, ma non informò nessuno che si fosse rotto. Ciò significava che non venivano forniti avvisi audio o visivi al personale della sala di controllo, che si affidava troppo a tali cose per la consapevolezza della situazione. Le conseguenze sono state ben segnalate e hanno lasciato molte aree senza energia per diversi giorni e hanno colpito l'industria, i servizi pubblici, la comunicazione. E 'stato anche accusato come almeno un fattore che ha contribuito a diverse morti.
7 USS Yorktown Incident, 21 settembre 1997Nel mondo dello sviluppo del software, ci sono diversi bug comunemente noti che i programmatori incontrano e devono soddisfare. Uno di questi esempi è il bug "divide per zero", in cui viene eseguito un calcolo che divide qualsiasi numero per zero.Un tale calcolo non è possibile risolvere, almeno non senza l'uso di matematica superiore, e la maggior parte del software - per tutto, dai super computer ai calcolatori tascabili - è stata scritta per tenere conto di questo scenario.
Con un certo imbarazzo, quindi, la USS Yorktown subì un completo fallimento del suo sistema di propulsione ed era morta nell'acqua per quasi 3 ore quando un membro dell'equipaggio digitò uno "0" nel sistema di gestione del database di bordo che era allora utilizzato in un calcolo di divisione. Il software è stato installato come parte di un'operazione più ampia per utilizzare i computer per ridurre l'energia necessaria per far funzionare alcune navi. Fortunatamente, la nave era impegnata in manovre al momento dell'incidente, piuttosto che dispiegata in un ambiente di combattimento, che avrebbe potuto avere conseguenze più gravi.
6Trans-Siberian Gas Pipeline Explosion 1982
Questo è un po 'allungato, e potrebbe non essere mai accaduto, ma - se è vero - è un esempio prominente di un bug di software introdotto deliberatamente che causa un grande incidente.
Durante la Guerra Fredda, quando i rapporti tra gli Stati Uniti e la Russia Sovietica erano un po 'gelidi, si dice che la Central Intelligence Agency avesse deliberatamente piazzato bug all'interno del software venduto da una società canadese - un software che era usato per controllare il gasdotto transiberiano . La CIA pensò che la Russia stava acquistando questo sistema tramite una società canadese come mezzo per ottenere segretamente la tecnologia degli Stati Uniti e che questa sarebbe l'occasione per dar loro da mangiare materiale difettoso.
Tali pratiche sono state successivamente citate nel "Dossier d'addio" declassificato, dove, tra l'altro, si sostiene che le turbine difettose sono state effettivamente utilizzate su un gasdotto. È stato affermato dall'ex segretario dell'Aeronautica, Thomas C. Reed, che sono stati introdotti una serie di bug in modo che il sistema avrebbe superato i test ma si sarebbe rotto durante l'uso effettivo. Le impostazioni per pompe e valvole sono state impostate per superare le pressioni che la condotta potrebbe resistere, il che ha portato a un'esplosione detta la più grande esplosione non nucleare mai registrata.
Queste affermazioni, tuttavia, sono state contraddette dal veterano del KGB, Anatoly Medetsky, che afferma che l'esplosione è stata causata da costruzioni sub-par piuttosto che da un deliberato sabotaggio. Qualunque sia la causa, non sono stati riportati incidenti noti in quanto l'esplosione è avvenuta in un'area molto remota.
Stanislav Petrov era l'ufficiale di servizio di un bunker segreto vicino a Mosca, responsabile del monitoraggio del sistema satellitare di allarme precoce sovietico. Poco dopo mezzanotte, hanno ricevuto l'allarme che gli Stati Uniti avevano lanciato cinque missili balistici intercontinentali Minuteman. Come parte della dottrina della distruzione mutuamente assicurata che è entrata in prevalenza durante la Guerra Fredda, la risposta a un attacco da parte di un potere sarebbe stata un attacco di vendetta da parte dell'altro.
Ciò significava che se l'attacco era autentico, dovevano rispondere rapidamente. Tuttavia, sembrava strano che gli Stati Uniti avrebbero attaccato con solo una manciata di testate: anche se avrebbero causato ingenti danni e perdite di vite umane, non sarebbe stato nemmeno sufficiente a spazzare via l'opposizione sovietica. Inoltre, le stazioni radar sul terreno non stavano rilevando alcun contatto, anche se questi non potevano rilevare oltre l'orizzonte a causa della curvatura della Terra, che avrebbe potuto spiegare il ritardo.
Un'altra considerazione è stata il sistema di allarme precoce stesso, che era noto per avere difetti e che era stato avviato rapidamente in servizio in primo luogo. Petrov ha soppesato tutti questi fattori e ha deciso di governare l'allarme come falso allarme. Anche se Petrov non ha avuto il dito sul pulsante della bomba atomica in quanto tale, se avesse trasmesso ai suoi superiori una raccomandazione sul fatto che considerassero reale l'attacco, avrebbe potuto condurre a una guerra nucleare a tutto campo. Che fosse basato sull'esperienza, sull'intuizione o solo sulla fortuna, la decisione di Petrov era quella giusta.
In seguito è stato stabilito che il software di rilevamento precoce aveva rilevato il riflesso del sole dalla cima delle nuvole e l'aveva mal interpretato come lancio di missili.
4Protezione contro la copia dannosa del CD di Sony
Ogni anno la guerra apparentemente infinita tra media e pirati fluisce e scorre. Non appena vengono scoperti nuovi modi di proteggere e distribuire in modo sicuro i media, vengono scoperti nuovi modi per aggirare e compromettere queste misure.
Qualcuno potrebbe obiettare che la Sony BGM ha fatto un passo avanti nel 2005, quando ha introdotto una nuova forma di protezione contro la copia su alcuni dei suoi CD audio. Quando vengono riprodotti utilizzando un computer Windows, questi CD installano un software chiamato "rootkit". Un rootkit è una forma di software che si insinua in un computer e altera alcuni processi fondamentali. Sebbene non sempre di natura dannosa, un rootkit viene spesso utilizzato per installare furtivamente software dannosi e difficili da rilevare (o rimuovere), come virus, trojan ecc. Nel caso di Sony BMG, l'obiettivo era controllare il modo in cui un computer Windows usato i CD di Sony per evitare di copiarli o convertirli in MP3, il che li aiuterebbe a ridurre la pirateria dei loro media.
Il rootkit ha raggiunto questo obiettivo, ma adottando misure per nascondersi dall'utente, ha consentito a virus e altri software dannosi di nascondersi insieme. L'implementazione poco ponderata e la crescente percezione che Sony BMG non avesse alcuna attività che manipolasse i PC degli utenti, significava che l'intero schema si era ritorto contro. Il risultato è stato il rootkit classificato come malware da molte società di sicurezza informatica, oltre a diverse cause legali e il richiamo di un prodotto dei CD offensivi.
3 Patriot Missile Bug, 25 febbraio 1991Durante l'operazione Desert Shield, l'esercito statunitense ha schierato il sistema missilistico Patriot come difesa contro aerei e missili - in questo caso i missili dell'Iraq Al Hussein (SCUD).Il software di tracciamento per il missile Patriot usa la velocità del suo bersaglio e il tempo corrente per predire dove sarà il bersaglio da un istante all'altro. Poiché vari target possono viaggiare a velocità fino a MACH 5, questi calcoli devono essere molto accurati.
A quel tempo, c'era un bug nel software di targeting - il che significava che nel tempo, l'orologio interno sarebbe "alla deriva" (molto simile a qualsiasi orologio) sempre più lontano dal tempo preciso più a lungo il sistema era rimasto in esecuzione. In realtà il bug era già noto e veniva semplicemente riparato riavviando regolarmente il sistema, e quindi reimpostando l'orologio di sistema.
Sfortunatamente, i responsabili non hanno capito chiaramente come "regolarmente" dovrebbero riavviare il sistema, e sono rimasti in funzione per 100 ore. Quando fu lanciato un missile iracheno, destinato a un aeroporto americano di Dhahran, in Arabia Saudita, fu rilevato dal sistema missilistico Patriot. Tuttavia, a questo punto, l'orologio interno si è svuotato di 0,34 di secondo, quindi quando ha cercato di calcolare il punto in cui il missile sarebbe stato il prossimo, stava osservando un'area del cielo a oltre mezzo chilometro di distanza dalla vera posizione dei missili. Prendeva per scontato che dopo tutto non vi era alcun missile nemico e aveva annullato l'intercettazione. Il missile proseguì fino a destinazione dove uccise 28 soldati e ne ferì altri 98.
2Millennium Bug
Il Millennium Bug, o Y2K, è il bug più conosciuto in questa lista e quello di cui molti di noi ricordano di aver sentito parlare al momento. Fondamentalmente, questo bug era il risultato della miopia combinata dei professionisti del computer nei decenni precedenti all'anno 2000. In molti sistemi informatici, due cifre erano usate per mostrare la data, ad es. 98 invece del 1998, una pratica che sembrava ragionevole e che i computer pre-datati da qualche tempo.
Molti non si aspettavano, tuttavia, che potesse esserci un problema quando la data passò oltre l'anno 2000. Usando i sistemi attuali, l'anno 2000 poteva essere rappresentato solo come "00", il che potrebbe confondere i computer nel pensare che significasse l'anno 1900 Una cosa del genere infrangerebbe qualsiasi calcolo che implicasse intervalli di anni che hanno attraversato il millennio. Ad esempio, potrebbe mostrare qualcuno nato nel 1920 e morente nel 2001 con meno 19 anni.
In risposta al problema, le aziende di software hanno aggiornato rapidamente i loro prodotti, che già controllavano praticamente tutto, dalle banche e dai libri paga ai computer degli ospedali e ai sistemi di biglietteria. Inoltre, in riconoscimento della sua natura mondiale, il Centro di cooperazione internazionale Y2K è stato creato nel febbraio 1999 per aiutare a coordinare il lavoro necessario per preparare il nuovo millennio tra governi e organizzazioni, laddove necessario. Alla fine, il nuovo anno passò senza troppi incidenti, oltre alla madre universale dei postumi della sbornia.
È difficile dire quanto di questo successo sia stato il risultato del lavoro svolto per alleviare il problema, o se il problema sia stato esagerato nei media in primo luogo - probabilmente un mix di entrambi.
1 Anno 2038
Sebbene sia passato il Y2K, non siamo ancora fuori dai guai. Non tutti i computer gestiscono le date nello stesso modo e molti computer basati sul sistema operativo UNIX gestiscono le date contando quanti secondi una data dal 01/01/1970. Ad esempio, la data 01/01/1980 è 315.532.800 secondi dopo il 01/01/1970. Questo numero è memorizzato su questi computer come un "intero con 32 bit con segno", che ha un limite di dimensione di 2147483647. Ciò significa in sostanza che può gestire solo date che sono fino a 2147483647 secondi dopo il 01/01/1970 - che ci porta solo fino al 19 gennaio 2038, dopo di che potremmo avere di nuovo problemi.
Ciò è particolarmente vero quando consideriamo che il software basato su UNIX è più comunemente usato in "sistemi embedded" piuttosto che in un PC domestico, ovvero sistemi che hanno uno scopo ben preciso strettamente correlato al loro hardware, come ad esempio software per linee di assemblaggio robotizzate , orologi digitali, router di rete, sistemi di sicurezza e così via.
Inoltre, qualcuno dovrà prendere in considerazione ciò che faremo il 1 ° gennaio 10000. Non io però.