Undersøgelsesrapport fra Debian efter serverindbrud
2. december 2003
Debians hold af administratorer og sikkerhedseksperter har endelig kunnet konstatere hvordan indbruddene i fire projektmaskiner er foregået. Den skyldige er dog endnu ikke blevet afsløret.
Pakkearkivet blev ikke ændret af den ubudne gæst
Debians hold af administratorer og sikkerhedsteamet har meget tidligt i forløbet og genetableringsprocessen kontrolleret arkiverne (security, us, non-us). Derfor var det muligt at genåbne sikkerhedsarkivet igen og bekræfte at opdateringen til den stabile udgave (3.0r2) ikke var påvirket.
Hvis projektet havde forventet at blive ramt af indbrud samtidig med at en stabil opdatering blev overført, ville de involverede personer have udsat det. Men da de opdaterede pakker allerede var overført til den stabile udgaves arkiv og spejlserverne, da indbruddene blev opdaget, var det ikke længere muligt at tilbageholde opdateringerne.
Flere metoder baseret på forskellige kontroldata var i anvendelse for at kontrollere pakkerne og sikre at angriberen ikke havde ændret på arkivet:
- eksternt opbevarede lister over MD5-summer opsamlet i de forgangne uger på maskiner der ikke var brudt ind i
- digitalt signerede .changes-filer fra eksterne debian-devel-changes-arkiver på maskiner der ikke var brudt ind i
- digitalt signerede .changes-filer på de respektive arkivservere
- eksternt opbevarede spejllogfiler
Tidsforløb
Nedenfor er tidsforløbet fra opdagelsen til genetableringen af maskinerne der var brudt ind i. Alle tidsangivelser er i UTC. Nogle tidsangivelser er kun estimerede, da vores kommunikation ikke indeholdt præcise tidspunkter.
- 28. sep 01:33 Linus Torvalds udgiver 2.6.0-test6 hvor do_brk() er rettet
- 02. okt 05:18 Marcelo Tosatti laver et grænsecheck i do_brk()
- 19. nov 17:00 Angriber logger ind på klecker med en opsnuset adgangskode
- 19. nov 17:08 Root-kit installeres på klecker
- 19. nov 17:20 Attacker logger ind på master med en opsnuset adgangskode
- 19. nov 17:47 Root-kit installeres på master
- 19. nov 18:30 Attacker logger ind på murphy med servicekonto fra master
- 19. nov 18:35 Root-kit installeres på murphy
- 19. nov 19:25 Oops'er begynder på murphy
- 20. nov 05:38 Oops'er begynder på master
- 20. nov 20:00 Oops'er opdages på master og murphy
- 20. nov 20:54 Root-kit installeres på gluck
- 20. nov 22:00 Bekræftelse af at der har været indbrud på debian.org
- 21. nov 00:00 Deaktivering af alle konti
- 21. nov 00:34 Nedlukning af security.debian.org
- 21. nov 04:00 Nedlukning af gluck (www, cvs, people, ddtp)
- 21. nov 08:30 www.debian.org peges til www.de.debian.org
- 21. nov 10:45 Offentlig annoncering
- 21. nov 16:47 Udvikleroplysninger opdateres
- 21. nov 17:10 Nedlukning af murphy (lists) og master
- 22. nov 02:41 security.debian.org startes igen
- 25. nov 07:40 lists.debian.org startes igen
- 28. nov 22:39 Linux 2.4.23 udgives
Opdagelse
Torsdag den 20. november Om aftenen (GMT) bemærkede holdet af administratorer flere kerne-oops'er på master. Da systemet havde kørt uden problemer i lang tid, var man parate til at gennemgå systemet var eventuelle hardwareproblemer. Men på samme tid optrådte nøjagtigt de samme problemer på en anden maskine, murphy, hvilket gjorde administratorerne mistænksomme.
Desuden er der på klecker, murphy og gluck installeret "Advanced Intrusion
Detection Environment" (pakken aide)
for at overvåge ændringer af filsystemet og på omkring denne tid begyndte
programmet at advare om at /sbin/init
var blevet udskiftet og at
værdierne for mtime og ctime til /usr/lib/locale/en_US
var
ændret.
Yderligere undersøgelser afslørende at årsagen til begge problemer var SucKIT root-kit (1.3b). Programmet indeholder adgangskodeopsnusning og mulighed for at undgå opdagelse (eksempelvis værktøjer til at skjule processer og filer) som installeres direkte i kernen, hvilket medførte at oops'erne blev opdaget.
Udførlig analyse af angrebet
Onsdag den 19. november omkring kl. 17 GMT, blev en opsnuset adgangskode anvendt til at logge ind i en upriviligeret udviklerkonto på værtsmaskinen klecker (.debian.org). Angriberen hentede dernæst kildekoden via HTTP til en (på det tidspunkt) ukendt lokal kerneudnyttelse og opnåede root-rettigheder via denne udnyttelse. Derefter blev SucKIT root-kit installeret.
De samme konto- og adgangskodeoplysninger blev dernæst anvendt til at logge på maskinen master, for at opnå root-rettigheder med den samme udnyttelse og også installere SucKIT root-kit.
Angriberen prøvede dernæst at få adgang til værtsmaskinen murphy med den samme konto. Dette mislykkedes fordi der er begrænset adgang til murphy og dens eneste opgave består i at fungere som postlisteserver, hvorfor kun et fåtal af udviklerne har mulighed for at logge på maskinen. Da det første logon-forsøg ikke lykkedes, anvendte vedkommende sin root-adgang på master til at få adgang til en administrativ konto som anvendes til backup-formål, og fik adgang alligevel adgang til murphy. SucKIT root-kit blev også installeret på denne værtsmaskine.
Næste dag anvendte angriberen på master et program til opsnusning af adgangskoder, til at logge på gluck, få root-adgang og også installere SucKIT root-kit.
En teknisk undersøgelse afslørede præcise datoer og tidspunkter for hvornår
programmet /sbin/init
blev overskrevet og rootkittet installeret.
Analytikerne opdagede også den udførbare fil der blev anvendt til at få
root-adgang på maskinerne, som var beskyttet og forvansket med Burneye. Ved
udpakning og disassemblering af udnyttelsen, opdagede sikkerhedseksperterne
hvilket kernefejl, der havde været anvendt.
Et heltalsoverløb i brk-systemkaldet blev udnyttet til at overskrive kernehukommelse (ændre sidebeskyttelsesbit'er). Ved at gøre dette fik angriberen fuld kontrol over kernehukommelsen og kunne ændre alle værdier i hukommelsen.
Selvom denne kernekode blev forbedret i september af Andrew Morton og kopieret ind i en nylig før-udgivelseskerne i oktober, blev sikkerhedskonsekvenserne af forbedringen ikke taget i betragtning. Derfor blev der ikke udsendt nye sikkerhedsbulletiner af nogen producent. Men efter det blev opdaget at den blev anvendt som en lokal root-udnyttelse, har projektet Common Vulnerabilities and Exposures tildelt CAN-2003-0961 til problemet. Det er rettet i Linux 2.4.23 som blev udgivet sidste weekend og i Debians sikkerhedsbulletin DSA 403.
Linux 2.2.x er ikke sårbar overfor denne udnyttelse fordi der først foretages grænsecheck. Sparc og PA-RISC menes heller ikke at være sårbare, da bruger- og kerneadresser opbevares i et andet adresserum på disse arkitekturer.
Hav venligst forståelse for at vi ikke kan give alle og enhver vi ikke kender, adgang til den anvendte udnyttelse. Bed os ikke om det.
Genetablering
Efter maskinerne blev lukket ned, tog vi aftryk af harddiskene og gemte dem på separate maskiner. De blev distribueret til dem, der foretog den tekniske analyse. De tre maskiner i USA (master, murphy, gluck) blev bagefter geninstalleret og deres tjenester genstartet en efter en, efter den relevante administrator havde undersøgt dem.
På klecker blev dette dog udskudt til en planlagt vedligeholdelse, så sikkerhedsarkivet hurtigt igen kunne gøres tilgængeligt online. På samme tid havde vi desuden ikke konsoladgang til klecker, så genetableringen måtte klares via fjernadgang. Efter et diskaftryk var blevet fremstillet via logon til en seriel konsol til en lokal maskine på en firewall-beskyttet netværksforbindelse, blev root-kit'et fjernet, kernen udskiftet og styrket (hardened), de binære filer dobbeltchecket og sikkerhedsarkivet kontrolleret mod flere forskellige eksterne kilder. Denne maskine vil blive geninstalleret indenfor få uger.
Som en sikkerhedsforanstaltning blev alle udviklerkonti slået fra i LDAP og SSH-nøgler blev fjernet fra de vigtigste maskiner, så der ikke kunne brydes ind i flere maskiner Dette gjort alt offentligt Debian-arbejde umuligt, som krævede upload af filer og adgang til CVS-arkiverne.
Alle adgangskoder som anvendes på quantz (dvs. alle Alioth-, arch- og subversion-adgangskoder) er også blevet gjort invalide. Alle SSH-autoriserede nøgler er også blevet fjernet. Anvend "mistet adgangskode"-system til at modtage en ny adgangskode.
Når alle tjeneser kører igen og maskinerne er blevet sikret tilstrækkeligt, vil LDAP blive nulstillet så udviklerne kan oprette nye adgangskoder. Pt. ved vi dog ikke hvornår det vil ske.
Ved genetablering blev SSH geninstalleret på de maskiner, der var brudt ind i. Derfor er der nye RSA-værtsnøgler og nøgleaftryk til disse værtsmaskiner. Nøglerne vil blive overført til LDAP så snart de er blevet oprettet og kan hentes herfra.
Konsekvenser
Udskift dine adgangskoder!
Da der blev opsnuset adgangkoder på de maskiner, der blev brudt ind i, bør alle udgående forbindelser som involverede en adgangskode også betragtes som værende komprimitterede, dvs. at adgangskoden må anses for at være kendt af angriberen. Den skal derfor omgående ændres.
Vi nogen desuden havde adgang til en Debian-maskine og anvendte den samme adgangskode eller huskesætning (passphrase) på andre maskiner eller nøgler, opfordrer vi kraftigt til at ændre adgangskoden henholdsvis huskesætningen så hurtigt som muligt.
Hvis en SSH-nøgle blev genereret eller opbevaret på en af disse maskiner
og blev anvendt til at logge på andre maskiner (fx ved at installere den i
.ssh/authorized_keys
), bør den også fjernes.
De hemmelige GnuPG-/PGP-nøgler som er fundet på debian.org-maskiner blev også fjernet fra Debian-nøgleringene og derfor deaktiveret.
Udviklere som er bekymrede for deres egne maskiner, bør som minimum køre chkrootkit og kigge på dets uddata. Matt Taggart vedligeholder en tilbageførelse af den aktuelle version til woody på følgende adresse:
- deb http://lackof.org/taggart/debian woody/chkrootkit main
- deb-src http://lackof.org/taggart/debian woody/chkrootkit main
Desuden har Wichert Akkerman og Matt Taggart en udførlig liste over sikkerhedsforanstaltninger.
SucKIT Root-Kit
SucKIT er et rootkit som blev præsenteret i Phrack nummer 58, artikel 0x07 ("Linux on-the-fly kernel patching without LKM", af sd & devik). Det er et fuldt funktionsdygtigt rootkit som startes via /dev/kmem, dvs. det ikke skal bruge en kerne med understøttelse af loadbare kernemoduler. Det har en adgangskodebeskyttet fjernadgangs-connect-back-shell som initieres af en forfalsket pakke (der omgår de fleste firewallopsætninger), og kan skjule processer, filer og forbindelser.
Normalt startes SucKIT som /sbin/init når systemet starter, laver en
forgrening for at installere sig selv i kernen, åbner en bagdør og starter en
kopi af den originale binære "init" fra forældren (med pid 1). Alle
efterfølgende udførelser af /sbin/init
dirigeres videre til den
originale init.
TESOs Burneye-beskyttelse
Burneye er et værktøj til at forvanske binære ELF-filer på UNIX-platformen, som blev præsenteret i Phrack nummer 58, artikel 0x05 ("Armouring the ELF: Binary encryption on the UNIX platform", af grugq & scut). Med anvendelse af værktøjer som TESOs Burneye, kan en angriber ændre et udførbart program og dermed kryptere dets egentlige formål, skjule det for firewall-filtre, system til afsløring af indtrængere, antivirusprogrammer og efterforskere.
Tak til
- James Troup og Ryan Murray for deres generelle arbejde på alle værtsmaskiner
- Adam Heath og Brian Wolfe for deres arbejde på master og murphy
- Wichert Akkerman for hans arbejde på klecker
- Dann Frazier og Matt Taggart for deres arbejde på gluck
- Michael Stone og Robert van der Meulen for deres efterforskningstekniske arbejde
- Marcus Meissner for disassemblering af den anvendte udnyttelse
- Jaakko Niemi for hans arbejde med at kontrollere og genetablere lists.debian.org
- Colin Watson for hans arbejde med at kontrollere og genetablere bugs.debian.org
- Josip Rodin for hans arbejde med at kontrollere og genetablere postlisternes webarkiv
Pressedækning
- Slashdot, 21. november 2003 (engelsk)
- eWeek, 21. november 2003 (engelsk)
- InternetNews, 21. november 2003 (engelsk)
- Heise Newsticker, 21. november 2003 (tysk)
- Pro-Linux, 21. november 2003 (tysk)
- Linux-Community, 21. november 2003 (tysk)
- BarraPunti, 21. november 2003 (spansk)
- Newsforge, 21. november 2003 (engelsk)
- SearchEnterpriseLinux.com, 22. november 2003 (engelsk)
- Debian Planet, 22. november 2003 (engelsk)
- PC World, 24. november 2003 (engelsk)
- ZDNet UK, 24. november 2003 (engelsk)
- Enterprise Linux IT, 24. november 2003 (engelsk)
- The Age, 24. november 2003 (engelsk)
- Sydney Morning Herald, 24. november 2003 (engelsk)
- Windows & .NET Magazine, 24. november 2003 (engelsk)
- Infoworld, 24. november 2003 (engelsk)
- Linux Insider, 24. november 2003 (engelsk)
- eCommerce Times, 24. november 2003 (engelsk)
- TechNewsWorld, 24. november 2003 (engelsk)
- The Register, 28. november 2003 (engelsk)
- Newsforge, 28. november 2003 (engelsk)
- Slashdot, 28. november 2003 (engelsk)
- Slashdot, 1. december 2003 (engelsk)
- The Age, 1. december 2003 (engelsk)
- Sydney Morning Herald, 1. december 2003 (engelsk)
- Pro-Linux, 2. december 2003 (tysk)
- Heise Newsticker, 2. december 2003 (tysk)
- Golem, 2. december 2003 (tysk)
- LWN, 2. december 2003 (engelsk)
- The Register, 2. december 2003 (engelsk)
- ZDnet DE, 2. december 2003 (tysk)
- Linux-Community, 2. december 2003 (tysk)
- Heise, 2. december 2003 (tysk)
- Heise Newsticker, 2. december 2003 (tysk)
- Symlink, 2. december 2003 (engelsk)
- Pro-Linux, 3. december 2003 (tysk)
- Heise Newsticker, 4. december 2003 (tysk)
- Symlink, 4. december 2003 (tysk)
- Symlink, 4. december 2003 (engelsk)
- Newsforge, 4. december 2003 (engelsk)
- Newsforge, 5. december 2003 (engelsk)
- OSnews, 10. december 2003 (engelsk)
- Cnet, 10. december 2003 (engelsk)
- Newsforge, 30. december 2003
Kontaktoplysninger
For yderligere oplysninger, besøg Debians websider eller send en e-mail til press@debian.org.