Da sikkerhedsorganisationen SANS offentliggjorde en top 25-liste over de mest almindelige softwarefejl, var det for at skabe fokus på et af it-branchens største problemer: Fejl og sårbarheder i software.
Hvor galt står det til
I Danmark fik SANS' liste ekstra aktualitet, da Danske Spil i samme uge blev ramt af voldsom kritik for manglende sikkerhed på websiden "DM i Oddset". Her blev brugerindtastede CPR-numre sendt ukrypterede over internettet; en sikkerhedsfejl som falder ind under "Fortrolig information sendes ukrypteret" på top 25-listen.
SANS mener, at den slags fejl opstår, fordi der ikke er nok fokus på sikkerhed og minimering af fejl i softwarebranchen.
Ikke nok fokus på fejl
"De fleste af disse fejl er ikke noget, programmørerne forstår særligt godt; hvordan man undgår dem er ikke noget som uddannelserne gør meget ud af; og tilstedeværelsen af fejlene er ikke noget som softwarefirmaerne tester regelmæssigt for," hedder det blandt andet i en udtalelse, som SANS udsendte sammen med top 25-listen.
Selvom Danske Spils sikkerhedsfejl kunne indikere, at SANS har ret i sin udtalelse, mener danske it-eksperter og branchefolk ikke, at det står så slemt til.
Computerworld har talt med en datalogiprofessor, Microsofts udviklingscenter i Vedbæk samt interesseorganisationen Dansk IT for at høre deres bud på hvor langt vi er kommet med at realisere drømmen om fejlfri software.
De giver deres bud på, hvad der skal til for at minimere fejl og gøre softwaren mere robust.
Datalogi-professor: Vi indtænker sikkerhed i undervisningen
Uddannelsesmæssigt står det ikke så slemt til som SANS' udtalelse ellers giver anledning til at tro.
I hvert fald meldes der hus forbi på Aarhus Universitet. Michael Schwartzbach, professor i programmeringssprog og formelle modeller, mener, at de studerende på datalogistudiet bliver godt rustede til at indtænke sikkerhed i deres programmer.
Grov misfortolkning
"At sige at man ikke lærer den slags, det er en grov misfortolkning i forhold til hvordan uddannelserne ser ud," mener Michael Schwartzbach, der understreger, at SANS top 25-liste blot er nogle få af de mange fejl som software kan indeholde.
"Det er ikke de eneste fejl som man kan lave. Det kunne have været 25 andre fejl. Det er 25 gode eksempler på fejl, men de dækker ikke hele området. De er alle instanser af mere generelle principper som at definere og overholde invarianter i kode og data. Det gør vi meget ud af," forklarer Michael Schwartzbach.
En invariant specificerer hvilke betingelser kode og data skal overholde.
"Man bør checke, at man hele tiden overholder specifikationen. Udvikleren skal tænke over, hvordan det sikres, at en ny metode overholder invarianten. Den tankegang skal overholdes gennem hele udviklingen. Der er nok omkring 20 fejl på top 25-listen, der kan reddes med passende brug af invarianter i programudviklingen," vurderer Michael Schwartzbach, der mener, at de datalogi-studerende på Aarhus Universitet bør have kendskab til de fleste af fejlene på top 25-liste.
"Der er ikke noget kursus, der gennemgår listen fra ende til anden, men SQL indsættelse lærer man om på database-kurset, race conditions hører under vores Concurrency-kursus og hele sektionen om Porøst forsvar undervises der om på vores sikkerhedskursus. Mange af problemerne er web-relaterede; dem kommer vi ind på via vores webteknologi-kursus. Det er altsammen på vores bachelor-del," siger Michael Schwarzbach, der dog ikke kan garantere, at Århus-datalogerne ikke laver fejl:
"Jeg kan ikke love, at enhver der har bestået kurserne, ikke vil lave nogle af fejlene."
Hos Microsofts udviklingscenter i Vedbæk tager man også softwarefejl alvorligt, selvom man heller ikke her vil garantere nul fejl.
Microsoft og Dansk IT: Mere fokus på test
I Microsoft udviklingscenter i Vedbæk, hvor Microsofts Dynamics-systemer udvikles, genkender man ikke SANS beskrivelse af, at softwarefejl ikke tages seriøst.
"Vi kan ikke genkende det billede. For 5-10 år siden uddannede man ikke folk med fokus på det. Men uddannelserne i dag tager det meget alvorligt," siger udviklingsdirektør Michael Nielsen fra Microsoft Development Center Copenhagen.
Mere fokus på test
Selvom det tilsyneladende ikke står så galt til som SANS mener, så er der stadig plads til forbedringer. Både på uddannelsesinstitutionerne og i it-virksomhederne. Der bør eksempelvis gøres mere ud af test-disciplinen.
"Uddannelsesinstitutionerne har ikke samme fokus på test, som de har på udvikling. Vi ville ikke have noget imod en decideret testuddannelse på DTU eller ITU," lyder det fra Microsofts Director for Program Management, Kim Ibfelt.
Microsoft har selv taget initiativ til at sætte mere fokus på test-disciplinen i de danske it-uddannelser. De sidste fem år har Microsoft afholdt et kursus om softwaretest og kvalitetssikring på DTU.
Ønsket om større fokus på test-disciplinen er noget som bifaldes hos Dansk IT.
"Der bør være mere fokus på softwaretestning. Uddannelsesmæssigt og projektmæssigt er det et underprioriteret område. Der er rigtig god grund til at opprioritere softwaretest som fagdisciplin, både som undervisning og i virksomhederne. Der bliver ikke testet nok i forbindelse med udvikling af software," mener Tony Franke, direktør i Dansk IT.
Ifølge Tony Franke er det både it-leverandørerne og kunderne som skal have mere fokus på softwarekvalitet.
"Både kunder og leverandører skal have større fokus på det. Kunderne skal med deres købsadfærd påvirke markedet. De skal ikke genkøbe hos dem, der ikke leverer en god vare," mener Tony Franke.
Er fejlfri software uopnåeligt?
Men selvom virksomhederne opprioriterer softwaretest og uddannelserne fokuserer mere på sikker softwareudvikling, så vil den fejlfri og sikre software være så godt som uopnåelig, mener de danske it-folk.
Uanede fejlmuligheder
"Uanset hvor meget man uddanner folk, så vil der altid være en liste med de 25 mest almindelige fejl. Man får aldrig udryddet fejl," mener Michael Schwartzbach, der stiller spørgsmålet:
"Fejlfri software? Hvad er det? Hvis programmet overholder specifikationen og specifikationen ikke passer med virkeligheden, er der så fejl i softwaren eller i specifikationen?"
Hos Microsoft prøver man at undgå specifikationer, der ikke tager højde for sikkerhedstrusler. I designfasen udarbejdes trusselsanalyser, hvor potentielle sårbarheder i det fremtidige system identificeres, så de kan undgås eller afbødes.
Tænk som hacker
"Threat-analysis udarbejdes samtidigt med design, inden der kodes en linje. Threat-analysis undersøger, hvordan man kan undgå, at hackere udnytter produktet til ondsindede formål," forklarer Michael Nielsen.
"Det er en god designstrategi, men det vil ikke kunne afhjælpe alle fremtidige trusler, mener Michael Schwarzbach og uddyber:
"Man kan aldrig uddanne folk på et niveau, så de kan forudse samtlige trusler. Den dag kommer aldrig. Pludselig skal programmet køre i en ny kontekst, som man ikke havde forestillet sig. Selvom specifikationen er på plads, så er der nogle der vil bruge det i en anden kontekst og det var man ikke klar over, da specifikationen blev lavet. Verden er for dynamisk til at man kan gardere sig mod alt," mener Michael Schwartzbach.
I det danske Microsoft-udviklingscenter får det konsekvenser for Michael Nielsen og hans udviklingsorganisation, hvis der er fejl i den udviklede software.
"Vi bliver gjort ansvarlige for fejl internt i Microsoft. Er der fejl i vores software, så kommer det på vores karakterblad," siger Michael Nielsen.
Derfor stræber den danske udviklingsorganisation da også efter fejlfri software, men det er tvivlsomt, om det er et reelt opnåeligt mål.
Vil det lykkes at lave fejlfri software?
"Det har jeg svært ved at forestille mig," siger Kim Ibfelt og han suppleres af Michael Nielsen:
"Du spørger, om man kan lave fejlfri produkter. Der findes heller ikke fejlfri biler eller køleskabe endnu."
Så drømmen om fejlfri og sikker software forbliver tilsyneladende en drøm.
"Vi skal stile efter at minimere antallet af fejl og ikke lave den samme fejl to gange," lyder den mere beskedne, men måske også mere realistiske melding fra Michael Schwartzbach.