Under förra året upptäcktes det 4 775 sårbarheter, enligt säkerhetsföretaget Symantec. Runt dessa säkerhetshål har det byggts upp en hela tiden växande industri – både bland hackare och leverantörer.

För it-säkerhetscheferna är det en apparat som måste fungera prickfritt om man inte vill ha oinbjudna gäster.

Men hur går det egentligen till när leverantörerna själva, konsultföretag eller i västa fall hackare, upptäcker alla dessa säkerhetshål i operativsystem, databaser, ordbehandlare och så vidare?

Hitta säkerhetshål gör man antingen när programmet utvecklas eller när det är färdigt. Det förstnämnda är naturligtvis det bästa.

En av de populäraste teknikerna som används är så kallad fuzzing, som kan användas både under utvecklingsfasen och när programmet är klart. Det innebär kort och gott att man använder ett verktyg som kastar en massa konstig data mot tillämpningen för att se hur den reagerar.

– Den stora fördelen med fuzzing är att den inte kräver en så stor arbetsinsats och kan ge rätt goda resultat. Sedan kan du också låta testet pågå hur länge som helst, säger Joel Eriksson, forsknings- och utvecklingschef på det svenska säkerhetskonsultföretaget Bitsec.

Om tillämpningen kraschar under testet innebär det att det finns ett fel som kanske kan utnyttjas. För att kunna avgöra om det är frågan om ett säkerhetshål krä vs bland annat goda kunskaper om de tekniker som används för att utnyttja olika typer av sårbarheter.

Joel Eriksson delar in fuzzing i två grupper: intelligent och dum. Men han vill understryka att man inte ska lägga in några värderingar i namnen. Båda har sina fördelar och nackdelar.

– Intelligent fuzzing innebär att du anpassar den data som skickas efter vad det är för tillämpning eller protokoll. Dum fuzzing innebär att datan är mera slumpvald, säger Joel Eriksson.

Den första ger mest utdelning på kort tid. Men med dum fuzzing blir det möjligt att hitta mer oväntade hål efter ett par veckors eller månaders tester.

För den som är intresserad finns det en rad verktyg som kan användas för att göra fuzzingtester. Två av de mest kända är Spike och Peach. Det här är dock inga färdiga paket, utan programmeringsgränssnitt som sedan måste anpassas.

Men även om fuzzing är den vanligaste tekniken finns det andra sätt. Den mest grundläggande är gammal hederlig källkodsgranskning, både med egen intelligens och med olika verktyg.

– Vad du som utvecklare ska leta efter och vara extra noga med är ställen i koden som accepterar användarinmatning, eller kräver högre rättigheter än vad en vanlig användare vanligtvis har, säger Johan Lindfors, som ansvarar för de tekniska evangelister på Microsoft som pratar med utvecklare.

Just inmatning är en av de vanligaste källorna till säkerhetshål. En bra grundregel för utvecklare är att ”all input is evil”.

– Du måste se till att all inmatning kontrolleras och analyseras före användning. Felaktigheter kan bland annat leda vanligaste attacken mot tillämpningar, så kallad buffer overrun, säger Johan Lindfors.

Och även om problem med rättigheter inte är en lika vanlig källa är det också något som måste kontrolleras rigoröst, enligt Johan Lindfors.

– Om en attack sker mot en sådan sektion exekverar den eventuellt koden med administrativa rättigheter och har då full åtkomst till systemet, säger Johan Lindfors.

Men utvecklingen går framåt också. Det har börjat dyka upp företag som paketerar testverktyg för fuzzing, till exempel Codenomicon och Mu Security.

– Jag tror vi får se fler företag som paketerar den här typen av produkter. En brist med de flesta av dessa är dock att de huvudsakligen är fokuserade på att generera testfall.

– En minst lika viktig del är att detektera alla de typer av feltillstånd som kan vara tecken på en säkerhetslucka, säger Joel Eriksson.

Fakta

Under andra halvåret 2006 upptäcktes 2 526 säkerhetshål, enligt Symantec. Det är en ökning med 12 procent jämfört med första halvåret. Av dessa klassificerade säkerhetsföretaget fyra procent som allvarliga.