Sikkerhedsorganisationen SANS har offentliggjort en liste over de 25 farligste og oftest forekommende programmeringsfejl.
Mere end 30 virksomheder og organisationer har været med til at udpege de alvorligste problemer, som findes i software i dag.
Ofte forekommende fejl
Kigger man listen igennem, er det en lidt forstemmende oplevelse i betragtning af, at vi skriver år 2009.
Bufferoverflow er stadig et ofte forekommende problem, ligesom der ofte ikke foretages inputvalidering i softwaren, der udvikles i dag.
Som folkene bag top 25-listen, skriver i forbindelse med offentliggørelsen af listen:
"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.
Fejlene har vidtrækkende betydning. Blot to af dem førte til mere end 1,5 millioner sikkerhedsbrister på websites i løbet af 2008 - og de sikkerhedsbrister medførte, at folk, der besøgte de berørte websites, fik omdannet deres computere til zombier."
Liste som kontraktgrundlag?
Håbet er, at listen vil få it-branchen til at udvikle mere stabile programmer med færre fejl.
Men listen er ikke kun beregnet til at skærpe udviklernes opmærksomhed på at undgå farlige programmeringsfejl.
Listen skal også bruges i forbindelse med kontraktindgåelse. Det håber SANS' forskningsdirektør Alan Paller bliver tilfældet.
"Top 25-listen er den slags, som bør indføjes i dine kontrakter," siger Alan Paller til IDG News Service.
Tidligere forsøg på at gøre softwareindustrien mere opmærksom på problemerne og få kunder til at stille krav til leverandørerne har dog ikke haft den store succes.
Alan Paller erkender eksempelvis, at SANS' Top 20-liste over sikkerhedsrisici fra 2007 ikke fik leverandørerne til at levere mindre fejlbehæftet software.
Den nye liste er dog mere gennemarbejdet, og håbet er, at efterretningstjenester som NSA og andre regeringsmyndigheder, som har været med i udarbejdelsen af top 25, vil medvirke til at få listen indarbejdet i kontrakter mellem leverandører og kunder.
Fokus på forebyggelse fremfor afhjælpning
"Offentliggørelse af en liste over programmeringsfejl, som gør cyberspionage og cyberkriminalitet muligt, repræsenterer et vigtigt skifte i sikkerhedsbevidstheden, et skifte væk fra en systemadministrator synsvinkel [detect/respond/patch] til fokus på softwareudvikling [design/implementer/verificer]," lyder det eksempelvis fra Konrad Vesey, fra NSA's Information Assurance Directorate.
"Når forbrugerne ser, at de fleste sårbarheder er forårsaget af bare 25 svagheder, så vil en ny standard for passende omhyggelighed i produktudvikling formentlig opstå. Softwaresikkerhed ændres fra at handle om, hvad leverandøren tester for, til hvad leverandøren indbygger i produktet."
De 25 farligste programmeringsfejl
De 25 programmeringsfejl er inddelt i tre kategorier:
Usikker interaktion mellem komponenter, risikofyldt ressourcehåndtering og porøst forsvar.
For hver enkelt programmeringsfejl gives en risikovurdering og det beskrives hvordan man kan undgå at introducere fejlen under arkitekturarbejde, design, implementering og build af systemer. Samtidig gives råd til hvordan man tester for softwarefejlene.
Usikker interaktion mellem komponenter
Fortrolig information sendes ukrypteret
Cross-site request forfalskning
Fejlmeddelelser med læk af systeminformation
Risikofyldt ressourcehåndtering
Manglende kontrol med kritiske data
Mangelfuld kontrol af filnavne
Mangelfuld frigivelse eller fjernelse af ressource
Porøst forsvar
Mangelfuld adgangskontrol og authorisation
Kritiske ressourcer uden passende permission assignment
Tilfældige tal er ikke tilfældige nok
Eksekvering med unødvendige privilegier
Klient, der håndhæver serversikkerhed
Den samlede top 25-liste findes her