Bakdörrar i program

Uppdatering @ 2011-01-13: Tydligen har jag och CJ fortfarande någon form av mind sync; han tar diskussionen om bakdörrar till en högre nivå på sin blogg. Samtidigt. :-)

I sin essä The Cathedral and the Bazaar från 1997 konstaterar Eric Raymond att given enough eyeballs, all bugs are shallow. När tillräckligt många programmerare tittar på koden kan alla buggar upptäckas. Bakgrunden till teorin är förstås erfarenheterna från Linuxkärnans utveckling under 90-talet.


I projekt med öppen källkod kan ju vem som helst titta på källkoden. "Vem som helst" borde ju innebära "väldigt många", inte sant? Eftersom säkerhetsbuggar är en delmängd av buggar, finns det generellt färre säkerhetsbuggar i program med öppen källkod?

Det här är ett fånigt känsligt ämne och är bidragande till många bråk. De som hörs mest är, som vanligt, de längst ut på vardera kant och, som vanligt, har ingen av kanterna rätt. Teorin är alldeles för generaliserad för att kunna besvaras som ett antingen-eller.

En vanlig tillflyktsort för Raymonds förespråkare är "...men du har åtminstone möjligheten att granska koden". Det är helt korrekt men har inget att göra med mängden buggar som finns eller inte. Det är dock intressant, varför skulle man vilja granska ett program? Uppfyller det våra säkerhetskrav? Verkar det vara välskrivet? Innehåller det några bakdörrar?

Bakdörrar
En bakdörr i ett program kan beskrivas som ett inofficiellt och dolt gränssnitt till programmet. Begreppet blev populärt i samband med filmen Wargames från 1983 där ett hemligt lösenord, "joshua", ger omedelbar tillgång till AI-datorn WOPR på NORAD. <begreppsnazism>Bakdörr är också vad många generellt menar när de istället säger trojan även fast gränsen ofta är fin.</begreppsnazism> Nyckeln till det hela är att bakdörren är just dold. Annars hade det väl bara varit en... dörr, antar jag.


Ken Thompson, legendarisk för sitt arbete med Multics och UNIX, höll 1984 ett tal, Reflections on Trusting Trust, där han beskrev hur en kompilator kan trojaniseras så att den lägger till bakdörrar i program den kompilerar. Som en bonus trojaniserar den även sig själv vid kompilering (även kompilatorer kompileras, ibland paradoxalt nog av sig själva). Inte nog med det, Thomson demonstrerade också en kompilator som sabbade de disassemblers den kompilerade så att de helt enkelt gömde de bakdörrar kompilatorn placerat ut.

Förhoppningsvis (vi vet ju inte) är bakdörrar i "verkligheten" sällan så esoteriska. För att knyta ihop; några exempel på bakdörrar i projekt med öppen källkod:

Linux 2.6
Vi börjar med ett som är rätt gammalt men ändå förtjänar ett omnämnande. I november 2003 lades två rader till i filen kernel/exit.c. Om ett särskilt kriterium uppfylldes uppgraderades användaren till root. Väldigt subtilt. Läs konversationen på kernel-listan på Kerneltrap. Bakdörren upptäcktes omedelbart.

UnrealIRCd 3.2.8.1
I somras (2010) gick utvecklarna bakom den populära IRC-servern ut med att en bakdörr har upptäckts i filen include/struct.h. Även den här gången har två rader lagts till varav den ena anropar system() för att exekvera kommandon. Läs mer på deras forum. Bakdörren hade funnits i källkoden i mer än ett halvår.

ProFTPD 1.3.3c
I början av december 2010 upptäcktes en bakdörr i FTP-servern. När kommandot "HELP ACIDBITCHEZ" gavs hamnade man i ett root-shell. Ändringen gjordes på servern som servrar tarbollarna, inte i CVS-trädet. Läs meddelandet på mailinglistan för mer information. Bakdörren hade existerat i mindre än en vecka.

OpenBSD?
I mitten av december fick Theo de Raadt ett mail som hävdade att FBI hade lagt in bakdörrar i operativsystemets IPSEC-stack. Det hela verkar ganska otroligt och har inte kunnat bevisas.

Ettercap NG-0.7.3?
I ett zine som publicerades under julhelgen, Owned and Exposed, gjordes antydningar till att det populära snifferverktyget Ettercap har haft en bakdörr sedan många år tillbaka. Inget har bekräftats och på SpiderLabs blogg har man undersökt saken och kommit fram till att det är osannolikt.

Samtliga exempel ovan har antingen upptäckts (ibland snabbt, ibland inte) eller inte kunnat bevisas. Vilka slutsatser kan vi dra från det gentemot Raymonds teori om många ögon och Thompsons exempel på bakdörrar som är extremt svåra att hitta? Inte många.

--
Stefan Pettersson


Kommentarer

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback

HPS säkerhetsblogg


High Performance Systems logo


RSS 2.0