10 alvorligt episke computer software bugs
Størstedelen af software bugs er små ulemper, der kan overvindes eller arbejdes rundt af brugeren - men der er nogle bemærkelsesværdige tilfælde, hvor en simpel fejl har ramt millioner i en eller anden grad og endda forårsaget skade og tab af liv.
Softwaren er skrevet af mennesker - og hvert stykke software har derfor fejl eller "undocumented features" som en sælger kan kalde dem. Det vil sige, softwaren gør noget, det ikke burde, eller gør ikke noget, det burde. Disse fejl kan skyldes dårlig design, misforståelse af et problem eller bare simpel menneskelig fejl - ligesom en skrivefelt i en bog. Men mens en bog læses af et menneske, der normalt kan aflede betydningen af et fejlagtigt ord, læses software af computere, som er forholdsvis dumme og vil kun gøre det, de bliver fortalt.
Her er ti tilfælde, hvor konsekvenserne af disse fejl var enorme på en eller anden måde:
10Therac-25 1985-1987
Therac-25 var en maskine til administration af strålebehandling, generelt til behandling af kræftpatienter. Den havde to driftsformer. Den første bestod af en elektronstråle rettet direkte til patienten i små doser i en kort periode. Den anden rettede elektronstrålen på høje energiniveauer ved et metalmål først, hvilket i det væsentlige ville omdanne strålen til røntgenstråler, som derefter blev sendt ind i patienten.
I tidligere modeller af Therac-maskine var der for denne anden driftstilstand fysiske fejlkasser for at sikre, at dette mål var på plads, uden at meget høje energistråler kunne fejlagtigt brændes direkte ind i patienten. I den nye model blev disse fysiske fejlkasser erstattet af software.
Der var desværre en fejl i softwaren: en "aritmetisk overløb" opstod undertiden under automatisk sikkerhedskontrol. Dette betyder i grunden, at systemet anvender et nummer inden for sine interne beregninger, der var for stort til at kunne håndtere. Hvis operatøren på dette præcise tidspunkt konfigurerede maskinen, ville sikkerhedskontrollen mislykkes, og metalmålet ville ikke flyttes på plads. Resultatet var at bjælker 100 gange højere end den tilsigtede dosis ville blive fyret ind i en patient, hvilket gav dem strålingsforgiftning. Dette skete ved 6 kendte lejligheder, hvilket forårsagede den senere død af 4 patienter.
9 World of Warcraft "Corrupted-Blood" Glitch 13. september 2005Den enormt succesrige World of Warcraft (WoW), et online computerspil skabt af Blizzard Entertainment, led en pinlig fejl efter en opdatering til deres spil den 13. september 2005 - forårsager masse (fiktiv) død. Efter en opdatering af spilindholdet blev der introduceret en ny fjende karakter, Hakkar, som havde evnen til at påføre en sygdom, kaldet korrupt blod, på de spillende tegn, der ville dræne deres helbred over en periode. Denne sygdom kunne overføres fra spiller til spiller, ligesom i den virkelige verden, og havde potentialet til at dræbe enhver karakter, der kontraherede den. Denne effekt var ment at være strengt lokaliseret til området i det spil, som Hakkar beboede.
En ting blev dog overset: spillerne kunne teleportere til andre områder af spillet, mens de stadig var inficerede og overføre sygdommen til andre - hvilket er præcis, hvad der skete. Jeg kan ikke finde nogen tal på kropstællingen, men hele byerne i spilverdenen var ingen steder, hvor døde spillerens lig strækker sig i gaderne. Heldigvis er spillerdød ikke permanent i WoW, og begivenheden var snart forbi, da spillets administratorer nulstillede serverne og anvendte yderligere softwareopdateringer. Særligt interessant er den måde spillere reaktioner i spillet kunne afspejle deres reaktioner på en lignende virkelighed.
Nordamerikanske Blackout 14. august 2003
Påvirkningen af omkring 55 millioner mennesker, hovedsagelig i det nordøstlige USA, men også Ontario Canada, var en af de største strømforstyrrelser i historien. Det startede, da et kraftværk langs den sydlige del af Lake Erie, Ohio gik offline på grund af stor efterspørgsel, som satte resten af kraftværket under større stress. Når kraftledningerne er under tungere elektrisk belastning, opvarmer de op, hvilket betyder, at materialet der udgør kablet (normalt aluminium og stål) udvides. Flere kraftledninger hang lavere, da de ekspanderede og fangede træer, bringer dem ned og satte systemet under endnu større pres. Dette førte til en cascading effekt, der til sidst reducerede kraftværket til 20% af normal udgang.
Selvom årsagerne til denne blackout ikke var noget at gøre med en softwarefejl, kunne det have været afværget, hvis det ikke var en softwarefejl i alarmcentralen. I det såkaldte 'racebetingelsesscenario' konkurrerede to dele af systemet om samme ressource og kunne ikke løse konflikten, hvilket fik alarmsystemet til at fryse og stoppe behandling af advarsler. Desværre mislykkedes alarmsystemet 'stille', hvilket betyder, at det brød, men meddelte ikke nogen, at det var brudt. Dette betød, at der ikke var lyd- eller visuelle advarsler til rådighed for styring af rumpersonalet, som overførte sådanne ting til situationsbevidsthed. Eftervirkningen blev godt rapporteret og efterladt mange områder uden strøm i flere dage og berørt industri, forsyningsselskaber, kommunikation. Det blev også skylden som mindst en bidragende faktor i flere dødsfald.
7 USS Yorktown Incident 21. september 1997I verden af softwareudvikling er der flere almindeligt kendte fejl, som programmører møder og skal tage højde for. Et sådant eksempel er "divide by zero" bug, hvor der udføres en beregning, der deler et tal med nul.En sådan beregning er ikke mulig at løse, i det mindste ikke uden at bruge højere matematik, og de fleste software - alt fra supercomputere til lommekalkulatorer - er skrevet for at tage højde for dette scenario.
Det var så lidt pinligt, at USS Yorktown havde et fuldstændigt fiasko i fremdrivningssystemet og var død i vandet i næsten 3 timer, da et besætningsmedlem skrev en "0" i det indbyggede database management system, som så var bruges i en division beregning. Softwaren blev installeret som en del af en bredere drift for at bruge computere til at reducere den krævede maskine til at køre nogle skibe. Heldigvis var skibet involveret i manøvrer på tidspunktet for hændelsen, snarere end indsat i et kampmiljø, hvilket kunne have haft alvorligere konsekvenser.
6Trans-Siberian Gas Pipeline Explosion 1982
Denne er lidt af en strækning, og kan aldrig være sket, men - hvis det er sandt - er det et fremtrædende eksempel på en bevidst introduceret softwarefejl, der forårsager en stor hændelse.
Under den kolde krig, da forholdet mellem USA og Sovjet-Rusland var lidt frostigt, oplyser Central Intelligence Agency om bevidst at placere fejl indenfor software, der sælges af et canadisk selskab - software, der blev brugt til at kontrollere den trans-siberiske gasledning . CIA troede, at Rusland købte dette system via et canadisk selskab som et middel til skjult at opnå amerikansk teknologi, og at dette ville være en mulighed for at fodre dem defekt materiale.
Sådanne fremgangsmåder blev senere henvist til i det afklassificerede "Farvel Dossier", hvor det blandt andet påstås, at defekte turbiner faktisk blev brugt på en gasrørledning. Det hævdes af den tidligere luftvåbenminister Thomas C Reed, at der blev introduceret en række bugs, således at systemet ville bestå test, men bryde under selve brugen. Indstillinger for pumper og ventiler blev sat til at overstige det tryk, som rørledningen kunne modstå, hvilket førte til en eksplosion, der siges at være den største ikke-nukleare eksplosion, der nogensinde er registreret.
Disse påstande er imidlertid blevet modsagt af KGB-veteranen Anatoly Medetsky, der hævder, at eksplosionen skyldtes underparametre i stedet for bevidst sabotage. Uanset årsagen blev der ikke rapporteret om kendte dødsfald, da eksplosionen opstod i et meget fjerntliggende område.
Stanislav Petrov var toldofficer for en hemmelig bunker i nærheden af Moskva, der var ansvarlig for overvågningen af det sovjetiske tidlige varslings satellitsystem. Lige efter midnat fik de en advarsel om, at USA havde lanceret fem Minuteman-interkontinentale ballistiske missiler. Som en del af den gensidigt sikrede ødelæggelsesdoktrin, der kom til prævalens under den kolde krig, ville svaret på et angreb fra en magt være et hævn angreb af den anden.
Dette betød, at hvis angrebet var ægte, skulle de reagere hurtigt. Det var dog mærkeligt, at USA ville angribe med bare en håndfuld warheads. Selv om de ville forårsage massiv skade og tab af liv, ville det ikke være lige så stort nok til at udrydde den sovjetiske modstand. Også radarstationerne på jorden optog ikke nogen kontakter, selv om disse ikke kunne opdage ud over horisonten på grund af jordens krumning, hvilket kunne have forklaret forsinkelsen.
En anden overvejelse var selve varslingssystemet selv, som var kendt for at have fejl og var blevet hastet i drift i første omgang. Petrov vejede alle disse faktorer og besluttede at styre advarslen som en falsk alarm. Selvom Petrov ikke havde sin finger på nuke-knappen som sådan, havde han sendt en henstilling til sine overordnede, at de tager angrebet som rigtige, det kunne have ført til all-out atomkrig. Uanset om det var baseret på erfaring, intuition eller held og lykke, var Petrovs beslutning den rigtige.
Det blev senere fastslået, at den tidlige detektionssoftware havde hentet solens refleksion fra toppen af skyerne og fejlfortolket det som missilstarter.
4Sony CD skadelig kopibeskyttelse
Den tilsyneladende endeløse krig mellem medier og pirater ebbs og strømmer hvert år. Så snart nye måder at beskytte og sikkert distribuere medier findes på, findes nye måder at omgå og kompromittere disse foranstaltninger med.
Nogle vil hævde, at Sony BGM gik et skridt for langt i 2005, da de introducerede en ny form for kopieringsbeskyttelse på nogle af deres lyd-cd'er. Når de spilles med en Windows-computer, vil disse cd'er installere et stykke software kaldet en 'rootkit'. En rootkit er en form for software, der begraver sig dybt ind i en computer og ændrer visse grundlæggende processer. Selvom det ikke altid er ondsindet i naturen, bruges en rootkit ofte til at plante ondsindet og svært at opdage (eller fjerne) software, såsom vira, trojanske mv. I tilfælde af Sony BMG var målet at kontrollere, hvordan en Windows-computer brugte Sony cd'er til at forhindre kopiering af dem eller konvertere dem til MP3'er, hvilket ville hjælpe dem med at skære ned på piratkopiering af deres medier.
Rootkit opnåede dette - men ved at træffe foranstaltninger til at skjule sig fra brugeren gjorde det muligt for virus og anden ondsindet software at skjule sig sammen med det. Den dårligt gennemtænkte implementering, og en voksende opfattelse af, at Sony BMG ikke havde nogen forretning smygligt at manipulere bruger-pc'er, betød, at hele ordningen var tilbage. Det resulterede i, at rootkit blev klassificeret som malware af mange computersikkerhedsfirmaer, samt flere lovpakker og et produkt tilbagekald af de lovende cd'er.
3 Patriot Missile Bug 25. februar 1991Under Operation Desert Shield indsatte det amerikanske militær Patriot Missile System som forsvar mod fly og missiler - i dette tilfælde irakiske Al Hussein (SCUD) missiler.Sporingssoftware til Patriot-missilet anvender hastigheden af dets mål og den aktuelle tid for at forudsige, hvor målet vil være fra et øjeblik til et andet. Da forskellige mål kan rejse med hastigheder på op til MACH 5, skal disse beregninger være meget præcise.
På det tidspunkt var der en fejl i målretningsprogrammet - hvilket medførte, at det med tiden ville 'drive' (som enhver ur) længere og længere fra præcis tid, jo længere tid blev systemet kørt. Fejlen var faktisk allerede kendt og blev simpelthen rettet ved regelmæssigt at genstarte systemet og dermed genoprette systemuret.
Desværre forstod de ansvarlige ikke klart, hvordan de regelmæssigt skulle genstarte systemet, og det blev efterladt i 100 timer. Da et irakisk missil blev lanceret, målrettet mod en amerikansk flyveplads i Dhahran, Saudi Arabien, blev det påvist af Patriot-missilsystemet. Men på dette tidspunkt var det interne ur udløbet med 0,34 sekunder, så da det forsøgte at beregne, hvor missilet ville være næste, så det på et område af himlen over en halv kilometer væk fra missiler sande placering. Det antog straks, at der ikke var nogen fjendtlig missil trods alt og aflyste aflytningen. Missilen blev videreført til sin destination, hvor den dræbte 28 soldater og skadede yderligere 98.
2Millennium Bug
Millennium Bug, eller Y2K, er den mest kendte fejl på denne liste og den, som mange af os husker at høre om på det tidspunkt. Dybest set var denne fejl et resultat af computerens fagfolkes kombinerede kortsynhed i årtierne frem til år 2000. I mange computersystemer blev to cifre brugt til at vise datoen, f.eks. 98 i stedet for 1998, en praksis, der syntes at være rimelig, og som forældede computere på et tidspunkt.
Mange forudså imidlertid ikke, at der kunne være et problem, da datoen gik forbi år 2000. Ved hjælp af nuværende systemer kunne år 2000 kun blive repræsenteret som 00, hvilket kan forvirre computere til at tro, det betød året 1900 En sådan ting ville bryde nogen beregninger, der involverer årrækker, der krydsede årtusindet. For eksempel kan det vise nogen født i 1920 og dø i 2001 som minus 19 år gammel.
Som svar på problemet opdaterede softwarefirmaerne hurtigt deres produkter, som allerede kontrollerede stort set alt fra bank og løn til hospitaler og togbilletsystemer. Også i anerkendelse af dets verdensomspændende karakter blev det internationale Y2K-samarbejdscenter oprettet i februar 1999 for at hjælpe med at koordinere det arbejde, der kræves for at forberede det nye årtusind mellem regeringer og organisationer, hvor det er nødvendigt. I sidste ende gik det nye år uden for meget hændelse ud over den universelle mor-of-all-hangovers.
Det er svært at sige, hvor meget af denne succes var et resultat af det arbejde, der blev udført for at lette problemet, eller om problemet var overdrevet i medierne i første omgang - sandsynligvis en blanding af begge.
1 År 2038
Selvom Y2K er bestået, er vi ikke ude af skoven endnu. Ikke alle computere håndterer datoer på samme måde, og mange computere baseret på UNIX-operativsystemet håndterer datoer ved at tælle hvor mange sekunder en dato er siden 01/01/1970. For eksempel er datoen 01/01/1980 315.532.800 sekunder efter 01/01/1970. Dette nummer gemmes på disse computere som et "signeret 32-biters heltal", som har en størrelsesgrænse på 2147483647. Det betyder stort set, at det kun kan klare datoer, der er op til 2147483647 sekunder efter 01/01/1970 - som kun tager os indtil den 19. januar 2038, hvorefter vi måske har problemer igen.
Dette gælder især, når vi mener, at UNIX-baseret software er mere almindeligt anvendt i "indlejrede systemer" end en hjemme-pc - det vil sige systemer, der har et meget specifikt formål tæt knyttet til deres hardware, såsom software til robotmonteringslinjer , digitale ure, netværks routere, sikkerhedssystemer og så videre.
Desuden skal nogen overveje, hvad vi skal gøre den 1. januar 10000. Ikke mig selv.