10 Serieus Epische Computer Software Bugs

10 Serieus Epische Computer Software Bugs (Technologie)

De meeste softwarefouten zijn kleine ongemakken die door de gebruiker kunnen worden opgelost of omzeild - maar er zijn enkele opvallende gevallen waarbij een eenvoudige fout miljoenen tot op zekere hoogte heeft beïnvloed en zelfs letsel en verlies van mensenlevens heeft veroorzaakt.

Software is geschreven door mensen - en elk stukje software heeft daarom bugs of 'ongedocumenteerde functies' zoals een verkoper ze zou kunnen noemen. Dat wil zeggen, de software doet iets dat het niet zou moeten, of niet doet wat het zou moeten doen. Deze fouten kunnen te wijten zijn aan een slecht ontwerp, een verkeerd begrip van een probleem of een eenvoudige menselijke fout - net als een typefout in een boek. Terwijl een boek echter wordt gelezen door een mens die de betekenis van een verkeerd gespeld woord meestal kan afleiden, wordt software gelezen door computers, die relatief dom zijn en alleen doen wat ze te vertellen hebben.

Hier zijn tien gevallen waarin de gevolgen van deze bugs enorm waren, op de een of andere manier:

10

Therac-25 1985-1987

De Therac-25 was een machine voor het toedienen van bestralingstherapie, in het algemeen voor de behandeling van kankerpatiënten. Het had twee werkingsmodi. De eerste bestond uit een elektronenstraal gericht op de patiënt in kleine doses gedurende een korte tijd. De tweede richtte de elektronenbundel eerst op hoge energieniveaus op een metalen 'doel', wat de straal in wezen zou omzetten in röntgenstralen die vervolgens in de patiënt werden doorgegeven.

In eerdere modellen van de Therac-machine waren er voor deze tweede werkingsmodus fysieke faalkluizen om ervoor te zorgen dat dit doelwit op zijn plaats was, omdat anders zeer hoge energiestralen ten onrechte direct in de patiënt konden worden afgevuurd. In het nieuwe model werden deze fysieke faalkluizen vervangen door software.

Helaas was er een fout in de software: soms vond een 'rekenkundige overloop' plaats tijdens automatische veiligheidscontroles. Dit betekent in feite dat het systeem een ​​nummer gebruikte binnen zijn interne berekeningen dat te groot was om te verwerken. Als de operator op dit moment de machine aan het configureren was, zouden de veiligheidscontroles mislukken en zou het metalen doelwit niet op zijn plaats worden geplaatst. Het resultaat was dat stralen die 100 keer hoger waren dan de bedoelde dosis in een patiënt zouden worden afgevuurd, waardoor ze stralingsvergiftiging zouden krijgen. Dit gebeurde op 6 bekende gelegenheden, waardoor de latere dood van 4 patiënten.

9

World of Warcraft "Corrupted-Blood" Glitch 13 september 2005

De enorm succesvolle World of Warcraft (WoW), een online computerspel gemaakt door Blizzard Entertainment, leed een gênante fout na een update van hun spel op 13 september 2005 - het veroorzaken van massale (fictieve) dood. Na een update van de game-inhoud, werd er een nieuw vijandig personage, Hakkar, geïntroduceerd, die het vermogen had om een ​​ziekte, Corrupted Blood genaamd, aan te brengen tegen de spelende personages die hun gezondheid in de loop van de tijd zouden afvoeren. Deze ziekte kon van speler tot speler worden doorgegeven, net als in de echte wereld, en had de potentie om elk personage dat het contract aanbood te doden. Dit effect was bedoeld om strikt gelokaliseerd te zijn in het deel van het spel dat Hakkar bewoonde.

Er werd echter één ding over het hoofd gezien: spelers konden teleporteren naar andere delen van het spel terwijl ze nog steeds besmet waren en de ziekte doorgeven aan anderen - wat precies gebeurde. Ik kan geen cijfers vinden over de lichaamstelling, maar hele steden in de gamewereld waren no-go-gebieden, met lijken van dode spelers bezaaid door de straten. Gelukkig is het overlijden van spelers niet permanent in WoW en was het evenement snel voorbij toen de beheerders van het spel de servers opnieuw instelden en verdere software-updates toepasten. Bijzonder interessant is de manier waarop spelersreacties in het spel hun reacties op een vergelijkbaar real-life incident nauw konden weerspiegelen.

8

North American Blackout 14 augustus 2003

Met ongeveer 55 miljoen mensen, voornamelijk in de Noordoost-Verenigde Staten, maar ook in Ontario Canada, was dit een van de grootste stroomuitval in de geschiedenis. Het begon toen een elektriciteitscentrale langs de zuidelijke oever van Lake Erie, Ohio offline ging vanwege de grote vraag die de rest van het stroomnetwerk onder grotere druk zette. Wanneer hoogspanningsleidingen onder zwaardere elektrische belasting staan, worden ze warm, wat betekent dat het materiaal dat de kabel vormt (meestal aluminium en staal) uitzet. Verschillende stroomlijnen hingen lager naarmate ze uitliepen en bomen vingen, ze naar beneden brachten en het systeem onder meer druk zetten. Dit leidde tot een trapsgewijs effect dat uiteindelijk het stroomnet tot 20% van de normale output reduceerde.

Hoewel de oorzaken van deze blackout niets te maken hadden met een softwarefout, kon het voorkomen zijn dat er geen softwarefout in het alarmsysteem van het alarmcentrale was. In een scenario met de 'raceconditie' concurreerden twee delen van het systeem over dezelfde resource en konden het conflict niet oplossen, waardoor het alarmsysteem vastliep en verwerkingswaarschuwingen werden gestopt. Helaas faalde het alarmsysteem 'stil', wat betekende dat het brak, maar niemand op de hoogte bracht dat het had gebroken. Dit betekende dat er geen audio- of visuele waarschuwingen werden gegeven om het personeel in de zaal te controleren, die ervoor vertrouwden op dergelijke zaken voor situational awareness. De nasleep was goed gemeld en liet vele gebieden zonder stroom voor meerdere dagen achter en beïnvloedde de industrie, nutsvoorzieningen, communicatie. Het werd ook de schuld gegeven als op zijn minst een bijdragende factor in verschillende sterfgevallen.

7

USS Yorktown Incident 21 september 1997

In de wereld van softwareontwikkeling zijn er verschillende algemeen bekende bugs die programmeurs tegenkomen en waar ze rekening mee moeten houden. Een voorbeeld van zo'n voorbeeld is de 'deel door nul'-fout, waarbij een berekening wordt uitgevoerd die elk getal door nul verdeelt.Zo'n berekening is niet mogelijk om op te lossen, althans niet zonder hogere wiskunde te gebruiken, en de meeste software - voor alles van supercomputers tot zakrekenmachines - is geschreven om rekening te houden met dit scenario.

Het was met enige schaamte dat de USS Yorktown een compleet defect van het voortstuwingssysteem had geleden en bijna 3 uur dood in het water was toen een bemanningslid een "0" intypte in het ingebouwde databasebeheersysteem dat toen gebruikt in een divisieberekening. De software is geïnstalleerd als onderdeel van een bredere operatie om computers te gebruiken om de benodigde stroom voor sommige schepen te verminderen. Gelukkig was het schip op het moment van het incident bezig met manoeuvres, in plaats van ingezet in een gevechtsomgeving, wat zwaardere gevolgen kon hebben gehad.

6

Trans-Siberische gaspijplijnexplosie 1982

Deze is een beetje uitgestrekt, en is misschien nooit gebeurd, maar - als het waar is - is het een prominent voorbeeld van een opzettelijk geïntroduceerde softwarebug die een groot incident veroorzaakt.

Tijdens de Koude Oorlog, toen de betrekkingen tussen de VS en Sovjet-Rusland een beetje ijzig waren, zouden de Central Intelligence Agency met opzet bugs in software hebben geplaatst die door een Canadees bedrijf worden verkocht - software die werd gebruikt voor het controleren van de transsiberische gasleiding . De CIA was van mening dat Rusland dit systeem via een Canadees bedrijf zou kopen als een middel om heimelijk Amerikaanse technologie te verkrijgen, en dat dit een gelegenheid zou zijn om ze gebrekkig materiaal te leveren.

Naar dergelijke praktijken werd later verwezen in het vrijgegeven "Farewell Dossier", waar onder andere beweerd werd dat defecte turbines in feite op een gasleiding werden gebruikt. Er wordt beweerd door Thomas C. Reed, voormalig secretaris van de luchtmacht, dat er een reeks bugs is geïntroduceerd, zodat het systeem tests zou doorstaan ​​maar tijdens het daadwerkelijke gebruik zou breken. Instellingen voor pompen en kleppen werden ingesteld om de druk te overschrijden die de pijpleiding zou kunnen weerstaan, wat leidde tot een explosie waarvan wordt gezegd dat het de grootste niet-nucleaire explosie is die ooit is opgetekend.

Deze beweringen zijn echter tegengesproken door KGB-veteraan Anatoly Medetsky, die beweert dat de explosie werd veroorzaakt door ondermaatse constructie in plaats van opzettelijke sabotage. Wat de oorzaak ook was, er werden geen bekende slachtoffers gemeld toen de explosie plaatsvond in een zeer afgelegen gebied.





5

Koude Oorlog rakettencrisis 26 september 1983

Stanislav Petrov was de dienstdoende officier van een geheime bunker bij Moskou die verantwoordelijk was voor het toezicht op het Sovjet systeem voor vroegtijdige waarschuwing. Vlak na middernacht ontvingen ze een waarschuwing dat de VS vijf intercontinentale ballistische raketten van Minuteman hadden gelanceerd. Als onderdeel van de wederzijds verzekerde vernietigingsdoctrine die tijdens de Koude Oorlog in de ban raakte, zou de reactie op een aanval door één macht een wraakaanval van de ander zijn.

Dit betekende dat als de aanval echt was, ze snel moesten reageren. Het leek echter vreemd dat de VS zou aanvallen met slechts een handvol kernkoppen: hoewel ze enorme schade en verlies van levens zouden veroorzaken, zou het zelfs niet voldoende zijn om de Sovjet-oppositie teniet te doen. Ook namen de radarstations op de grond geen contacten op, hoewel deze niet konden waarnemen voorbij de horizon vanwege de kromming van de aarde, wat de vertraging zou kunnen hebben verklaard.

Een andere overweging was het systeem voor vroegtijdige waarschuwing zelf, waarvan bekend was dat het fouten bevatte en in de eerste plaats in gebruik was genomen. Petrov woog al deze factoren en besloot de waarschuwing als vals alarm te beschouwen. Hoewel Petrov niet de vinger naar de knop op de knop had gedrukt, had hij een aanbeveling aan zijn superieuren doorgegeven dat ze de aanval als echt zouden beschouwen, dit zou kunnen hebben geleid tot een totale nucleaire oorlog. Of het nu gebaseerd was op ervaring, intuïtie of gewoon geluk, Petrov's beslissing was de juiste keuze.

Later werd vastgesteld dat de software voor vroege detectie de reflectie van de zon uit de top van wolken had opgepikt en het verkeerd had geïnterpreteerd als raketlanceringen.

4

Sony CD Malicious Copy Protection

De schijnbaar oneindige oorlog tussen media en piraten ebt en stroomt elk jaar. Zodra nieuwe manieren worden gevonden om media te beschermen en veilig te verspreiden, worden nieuwe manieren ontdekt om deze maatregelen te omzeilen en in gevaar te brengen.

Sommigen beweren dat Sony BGM in 2005 een stap te ver is gegaan toen ze op een aantal van hun audio-cd's een nieuwe vorm van kopieerbeveiliging introduceerden. Wanneer ze op een Windows-computer worden afgespeeld, installeren deze CD's een stukje software die een 'rootkit' wordt genoemd. Een rootkit is een vorm van software die zich diep in een computer begeeft en bepaalde fundamentele processen verandert. Hoewel niet altijd kwaadaardig van aard, wordt een rootkit vaak gebruikt om kwaadwillige en moeilijk te detecteren (of te verwijderen) software, zoals virussen, Trojaanse paarden enz., Steekt. In het geval van Sony BMG, was het doel om de controle over de manier waarop een Windows-computer gebruikte de Sony-cd's om te voorkomen dat ze werden gekopieerd of naar MP3's werden geconverteerd, waardoor ze minder piraterij van hun media nodig hadden.

De rootkit heeft dit bereikt - maar door maatregelen te nemen om zich voor de gebruiker te verbergen, konden virussen en andere kwaadaardige software zich ermee verbergen. De slecht doordachte implementatie en de groeiende perceptie dat Sony BMG geen zakelijke stiekem manipulatie van gebruikers-pc's had, betekende dat het hele schema mislukte. Het resulteerde in de rootkit die door veel computerbeveiligingsbedrijven als malware werd geclassificeerd, evenals verschillende rechtszaken en een terugroeping van producten van de overtredende cd's.

3

Patriot Missile Bug 25 februari 1991

Tijdens Operatie Desert Shield heeft het Amerikaanse leger het Patriot Missile System ingezet als verdediging tegen vliegtuigen en raketten - in dit geval Irakese Al Hussein (SCUD) -raketten.De volgsoftware voor de Patriot-raket gebruikt de snelheid van het doelwit en de huidige tijd om te voorspellen waar het doelwit van het ene moment naar het andere zal zijn. Aangezien verschillende doelen met snelheden tot MACH 5 kunnen rijden, moeten deze berekeningen zeer nauwkeurig zijn.

Op dat moment was er een fout in de targeting-software - wat betekende dat de interne klok na verloop van tijd zou 'afdrijven' (net als elke klok), steeds verder van de nauwkeurige tijd, hoe langer het systeem bleef draaien. De bug was eigenlijk al bekend en werd eenvoudig opgelost door het systeem regelmatig opnieuw op te starten en daarmee de systeemklok opnieuw in te stellen.

Helaas begrepen de verantwoordelijken niet duidelijk hoe 'regelmatig' ze het systeem opnieuw moesten opstarten en het werd 100 uur achter elkaar gelaten. Toen een Iraakse raket werd gelanceerd, gericht op een Amerikaans vliegveld in Dhahran, Saoedi-Arabië, werd het gedetecteerd door het raketsysteem van de patriot. Op dit punt was de interne klok echter met 0,34 seconde uitgedreven, dus toen hij probeerde uit te rekenen waar de raket de volgende zou zijn, keek hij naar een gebied in de lucht dat zich op meer dan een halve kilometer afstand van de werkelijke locatie van de raket bevond. Er werd meteen aangenomen dat er geen vijandelijke raket was en annuleerde de interceptie. De raket ging door naar zijn bestemming waar hij 28 soldaten doodde en nog eens 98 verwondde.

2

Millennium Bug


De Millennium Bug, of Y2K, is de bekendste bug in deze lijst en degene die velen van ons zich nog herinneren op het moment. Kort gezegd was deze fout het gevolg van de gecombineerde kortzichtigheid van computerprofessionals in de decennia voorafgaand aan het jaar 2000. In veel computersystemen werden twee cijfers gebruikt om de datum weer te geven, bijvoorbeeld 98 in plaats van 1998, een praktijk die redelijk leek en die al enige tijd ouderwetse computers was.

Velen hadden echter niet verwacht dat er een probleem zou zijn wanneer de datum voorbij het jaar 2000 zou zijn. Met behulp van de huidige systemen kon het jaar 2000 alleen worden weergegeven als '00', wat computers zou kunnen verwarren met het idee dat het het jaar 1900 betekende. Zoiets zou berekeningen breken met een reeks jaren die het millennium overschreden. Het kan bijvoorbeeld iemand tonen die in 1920 is geboren en in 2001 sterft als negentien jaar oud.

Als reactie op het probleem werkten softwarebedrijven snel hun producten bij, die al zowat alles controleerden, van bank- en loonlijsten tot ziekenhuiscomputers en treinkaartsystemen. Mede om haar wereldwijde aard te erkennen, werd het International Y2K Cooperation Centre in februari 1999 opgericht om, waar nodig, de werkzaamheden te coördineren die nodig zijn ter voorbereiding op het nieuwe millennium tussen regeringen en organisaties. Uiteindelijk verliep het nieuwe jaar zonder al te veel incidenten, naast de universele moeder-van-alles-katers.

Het is moeilijk te zeggen hoeveel van dit succes het resultaat was van het werk dat werd uitgevoerd om het probleem te verlichten, of dat het probleem in de eerste plaats overdreven was in de media - waarschijnlijk een combinatie van beide.

1

Jaar 2038


Hoewel Y2K is aangenomen, zijn we nog niet uit het bos. Niet alle computers verwerken datums op dezelfde manier en veel computers op basis van het UNIX-besturingssysteem verwerken datums door te tellen hoeveel seconden een datum is sinds 01/01/1970. Bijvoorbeeld, de datum 01/01/1980 is 315.532.800 seconden na 01/01/1970. Dit aantal wordt op deze computers opgeslagen als een 'signed 32-bit integer', dat een maximale grootte heeft van 2147483647. Dat betekent in feite dat het alleen data kan verwerken die tot 2147483647 seconden na 01/01/1970 zijn - wat ons alleen maar kost tot 19 januari 2038, waarna we mogelijk opnieuw problemen krijgen.

Dit geldt met name als we bedenken dat op UNIX gebaseerde software vaker wordt gebruikt in 'embedded systems' in plaats van een thuis-pc, dat wil zeggen systemen met een zeer specifiek doel die nauw gerelateerd zijn aan hun hardware, zoals software voor robotachtige assemblagelijnen , digitale klokken, netwerkrouters, beveiligingssystemen enzovoort.

Ook zal iemand moeten overwegen wat we op 1 januari 10000 gaan doen. Ik niet.