10 Seriøst episke Computer Software Bugs

10 Seriøst episke Computer Software Bugs (Teknologi)

De fleste programvarebugger er små ulemper som kan overvinnes eller jobbet av brukeren - men det er noen bemerkelsesverdige tilfeller hvor en enkel feil har påvirket millioner, i en grad eller annen, og til og med forårsaket skade og tap av liv.

Programvare er skrevet av mennesker - og hvert stykke programvare har derfor feil, eller "utokumenterte funksjoner" som selger kan ringe til dem. Det vil si at programvaren gjør noe som det ikke skal, eller gjør ikke noe som det skal. Disse feilene kan skyldes dårlig design, misforståelse av et problem, eller bare enkel menneskelig feil - akkurat som en skrivefeil i en bok. Men mens en bok leses av et menneske som vanligvis kan avlede betydningen av et feilstavet ord, blir programvaren lest av datamaskiner, som er relativt dumme, og vil bare gjøre det de blir fortalt.

Her er ti tilfeller der konsekvensene av disse feilene var enorme, på en eller annen måte:

10

Therac-25 1985-1987

Therac-25 var en maskin for administrering av strålebehandling, generelt for behandling av kreftpasienter. Den hadde to driftsformer. Den første besto av en elektronstråle rettet direkte til pasienten i små doser i løpet av kort tid. Den andre rettet mot elektronstrålen på høye energinivåer ved et metallmål først, som i hovedsak ville omdanne strålen til røntgenstråler som deretter ble ført inn i pasienten.

I tidligere modeller av Therac-maskinen, for denne andre operasjonsmodusen, var det fysiske feilkasser for å sikre at dette målet var på plass som uten at meget høye energibjelker kunne feilaktig avfyres direkte inn i pasienten. I den nye modellen ble disse fysiske feilsøkene erstattet av programvare.

Dessverre var det en feil i programvaren: en "aritmetisk overstrømning" oppstod noen ganger under automatiske sikkerhetskontroller. Dette innebærer i utgangspunktet at systemet brukte et nummer i sine interne beregninger som var for store til å håndtere. Hvis operatøren på dette nøyaktige øyeblikk konfigurerte maskinen, ville sikkerhetskontrollene mislykkes, og metallmålet ville ikke flyttes på plass. Resultatet var at bjelker 100 ganger høyere enn den tiltenkte dosen ville bli sparket inn i en pasient, noe som ga dem strålingsforgiftning. Dette skjedde på seks kjente anledninger, noe som førte til at 4 pasienter døde senere.

9

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

Den enormt vellykkede World of Warcraft (WoW), et online dataspill som ble opprettet av Blizzard Entertainment, led en pinlig glitch etter en oppdatering til sitt spill 13. september 2005 - forårsaker masse (fiktiv) død. Etter en oppdatering til spillinnholdet ble en ny fiende karakter, Hakkar, introdusert som hadde muligheten til å påføre en sykdom, kalt Korrupt Blood, på spillene som ville drenere helsen over en periode. Denne sykdommen kunne overføres fra spiller til spiller, akkurat som i den virkelige verden, og hadde potensial til å drepe noen karakter som kontraktet det. Denne effekten var ment å være strengt lokalisert til området av spillet som Hakkar bebodd.

Men en ting ble oversett: spillerne var i stand til å teleportere til andre områder av spillet mens de fortsatt er smittet og overføre sykdommen til andre - noe som akkurat er det som skjedde. Jeg kan ikke finne noen tall på kroppstallet, men hele byene i spillverdenen var ingen steder, med døde spillers lik som kaster gatene. Heldigvis er spillerdød ikke permanent i WoW, og hendelsen var snart over når spillets administratorer nulstillte serverne og brukte videre programvareoppdateringer. Spesielt interessant er måten spillernes reaksjoner i spillet kunne reflektere deres reaksjoner på en lignende virkelighetshendelse.

8

North American Blackout 14. august 2003

Påvirker rundt 55 millioner mennesker, hovedsakelig i Nordøst-USA, men også Ontario Canada, dette var en av de største strømbruddene i historien. Det startet da et kraftverk langs den sørlige kysten av Lake Erie, Ohio, gikk offline på grunn av høy etterspørsel som satte resten av kraftnettet under større stress. Når kraftledninger er under tyngre elektrisk belastning, oppvarmer de opp, noe som betyr at materialet som gjør kabelen (vanligvis aluminium og stål), utvides. Flere kraftledninger henger lavere da de utvidet og fanget trær, bringer dem ned og setter systemet under enda mer press. Dette førte til en cascading effekt som til slutt reduserte kraftnettet til 20% av normal utgang.

Selv om årsakene til denne blackout ikke var noe å gjøre med en programvarebug, kunne det ha blitt avverget, hvis det ikke var en programvarefeil i alarmsentralen. I det som kalles et "raseforhold" -scenario, konkurrerte to deler av systemet over samme ressurs og kunne ikke løse konflikten, noe som førte til at alarmsystemet fryset og slutte å behandle varsler. Dessverre mislyktes alarmsystemet "stille", noe som betyr at den brøt, men ikke meldte noen om at den hadde brutt. Dette innebar ingen lyd eller visuelle varsler ble gitt til å styre rompersonalet, som over stolte på slike ting for situasjonell bevissthet. Ettervirkningen ble godt rapportert og forlot mange områder uten strøm i flere dager og berørt industri, verktøy, kommunikasjon. Det ble også klandret som minst en medvirkende faktor i flere dødsfall.

7

USS Yorktown Incident 21. september 1997

I verden av programvareutvikling er det flere kjente feil som programmerere møter og må ta vare på. Et slikt eksempel er "divide by zero" bug, hvor en beregning utføres som deler et hvilket som helst tall med null.En slik beregning er ikke mulig å løse, i det minste ikke uten å bruke høyere matematikk, og de fleste programvare - for alt fra super datamaskiner til lommekalkulatorer - er skrevet for å ta hensyn til dette scenariet.

Det var med litt forlegenhet da USS Yorktown led et komplett fiasko av fremdriftssystemet, og var død i vannet i nesten 3 timer da et besetningsmedlem skrev en "0" i det innebygde databasebehandlingssystemet som da var brukt i en divisjon beregning. Programvaren ble installert som en del av en bredere drift for å bruke datamaskiner for å redusere mannkraften som trengs for å kjøre noen skip. Heldigvis var skipet engasjert i manøvrer ved hendelsen, i stedet for utplassert i et kampmiljø, som kunne ha hatt alvorligere konsekvenser.

6

Trans-Siberian Gas Pipeline Explosion 1982

Denne er litt strekning, og kan aldri ha skjedd, men - hvis det er sant - er det et fremtredende eksempel på en bevisst introdusert programvarekilde som forårsaker en stor hendelse.

I løpet av den kalde krigen, da forholdet mellom USA og Sovjet-Russland var litt frostet, sies det sentrale etterretningsorganet å bevisst ha plassert feil i programvare som selges av et kanadisk selskap-programvare som ble brukt til å kontrollere den trans-siberiske gassledningen . CIA trodde at Russland kjøpte dette systemet via et kanadisk selskap som et middel til å skjult få amerikansk teknologi, og at dette ville være en mulighet til å mate dem defekt materiale.

Slike rutiner ble senere referert til i den avklassifiserte "Farvel Dossier" der det blant annet påstås at feil turbiner faktisk ble brukt på en gassrørledning. Det hevdes av tidligere generalsekretær, Thomas C. Reed, at en rekke feil ble introdusert slik at systemet ville passere tester, men bryte under selve bruken. Innstillinger for pumper og ventiler ble satt til å overstige pressene som rørledningen kunne tåle, noe som førte til en eksplosjon som sies å være den største ikke-nukleare eksplosjonen som noensinne er registrert.

Disse påstandene er imidlertid blitt motsagt av KGB-veteranen, Anatoly Medetsky, som hevder at eksplosjonen var forårsaket av underparametrebygging i stedet for bevisst sabotasje. Uansett årsak, ble det ikke rapportert noen kendte tap som eksplosjonen oppsto i et svært fjernt område.





5

Krigskrig-missilkrisen 26. september 1983

Stanislav Petrov var pliktoffiser for en hemmelig bunker i nærheten av Moskva som var ansvarlig for overvåking av det sovjetiske tidlige varselsatellitsystemet. Like etter midnatt mottok de et varsel om at USA hadde lansert fem Minuteman-interkontinentale ballistiske missiler. Som en del av den gjensidige ødelagte doktrinen som kom inn i utbredelsen under den kalde krigen, ville svaret på et angrep av en makt være et hevn angrep av den andre.

Dette betydde at hvis angrepet var ekte, trengte de å reagere raskt. Det virket imidlertid rart at USA ville angripe med bare en håndfull warheads: selv om de ville forårsake massiv skade og tap av liv, ville det ikke være nok tilstrekkelig til å tørke opp den sovjetiske opposisjonen. Også ikke radarstasjonene på bakken plukket opp noen kontakter, selv om disse ikke kunne oppdage over horisonten på grunn av jordens krumning, som kunne ha forklart forsinkelsen.

En annen overveielse var selve varslingssystemet selv, som var kjent for å ha feil og hadde blitt tatt i drift i utgangspunktet. Petrov veide alle disse faktorene og bestemte seg for å styre varselet som en falsk alarm. Selv om Petrov ikke hadde sin finger på nåke-knappen som sådan, hadde han gått på anbefaling til sine overordnede at de tok angrepet som ekte, kunne det ha ført til all-out atomkrig. Enten basert på erfaring, intuisjon eller bare flaks, var Petrovs beslutning den rette.

Det ble senere bestemt at den tidlige gjenkjenningssoftware hadde hentet solens refleksjon fra toppen av skyene og feilfortolket den som missillanseringer.

4

Sony CD skadelig kopibeskyttelse

Den tilsynelatende uendelige krigen mellom media og pirater ebbs og flyter hvert år. Så snart nye måter å beskytte og sikkert distribuere media på er funnet, er nye måter å kringgå og kompromittere disse tiltakene avdekket.

Noen ville hevde at Sony BGM gikk et skritt for langt i 2005, da de introduserte en ny form for kopieringsbeskyttelse på noen av deres lyd-CDer. Når de spilles med en Windows-datamaskin, vil disse CDene installere et program som heter "rootkit". En rootkit er en form for programvare som begraver seg langt inn i en datamaskin og endrer visse grunnleggende prosesser. Selv om det ikke alltid er ondsinnet i naturen, brukes en rootkit ofte til å installere ondsinnet og vanskelig å oppdage (eller fjerne) programvare, for eksempel virus, trojanere etc. I tilfelle av Sony BMG var målet å kontrollere måten en Windows-datamaskin brukte Sony-CD-ene for å hindre kopiering av dem eller konvertere dem til MP3-filer, noe som ville hjelpe dem med å kutte ned piratkopiering av deres medier.

Rotkit oppnådde dette - men ved å ta tiltak for å skjule seg fra brukeren, gjorde det virus og annen ondsinnet programvare å skjule seg sammen med den. Den dårlige gjennomtenkte implementeringen, og en voksende oppfatning at Sony BMG ikke hadde noen forretninger, smekker manipulerer bruker-PCer, betydde at hele ordningen var tilbake. Det resulterte i at rootkit ble klassifisert som malware av mange datasikkerhetsselskaper, i tillegg til flere lovpakker og et produkt tilbakekalling av de fornærmende CDene.

3

Patriot Missile Bug 25. februar 1991

Under operasjonen Desert Shield utplasserte det amerikanske militæret Patriot Missile System som forsvar mot fly og missiler - i dette tilfellet irakiske Al Hussein (SCUD) missiler.Sporingsprogramvaren for Patriot-missilen bruker hastigheten til målet og den nåværende tiden for å forutsi hvor målet vil være fra et øyeblikk til et annet. Siden ulike mål kan bevege seg i hastigheter opp til MACH 5, må disse beregningene være svært nøyaktige.

På den tiden var det en feil i målrettingsprogramvaren - noe som medførte at den interne klokken over tid ville "drive" (akkurat som hvilken som helst klokke) lenger og lenger fra nøyaktig tid jo lenger systemet ble igjen. Feilen var faktisk allerede kjent om og ble rettet opp ved å regelmessig starte systemet på nytt og dermed gjenopprette systemuret.

Dessverre forstod de ansvarlige ikke klart hvordan "jevnlig" de skulle starte systemet på nytt, og det ble igjen kjørt i 100 timer. Da en irakisk missil ble lansert, målrettet mot en amerikansk flyplass i Dhahran, Saudi-Arabia, ble den oppdaget av patriot-missilsystemet. Men ved dette tidspunktet hadde den interne klokken drevet ut med 0,34 av et sekund, så da det forsøkte å beregne hvor missilet ville være neste, så det på et område av himmelen over en halv kilometer unna missil sanne plassering. Det antok straks at det ikke var noen fiendtlig missil, og avlyste avlytingen. Missilet kjørte videre til bestemmelsesstedet der det drepte 28 soldater og skadet ytterligere 98.

2

Millennium Bug


Millennium Bug, eller Y2K, er den mest kjente feilen på denne listen, og den som mange av oss husker å høre om på den tiden. I utgangspunktet var denne feilen et resultat av den kombinerte kortsiktigheten til datapersonell i tiårene frem til år 2000. I mange datasystemer ble to siffer brukt til å vise datoen, f.eks. 98 i stedet for 1998, en praksis som virket rimelig og hvilke pre-daterte datamaskiner på et tidspunkt.

Mange forutse imidlertid ikke at det kan være et problem da datoen gikk forbi år 2000. Ved bruk av nåværende systemer kan år 2000 bare bli representert som 00, noe som kan forvirre datamaskiner til å tro at det betydde året 1900 . En slik ting ville bryte noen beregninger som involverer årganger som krysset årtusenet. For eksempel kan det vise noen født i 1920 og dø i 2001 som minus 19 år gammel.

Som svar på problemet, oppdaterte programvareselskapene sine produkter, som allerede styrte omtrent alt fra bank og lønn til sykehusdatorer og togbillettsystemer. Også, i anerkjennelse for sin verdensomspennende natur, ble det internasjonale Y2K-samarbeidsstedet opprettet i februar 1999 for å bidra til å koordinere arbeidet som trengs for å forberede det nye årtusenet mellom regjeringer og organisasjoner, der det er nødvendig. Til slutt gikk det nye året uten for mye hendelse, i tillegg til den universelle mor-of-all-hangovers.

Det er vanskelig å si hvor mye av denne suksessen var et resultat av arbeidet som ble utført for å lette problemet, eller om problemet var overdrevet i media i utgangspunktet - sannsynligvis en blanding av begge.

1

År 2038


Selv om Y2K er passert, er vi ikke ute av skogen ennå. Ikke alle datamaskiner håndterer datoer på samme måte, og mange datamaskiner basert på UNIX-operativsystemet håndterer datoer ved å telle hvor mange sekunder en dato er siden 01/01/1970. For eksempel er datoen 01.01.1980 315.532.800 sekunder etter 01.01.1970. Dette nummeret lagres på disse datamaskinene som et "signert 32-biters heltall", som har en størrelsesgrense på 2147483647. Det betyr i utgangspunktet at det kun kan håndtere datoer som er opptil 2147483647 sekunder etter 01.01.1970 - som bare tar oss frem til den 19. januar 2038, hvoretter vi kan få problemer igjen.

Dette gjelder spesielt når vi vurderer at UNIX-basert programvare er mer vanlig brukt i "innebygde systemer" enn en hjemme-PC - det vil si systemer som har en veldig spesifikk hensikt nært knyttet til maskinvaren, for eksempel programvare for robotmonteringslinjer , digitale klokker, nettverksrutere, sikkerhetssystemer og så videre.

Også, noen kommer til å vurdere hva vi skal gjøre 1. januar 10000. Ikke meg selv.