25 feil som ethvert program må unngå

Et initiativ fra SANS og MITRE legger et grunnlag for at all programvare kan bli langt sikrere.

Topp 25-listen over programmeringsfeil vil presse fram nye verktøy og bedre praksis, tror SANS Institute (foto: Stock Xchange)
Topp 25-listen over programmeringsfeil vil presse fram nye verktøy og bedre praksis, tror SANS Institute (foto: Stock Xchange)
13. jan. 2009 - 14:06

I går publiserte to kjente amerikanske institusjoner innen kybersikkerhet, SANS Institute og MITRE, rapporten fra et initiativ kalt Top 25 Errors, der eksperter fra mer enn 30 amerikanske og internasjonale organisasjoner har funnet fram til de 25 farligste programmeringsfeilene.

Hele listen er tilgjengelig fra MITRE på denne nettsiden: 2009 CWE/SANS Top 25 Most Dangerous Programming Errors. Her får man blant annet en gjennomgang av hver feil, med hvor utbredt den er, hvor mye det koster å bøte på den, hva som må gjøres for å unngå feilen, hvor ofte den blir utnyttet av kriminelle elementer, hvilke følger sårbarheten kan få, hvor vanskelig det er å for utenforstående å avsløre feilen, og hvor bevisst angripere er på at denne typen feil kan utnyttes.

I en redegjørelse fra prosjekt leder Bob Martin i MITRE – se Experts Announce Agreement on the 25 Most Dangerous Programming Errors - And How to Fix Them – understrekes det at det er disse 25 feilene svært utbredte feilene som står for sårbarhetene som i sin tur gjør det mulig å drive med kyberspionasje og kyberkriminalitet.

– Det sjokkerende er at programmerer ikke har innsikt i de fleste av disse feilene. Hvordan de skal unngås er ikke gjenstand for opplæring i programmering. Organisasjoner som utvikler kommersiell programvare unnlater ofte å teste for dem, skriver Martin.

Han forteller at i 2008 lå bare to av disse typiske feilene til grunn for mer enn 1,5 millioner innbrudd mot nettsteder. Innbruddene førte til at folk som besøkte disse nettstedene fikk sine pc-er kapret av utenforstående, til såkalte zombie-nett.

Ekspertene bak listen kommer fra private selskaper som Symantec og Microsoft, og fra institusjoner som USAs departement for innenriks sikkerhet (Department of Home Security) og NSA (National Security Agency).

Martin skriver at det er bred enighet blant ekspertene om at nettopp de 25 feilene på listen er dem som det må gjøres noe med straks.

– Det ser ut til å være bred enighet om programmeringsfeilene. Nå er tiden inne til å fikse dem. Først må vi forsikre oss at enhver programmerer vet hvordan man skal skrive kode som er fri for disse 25 feilene. Så må vi sikre at alle som programmerer retter seg etter prosesser for å finne, fikse eller unngå problemene, og har det nødvendige verktøyet for å sjekke at koden de framstiller er så fri fra disse feilene som mulig, heter det i en kommentar fra Mason Brown, direktør i SANS Institute.

Toppsjef Paul Kurtz i forumet Software Assurance Forum for Excellence in Code (SAFECode) har denne kommentaren:

– Med denne topp 25-listen vil vi kunne bruke mindre tid på å samarbeide med politiet etter et innbrudd, og i stedet låse dørene før tyvene kommer.

MITRE-sjef Martin tror topp 25-listen vil føre til store endringer i programvaremarkedet, i programmereres arbeidsrutiner, i utdanningen av IT-folk og i arbeidsmarkedet.

Han tror at de som kjøper programvare vil kreve garantier fra leverandørene at koden er gransket og funnet fri for de 25 farligste feilene.

Myndighetene i flere amerikanske delstater, blant dem New York, skal allerede være i ferd med å utarbeide formuleringer som vil tvinge leverandører til å garantere mot topp 25-feilene. Den amerikanske regjeringen vil etter hvert innarbeide topp 25-listen i ordningen kjent som Common Criteria, som ett av flere tiltak for å sikre at det ikke kjøpes inn kode uten garanti mot topp 25-feilene.

Martin tror videre at verktøy for å analysere kode, og utviklingsmiljøer utformet med tanke på å unngå topp 25-feilene, vil gjøres tilgjengelig fra de viktigste leverandørene av programmeringsverktøy. Verktøy som tester for en stor del av feilene på listen skal allerede være på vei mot markedet.

Utdanningsinstitusjoner står nå klare til å gripe fatt i topp 25-listen og benytte den i undervisningen, ifølge Martin. Et eksempel er University of California i Davis der alle studenter må kjøre sin kode gjennom en «kodeklinikk» basert på topp 25-listen.

Martin tror videre at arbeidsgivere vil kreve at programmerere sertifiseres etter ordninger som er bevisste på topp 25-listen. Han nevner sertifiseringen GSSP (GIAC Secure Software Programmer) som nå er i ferd med å fornyes med tanke på topp 25-listen.

Carsten Eiram i det danske IT-sikkerhetsselskapet Secunia er blant dem som roser topp 25-listen. Han sier den «uten tvil er en av de mest nyttige oppsummeringene av typiske kodefeil som gjør programvare sårbar.»

De 25 verste programmeringsfeilene er fordelt på tre kategorier:

  • Usikker samspill mellom komponenter
  • Risikabel ressursforvaltning
  • Porøst forsvar

Ikke uventet er manglende validering av inndata vurdert som den absolutt verste av de verste.

I gjennomgangen heter det:

– [Manglende validering av inndata] er den mest utbredte dødsårsaken for ellers sunn programvare. Du ber om problemer hvis du ikke forsikrer at inndata svarer til det du venter. For eksempel, ber du om noe som bare skal bestå av tall, må du sørge for å avslå bokstaver. Prisen på en ny bil skal aldri settes til én dollar, selv i dagens økonomiske situasjon.

Nummer to på liste er manglende kontroll med utdata, det vil si data og meldinger som en komponent sender videre til andre komponenter. Det advares at datamaskiner har for vane å gjøre det de blir bedt om, ikke det programmereren ønsker at de skal bli bedt om. Manglende kontroll med utdata er årsaken til en rekke angrep, der meldinger fra en komponent manipuleres innen den når en annen komponent. I stedet for å rette seg etter programmererens ønske, retter programmet seg etter angriperens ønske. Topp 25-listen inneholder mange anbefalinger på hvordan man kan unngå slike feil under programmeringen, og hvordan de kan avsløres i ferdig kode.

Det er tilsvarende konkrete anvisninger på hvordan unngå og avsløre kodefeil som fører til SQL-injisering, kryssende skripting (XSS eller «cross site scripting»), kommando-injisering, overføring av følsom informasjon i klartekst, usikrede buffere og så videre.

Hva synes du? Er 2009 CWE/SANS Top 25 Most Dangerous Programming Errors et nyttig verktøy?

    Les også:

Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.