En moderne strålemaskin skulle redde liv. I stedet ga den dødelige doser. Mellom juni 1985 og januar 1987 ble seks pasienter rammet i USA og Canada. Minst tre døde. Historien er en advarsel om hva som skjer når sikkerhet overlates til programvare alene.
Et rutinebesøk som endte i katastrofe
I juni 1985 møtte 61 år gamle Katie Yarbrough opp ved Kennestone Regional Oncology Center i Marietta, Georgia, for strålebehandling etter en brystkreftoperasjon. Behandlingen ble gitt med Therac-25, en moderne stråleterapi-maskin.
En enorm kraftbølge av varme, en rødglødende følelse strømmet gjennom kroppen.
Over de neste 20 månedene ble hendelsen hennes del av en mørk rekke ulykker: seks pasientskader fordelt på USA og Canada. Minst tre mennesker døde, flere ble alvorlig skadet.
- Yarbrough fikk mellom 15 000 og 20 000 rad – hun skulle hatt 200 rad.
- En dose på 1000 rad kan være dødelig.
- Ulykkene skjedde fra juni 1985 til januar 1987.
Maskinen som stolte på kode
Therac-25 var en avansert lineærakselerator fra Atomic Energy of Canada Limited (AECL). Den kunne levere høyenergi røntgenstråler og elektronbehandling. Der forgjengerne hadde mekaniske sperrer, valgte Therac-25 å stole nesten utelukkende på programvare for sikker drift. Det ble en fatal beslutning.
Programvaren var skrevet av én utvikler over flere år i PDP-11 assembly. Kode var gjenbrukt fra Therac-6 og Therac-20, der maskinvare hadde maskert programvarefeil. Da de fysiske sikkerhetsmekanismene ble fjernet i Therac-25, kom skjulte feil til syne.
Begrepene:
- Race condition: Når utfallet avhenger av presis timing av hendelser i systemet.
- Rad: En måleenhet for stråledose. 1000 rad kan være dødelig.
Feilen som snudde sikkerhet til fare
Feilene var mange og alvorlige. En kritisk feil gjaldt en variabel brukt som sikkerhetsflagg, der verdien ble økt i stedet for å settes til en fast verdi. Når tallet ble stort nok, oppsto aritmetisk overflow: verdien gikk rundt og ble null. Da trodde maskinen at alt var trygt – selv når det ikke var det. Dette beskrives som et eksempel på en race condition.
Resultatet var ødeleggende. Yarbrough måtte få brystet fjernet etter overdosen. Arm og skulder ble immobilisert, og hun levde i konstant smerte. Andre ofre led lignende eller verre utfall.
Hvorfor lappverk ikke holdt
Hver gang en ny feil ble oppdaget og rettet, dukket nye problemer opp. Det var ikke mulig å «reparere seg ut av problemet». Hele tilnærmingen til sikkerhet var feil. Sikkerhetskritiske systemer må være konstruert for å feile trygt – ikke bare fungere mesteparten av tiden.
Lærdommer som fortsatt gjelder
- Dokumentasjon kan ikke være en etterpåklokskap.
- Programvareutvikling i kritiske systemer må gjøres av team med skikkelig kvalitetssikring.
- Flere lag med beskyttelse må bygges inn – man kan ikke stole på én enkelt feilkilde.
- God programvareutvikling handler om å lage systemer som feiler trygt.
Therac-25-katastrofen er i dag et klassisk case i programvaresikkerhet og læres ved universiteter over hele verden. Relevansen er større enn noen gang: Programvare styrer alt fra biler og fly til medisinske implanter og kraftverk.
Et vendepunkt for regulering
Katastrofen utløste grundige endringer i regulering og testing av medisinsk utstyr. FDA i USA og tilsvarende instanser skjerpet kravene til dokumentasjon, testing og kvalitetssikring av programvarestyrt utstyr.
Hovedpoenget: Therac-25 minner oss om at når menneskeliv står på spill, finnes det ingen snarveier. God programvareutvikling tar tid, krever ekspertise og må tas på dypeste alvor – fra første kodelinje.
Kommentarer
0 kommentarer
Vi godtar kun kommentarer fra registrerte brukere. Dette gjør vi for å opprettholde en trygg og respektfull debatt, samt for å unngå spam og misbruk. Registrering er gratis og tar bare noen sekunder.
Du må være innlogget for å kommentere. Logg inn eller registrer deg for å delta i diskusjonen.