Om hvorfor antivirus ikke funker – og hvorfor du uansett ikke trenger antivirus

I tillegg til å være skeptisk til brannmurer har jeg en veldig klar forestilling om hvor jeg synes antivirus – for ikke å si all antiware – hører hjemme.

For å ta det med en gang, antiware er programvare som er laget for å forhindre kompromittering gjennom skadelig programvare, kalt malware. Dette inkluderer antivirus og antispyware samt programvare som skal forsvare en maskin mot ett eller annet angrep. Jeg skal la være å nevne navn på slike produkter, men om du loves å få en sikker eller sikrere maskin ved å installere en gitt programvarefnutt så er sjansen stor for at det kan kategoriseres som antiware.

Jeg fokuserer i denne omgang først og fremst på antivirus, altså programvare som skal beskytte en maskin mot infeksjon av virus. Siden jeg fortsatt forsøker å skrive for menigmann er det greit å avklare kort hva virus egentlig er, men i stedet for å starte en krangel om hva som er virus og hva som er ormer så ser jeg heller på måten man infiseres fordi det er her antivirus skal fungere.

Et virus er kort og godt en programvarebit som har en skadelig funksjon. Denne funksjonen kan være å slette eller endre informasjon eller filer, stjele systemressurser, åpne et system for videre utnyttelse eller annet. I tillegg har gjerne virus en funksjon for videre spredning for eksempel ved å infisere andre programfiler eller å sende epost med virusprogrammet som vedlegg.

For at virus skal kunne smitte en maskin må altså programvaren kjøre. Dette kan skje ved at brukere åpner epostvedlegg med viruskoden, at man klikker på linker i epost som laster ned programkoden, at man starter opp nedlastede eller overførte programfiler, at man setter inn og starter opp CD’er eller annet.

Den enkle løsningen på virusproblemet burde være å enkelt som å hindre kjøring av ukjent programvare. Dersom all programkode er eksplisitt forhindret fra å kjøre så vil heller ikke viruskode kjøre. Dette medfører noen utfordinger, for eksempel hvordan man skal tillate kjøring av vennligsinnet programkode. Det er dog mulig å få til dette relativt enkelt, og jeg skal forklare hvordan litt senere i denne artikkelen.

Først vil jeg derimot forklare litt hvordan antivirus fungerer. Den primære metoden, merk at dette ikke er den eneste, er å bruke såkalte virussignaturer. En signatur er en unik identifikator for en bit informasjon, for eksempel en programfil. Signaturer lages ved å benytte en hash-algoritme, for eksempel MD5 (se f.eks. http://en.wikipedia.org/wiki/MD5). Denne algoritmen returnerer en tekststreng som er tilnærmet garantert unik for programfilen. Denne tekststrengen er hva man kaller en signatur. Når man senere starter opp en programkode kan man generere en signatur også for denne programkoden. Ved å sammenlikne signaturen fra denne programkoden med signaturene for kjente virus vil man raskt se om programkoden er virus. Er signaturene like er programkoden man vil kjøre et virus.

Det store problemet med signaturbasert antivirus er behovet for signaturer. Disse signaturene genereres gjerne av selskapet som lager antivirusproduktet og distribueres ut til sluttbrukerene. Dette er vanligvis en betalingstjeneste, der man abonnerer på oppdaterte signaturer. Dersom man avslutter abonnementet mister man også tilgangen til oppdaterte signaturer og effektiv et fungerende antivirusprodukt. Dermed blir man låst til å jevnlig måtte betale antivirusselskapene for å fortsatt være ‘sikker’.

Det andre problemet med behov for signaturer er at virus først må eksistere før man kan generere en signatur. Mikko Hyppönen sa i et intervju i 2005 (http://www.techworld.com/security/features/index.cfm?featureid=1926&pagtype;=samecatsamechan) at det finnes 140.000 virus for Windows plattformen. Dersom man regner at dette inkluderer alle versjoner siden Windows 95 betyr det at det på 10 år har kommet gjennomsnitlig 40 nye virus hver dag. Med tanke på at virusspredningen har tatt seg opp vesentlig de siste årene er det ikke spekulativt å anta at tallet er langt høyere i dag.

Det betyr for det første at antivirusselskapene må jobbe på spreng for å oppdatere virussignaturer. Det betyr også at selv om du oppdaterer antivirussignaturene dine hver dag vil det fortsatt ha kommet over 40 nye virus innen du får oppdatert på nytt. Når man vet at mange virus spres mest effektift de første dagene etter at det er sluppet løs så kan man lett bli skremt av at det tar et døgn før man er beskyttet.

Videre sier Hyppönen at det også stadig kommer virus som er skrevet for å ramme spesifikke maskiner eller organisasjoner. Dette gjør det i praksis umulig for antivirusselskapene å lage signaturer for alle virus. Det er kun de virusene som får en viss spredning som vil få antivirussignaturer. Det er også usannsylig at antivirusselskapene vil bruke masse ressurser på å beskytte hele verden mot et virus som kun rammer en enkelt bedrift.

Det er også enkelt for et virus å endre seg selv. Slike virus kalles polymorphe virus, og ettersom programkoden endres hyppig, gjerne for hver infeksjon, vil også signaturen endres slik at den kjente signaturen ikke lenger er gyldig. Varianter av dette er at viruset kan kryptere sin egen kode med ulike krypteringsalgoritmer slik at det blir vanskelig, om ikke umulig, å lage noen fungerende signatur.

Så, konklusjonen må være at signaturbasert antivirus er både dyrt og lite effektivt.

Den andre utbredte metoden for å oppdage virus er å se på oppførselen til programkoden. Dette gjøres ved å se på det som defineres som virusliknende oppførsel. For eksempel kan dette være forsøk på å slette eller modifisere store mengder filer, åpne andre programfiler for modifisering, åpne epostlister, gjøre tekstsøk i filer og liknende.

For å se etter virusliknende oppførsel kan man kjøre en programfil i en såkalt sandkasse. En sandkasse er et isolert miljø med begrenset tilgang til vertsmaskinen. Sandkassen ligger som et lag på toppen av vertsmaskinen og overvåker hvordan programkoden oppfører seg. Dersom man oppdager presumptivt farlig oppførsel kan man klassifisere programkoden som virus.
Et problem med denne metoden er at virusliknende oppførsel er et ganske vagt begrep. I noen tilfeller er den virusliknende oppførselen ønsket, for eksempel om man laster ned et program som endrer filendelser eller gjør legitime søk etter filer. Dette løses gjerne ved at brukeren forespørres om oppførselen skal godtas slik at brukeren får muligheten til å tillate kjøring av programkoden.

Det er derimot ikke sikkert at brukeren er bevisst nok på hva som anses som farlig. Et eksempel på dette kan være at brukeren laster ned en antatt legitim programbit og kjører denne. Et antivirusprogram oppdager virusliknende oppførsel og spør brukeren om koden likevel skal kjøres. Dersom brukeren ikke vet nøyaktig hva programmet skal gjøre og hvordan dette gjør utslag i virusliknende oppførsel kan det godt hende at brukeren godtar kjøringen. Det er jo tross alt et ønske om å kjøre programmet som ligger til grunn for nedlastingen.

Videre er det også slik at det ikke er sikkert at viruset oppfører seg slik som antivirusselskapet har forutsatt. Er det for eksempel virusliknende oppførsel å endre tall i et excelregneark? Er det virusliknende oppførsel å endre avspillingshastigheten på MP3-filer? Er det virusliknende oppførsel å kryptere utgående epost? Alle disse eksemplene kan være resultat av et virus, og det vil derfor være umulig for antivirusselskaper å forutse alle skadelige funksjoner.

Det bør nå være åpenbart for leserene at antivirus ikke er måten å unngå virus. Verken signaturbasert eller oppførselbasert oppdagelse er effektivt.

Så, dersom antivirus ikke løser virusproblemet, hva kan man gjøre?

Siste del av tittelen på denne artikkelen er ‘hvorfor du uansett ikke trenger antivirus’. Det finnes alternativer som garanterer deg mot spredning av virus i allefall i langt større grad enn det dagens antivirusløsninger gjør.

Som nevnt tidligere er den ultimate løsningen å hindre kjøring av ukjent programvare. Dersom ingen programvare kan kjøre får man heller ikke virus. Dette hindrer selvfølgelig også legitim programvare fra å kjøre, så man må ha en enkel måte å angi hva som er godkjent programvare.
En mulig løsning, i allefall på Windows plattformen, er å bruke en innebygget, om enn noe ukjent, funksjon som heter Software Restriction Policy (SRP), eller Programvarebegresning som det oversettes på norsk. Dette er en funksjon som ligger i den lokale sikkerhetspolitikken smo igjen er tilgjengelig gjennom administrative verktøy.

Kort fortalt så har SRP to tilstander der man enten tillater eller nekter all programvare å kjøre. I tillegg inneholder SRP en unntaksliste som endrer standardtilstanden. Dersom man skrur på SRP med begrensning av all programvare uten å gjøre andre endringer vil SRP tillate kjøring av programvare som ligger i systemkatalogen og i programfilerkatalogen. Det er vanligvis her programvare installeres.

Det elegante med dette er at begrensede brukere, som man uansett bør bruke, ikke har skriverettigheter til disse katalogene. Dersom det kommer et virus inn per epost eller på annen måte må dette nødvendigvis lagres et sted før programkoden kan kjøres. Brukere kan ikke lagre noe sted der programkode kan kjøres og dermed slipper man i praksis alle virus. Dersom man skal installere ny programvare gjør man dette som administrator.

Dette forutsetter noen enkle ting. For det første, brukeren må kjøre som begrenset bruker. Dette er en god politikk uansett, men om man kjører som adminsitrator har man uansett skrivetilgang til unntaktskatalogene i SRP.

Videre må også gyldig programvare installeres i de katalogene som nevnes og begrensning i skriverettigheter må ivaretas. Riktignok kan man legge til og trekke fra unntakene i SRP som man vil og om man passer på å fjerne skriverettigheter til disse katalogene kan man installere godkjent programvare der man vil. Dette kan være en løsning for programvare der man ikke selv kan bestemme installasjonskatalog.

Dersom man vil være ekstra sikker kan man i SRP også angi eksplisitt hvilke programfiler som skal være tillatt gjennom å bruke signaturbasert godkjennelse. Dette er ikke ulikt måten signaturbasert antivirus fungerer, men i stedet for å forhindre kjøring av signaturgjenkjent programvare så tillater man kun de signaturene man vet er venligsinnede. Denne teknikken kalles whitelist, altså at man har en eksplisitt liste over godkjent programvare.

Til syvende og sist er ikke heller SRP eller liknende whitelist teknikker helt sikre. En administrator kan fortsatt gjøre feil og programvare kan fortsatt være skadelig, selv om det ikke kategoriseres som virus. Gode backuprutiner er alltid nødvendig.

Det som dog er ennå mer viktig er god opplæring av de som gis ansvar for å kjøre programvare, enten det er brukere eller administratorer.

Found this article valuable? Want to show your appreciation? Here are some options:

a) Click on the banners anywhere on the site to visit my blog's sponsors. They are all hand-picked and are selected based on providing great products and services to the SharePoint community.

b) Donate Bitcoins! I love Bitcoins, and you can donate if you'd like by clicking the button below.

c) Spread the word! Below, you should find links to sharing this article on your favorite social media sites. I'm an attention junkie, so sharing is caring in my book!

Pin It