Analyse: De worm van negen miljard

Het was een kwestie van seconden. Meer tijd had Charlie Miller niet nodig voor het kraken van de Safari-browser, draaiend in Mac OS X. De software was bijgewerkt met alle beschikbare updates.

Zo'n hack is zeker geen unicum: álle software waarmee wij werken bevat duizenden bugs, waar een cracker of geautomatiseerde malware misbruik van kan maken.

Toegegeven, Charlie Miller is een expert die zijn vak leerde in dienst van de NSA, een geheime dienst die zich specialiseert in het afluisteren van elektronische communicatie. Maar na hem was hacker Nils aan de beurt. Met verpletterend gemak kraakte hij achtereenvolgens IE8, Safari en Firefox. IE8 is de meest recente browser van Microsoft en werd nog extra beveiligd door Windows, met DEP (Data Execution Prevention) en ASLR (Address Space Layout Randomisation). Het hielp allemaal niets tegen de talenten van deze 25-jarige Duitse student.

De heren hielden er wat aan over, want het ging om een wedstrijd: Pwn2Own 2009, gehouden tijdens de CanSecWest-conferentie in Vancouver, Canada. Per geslaagde aanval werd 5.000 dollar uitgekeerd. Bovendien mochten de winnaars de gekraakte laptops mee naar huis nemen.

Op het eerste gezicht lijkt dat een krappe beloning, want de deelnemers moesten hun methodes prijsgeven. Het kost ze dus telkens een nieuwe, nog onbekende bug. Ondanks alle updates en patches kan een bug lang zijn waarde houden; Miller gebruikte voor zijn geslaagde Safarikraak een bug die hij een jaar geleden had ontdekt. En elk nog onbekend defect is veel geld waard, in het criminele circuit.

Bugs tellen

Bugs worden gewoonlijk geteld per KLOC of MLOC (kilo/million lines of code, duizend of een miljoen regels broncode). Software van de allerbeste kwaliteit bevat per KLOC circa één bug. Dat komt neer op een enkele fout per dertig tot veertig gedrukte pagina's tekst; een kwaliteitsniveau dat buiten de software-industrie zelden wordt bereikt. Maar het is lang niet goed genoeg. Want de huidige browsers bestaan uit pakweg twee miljoen regels code. Een besturingssysteem is al gauw zes keer zo zwaar. In elk groot, modern softwarepakket schuilen dus minstens enkele duizenden bugs.

En dan hebben we het over functionele defecten, bugs van het soort dat in normaal gebruik zo nu en dan een merkbare storing veroorzaakt. Fouten in de beveiliging zijn vaak onzichtbaar tot een cracker ze exploiteert. Watts Humphrey (Carnegie Mellon universiteit, daarvoor directeur softwarekwaliteit voor IBM) schrijft:
"De huidige MLOC-systemen met duizend functionele defecten kunnen gemakkelijk vele duizenden beveiligingsfouten bevatten. Bijna al die fouten kunnen open deuren worden voor een dief of terrorist."

"In elk groot, modern softwarepakket schuilen minstens enkele duizenden bugs"

'Malware' verspreid door crackers veroorzaakt niet alleen directe financiële schade. IT-beveiligers zoals Symantec, McAfee en Trend Micro halen intussen een gezamenlijke omzet van circa 30 miljard dollar per jaar. De beveiliging maakt ook onze hardware duurder, want er is heel wat extra rekentijd, werkgeheugen en schijfruimte voor nodig. Dan zijn er nog de kosten van herstelwerkzaamheden, speciale trainingen en verloren productiviteit.
Het Amerikaanse Cyber Secure Institute schat de totale schade veroorzaakt door Conficker (een recente 'worm' die actief gevaarlijk is voor Microsoft Windows) op negen miljard dollar. En dat is er slechts een van vele.


Open source

Wat is eraan te doen? Sommigen denken dat open source-software veel minder bugs bevat. Maar Firefox is open source en bleef tijdens Pwn2Own ook niet overeind. Er is een grens aan wat kwaliteitsbewaking kan bereiken, ongeacht het bedrijfsmodel van de ontwerpers. Misschien lukt het ooit om het aantal bugs te reduceren tot laten we zeggen 100 per MLOC. Ook dan zal de cracker altijd kunnen oogsten. Zeker in miljoenen regels broncode.

Toch zijn er oplossingen denkbaar. Een bug is op zichzelf niet erg; het gaat erom te voorkomen dat een cracker als gevolg ervan zijn software in onze computers aan het werk kan zetten. Vandaar het NX (no execute) bit, dat geheugen markeert als uitsluitend bruikbaar voor opslag van data. De CPU weigert om de inhoud als instructies te zien. Intel koos de naam XD (execute disable) bit, AMD noemt het Enhanced Virus Protection. Charlie Miller noemt het NX-bit "heel sterk. Als het goed wordt gebruikt, kunnen instructies afkomstig van een aanvaller niet worden uitgevoerd."

Er bestaan ook emulaties van NX in software, en aanvullende technieken zoals ASLR. We hebben al gezien dat ze een geslaagde aanval niet altijd onmogelijk maken; ASLR en DEP (Microsofts ondersteuning van het NX-bit) werden door Nils gepasseerd. Kunnen we meer doen?

Bescherming

Bescherming van het werkgeheugen is belangrijk, maar crackers gebruiken hun voet tussen de deur meestal voor het installeren hun trojanen, rootkits en keyloggers op onze harde schijven. Daarom valt te denken aan een live-CD, of beter gezegd een read-only combinatie van besturingssysteem en andere software. Beschrijfbare schijven (partities) zijn nodig om iets met data te kunnen doen. Maar zolang het besturingssysteem weigert om scripts en programma's vanaf de data-opslag te starten, heeft een cracker er geen vat op. Linux maakt zowel read-only software als data-only partities heel makkelijk. Er zijn ook oplossingen voor Windows. Updates en patches worden dan minder eenvoudig, maar ook minder vaak nodig...

Reacties (0)

Anti-spam vraag:
3 x 2, hoeveel is dat?

Mijn WINMAG Pro

Inlog vergeten

Voer je e-mailadres of inlognaam in.
Je krijgt instructies per e-mail.

Registreer gratis

Voer je e-mailadres, gewenste
inlognaam en tweemaal het
wachtwoord in.