Hoppa till innehållet

Bakdörr

Från Wikipedia

Bakdörr, engelska back door, betyder i fråga om datasäkerhet ett datorprogram eller en modifikation av ett program som möjliggör åtkomst till datorn utan att använda de normala säkerhetskontrollerna.

Olika typer av bakdörrar

[redigera | redigera wikitext]

Syftet med bakdörren är oftast att ge skaparen tillgång till den lokala datorn via Internet. Enklast görs detta genom att den programprocess som normalt genomför åtkomstkontroll byts ut mot en modifierad process. Denna tillåter utöver de normala användarnamnen även ett inbyggt lösenord. Om systemet fungerar normalt trots bakdörren är den svår att upptäcka. Upptäckt kan ytterligare försvåras genom användning av någon typ av rootkit.

Valfri nätverksprocess kan användas för bakdörren genom att en viss nyckel aktiverar den login-kod som byggts in i den modifierade versionen av serverprogrammet. Bakdörren behöver inte installeras i själva serverprogrammet, utan kan till exempel placeras i ett cgi-program och aktiveras via en nyckel, till exempel en speciell www-adress. Genom att ge nätverksprocesser begränsade rättigheter försvåras användandet av bakdörren.

En vanlig användare, och därmed program körda av denna, har på de flesta datorer tillräckliga rättigheter för att installera och köra program som lyssnar på nätverket. Däremot har en vanlig användare inte rätt att använda de "portar" som normalt används för internetservrar, varför sådana privata servrar är rätt lätta att stoppa med hjälp av en brandvägg. Routrar med NAT (vanliga i ADSL-modem) brukar också vara inställda att inte dirigera obehörig trafik till datorn.

För att en bakdörr som befinner sig bakom en brandvägg skall kunna ge utomstående kontroll över datorns måste bakdörren initiera kontakten. Bakdörren tar då kontakt med en dator utanför brandväggen. Härigenom skapas antingen en "tunnel" för normal interaktiv förbindelse, eller så hämtas enbart instruktioner. I det senare fallet kan datorn som används för kommunikationen vara offentlig, som exempelvis chat- eller diskussionsforum (irc, webbforum, nyhetsgrupper). Man kan också utnyttja sådan trafik som normalt tillåts passera brandväggen, till exempel inkommande e-post. Instruktionerna måste då vara mer eller mindre kodade.

Att skapa bakdörrar

[redigera | redigera wikitext]

Vid inbrott i datorsystem är det vanligt att brottslingen skapar en bakdörr för att ha fortsatt tillgång till systemet efter att den ursprungliga säkerhetsluckan täppts till. Bakdörren kan kombineras med en rootkit som döljer bakdörren.

Inbrott görs ofta automatiskt med hjälp av skadlig programkod som datorvirus, internetmaskar eller trojanska hästar. En bakdörr skapas då för att senare komma åt systemet på ett enklare sett. Då inbrottsförsök görs i stora antal på slumpvis utvalda datorer är det dessutom väsentligt att lyckade inbrottsförsök rapporteras på något sätt (jämför botnet).

En legitim användare som vet att hon eller han kommer att mista sin access, på grund av konflikter på arbetsplatsen eller liknande, kan vilja säkra sin access genom en bakdörr. Användaren kan då installera ett program som lyssnar på nätet och ger den önskade accessen, till exempel en normal ssh-server inställd att använda andra filer än de vanliga eller att använda inprogrammerade lösenord utöver dem i systemfilerna. Programmet kan enkelt installeras så att det automatiskt startar.

En dator som förblir olåst under kaffepausen kan ge en normalt icke-legitim användare möjlighet att installera en bakdörr. Detta kan ske på några sekunder av exempelvis en industrispion som fått arbete som städare. Eftersom den egentliga användaren sannolikt behåller sin dator och sina användarrättigheter en längre tid kan bakdörren köras automatiskt under lång tid.

Om användaren har administratörsrättigheter eller hanterar program som kommer att installeras kan användaren (eller skadlig kod som användare kör av misstag) modifiera serverprogram, kod som skall installeras som serverprogram eller filer som kommer att användas av serverprogram. Inga extra program behövs vilket minskar upptäcktsrisken. Användaren kan också på detta sätt skaffa sig större rättigheter än hon eller han normalt skulle ha. På väl underhållna system brukar man dock ha olika kontroller på att de använda programmen inte modifierats, varvid mer avancerade tekniker krävs.

Inte sällan upprättas bakdörrar utan onda avsikter av de kodare som med skapar och avlusar mjukvaran - för att sedan glömmas kvar i det färdiga systemet.[1]

Ett avancerat sätt att skapa en bakdörr beskrevs av Ken Thompson i sitt berömda föredrag Reflections on Trusting Trust: Själva kompilatorn modifieras så att den lägger in bakdörren, då den kompilerar vissa program. Om en kompilator används allmänt, som till exempel GCC i GNU-system, och man lyckas modifiera denna, kan bakdörren vara mer eller mindre omöjlig att upptäcka utan omfattande studier av maskinkoden eller kodens beteende.

En motsvarande bakdörr skulle kunna installeras i datorns BIOS, en processors mikrokod eller andra sällan studerade program. Problemet här är att skapa tillräckligt avancerad och allmänt hållen kod som ändå ryms i tillgängligt utrymme. Med billigare och därmed större minnen är det dock fullt möjligt. Diskussionen kring DRM har ibland gått i denna riktning.

I en del länder har det framställts krav på att programvara för allmänheten eller för export inte får skyddas av alltför stark kryptografi eller att nycklar eller delar av nycklar måste ges åt myndigheterna[2], för att inte brottslingar och terrorister skall kunna gömma sig och sina avsikter. I de flesta fall har systemen haft brister som tillåtit andra än myndigheterna att utnyttja samma svagheter.

Datorprogram med öppen källkod (t.ex. fri programvara) är i princip lätt att modifiera för vem som helst. Det svåra är att ge spridning åt den modifierade versionen. Ett känt försök att installera en bakdörr i Linux-kärnan gjordes den 5 december 2003.[3]. Försöket upptäcktes snabbt eftersom kodändringen i kärnan inte bokförts enligt reglerna. Programändringen, if (uid=0) istället för if (uid==0), var annars svårupptäckt. Sluten programvara kan modifieras på motsvarande sätt av dem med lämpliga rättigheter och är då ännu svårare att upptäcka, eftersom färre människor har tillgång till källkoden.

Skydd mot bakdörrar

[redigera | redigera wikitext]

Det bästa skyddet mot bakdörrar är att inte köra programkod man inte har skäl att lita på. Se trojanska hästar. Inom organisationer gäller det att dels få folk att förstå att undvika sådan kod, dels se till att möjligheterna att köra potentiellt farlig kod minimeras. Ofta filtrerar man e-post och ibland www-trafik, men det kan vara svårt att isolera en arbetsplats från de anställdas sämre skyddade privata datoranvändning; det räcker att någon tar med sig en CD-skiva och, medvetet eller omedvetet, kör kod som gömts på denna. Med bra personalpolitik, utbildning och information kan man motarbeta omedveten installation av bakdörrar.

De flesta datorsystem har datorprogram skrivna av utomstående. Då det i praktiken är omöjligt att kontrollera all kod, i synnerhet då man sällan har tillgång till källkoden, gäller det att välja vems program man skall lita på. Nästa steg är att försäkra sig om att de program man installerar inte manipulerats på vägen. Distributörer av fri programvara använder ofta kontrollsummor som tillhandahålls skilt från programmen och signeras av utvecklaren (jämför MD5, PGP). Om företaget har stora resurser kan det självt kontrollera förändringar i källkoden samt kompilera den.

Modifikationer av redan installerad programvara kan upptäckas genom jämförelse av filernas kontrollsummor med kontrollsummor sparade i samband med installationen. Problemen är två: Dels behöver filerna på hårdskivan inte vara identiska med de program som de facto körs i arbetsminnet, dels kan också de verktyg man använder för att kontrollera filerna vara modifierade, så att de rapporterar den förväntade kontrollsumman oberoende av den verkliga filen. I praktiken är kontrollerna säkra endast då de utförs efter omstart från pålitligt medium. Om BIOS-programmet i en PC-dator eller motsvarande kod i andra datorer modifierats, till exempel via ACPI, är inte ens detta nödvändigtvis tillräckligt.

Slutligen kan man observera nättrafik, gärna med en för ändamålet dedicerad dator, och försöka hitta avvikande mönster. Motsvarande observationer kan göras på den eventuellt drabbade datorn.

  1. ^ rootmydevice (eng.) om glömd bakdörr
  2. ^ Se Key escrow (eng.)
  3. ^ kerneltrap (eng.) om linux-bakdörren