Implementation of a State-of-the-Art Security Architecture in the Linux Kernel

Niels
Avonds

Doet jouw computer vaak niet wat je van hem vraagt? Of is hij soms plots enorm traag? Krijg je af en toe meldingen dat je computer aangevallen wordt door virussen of andere kwaadaardige software? Steeds meer computers wereldwijd kampen met dit soort problemen. Één computer op drie bevat kwaadaardige software die er op uit is om jou of iemand anders schade aan te richten. Vaak weet je zelfs niet eens dat dit soort software actief is tot het te laat is. Grootschalige aanvallen op computers wereldwijd zijn een reëel probleem waarvoor nog geen definitieve oplossing gevonden is. In het beste geval gebruikt de aanvaller jouw computer alleen maar om grotere doelwitten aan te vallen, zoals websites van regeringen of banken. Anderzijds is het ook mogelijk dat jij zelf het doelwit bent. Misschien bevatten je mails of je documenten gevoelige informatie. Of anders is het altijd wel interessant om toegang te krijgen tot je bankrekening. Maar hoe krijgt zo'n aanvaller toegang tot een computer zonder het wachtwoord te kennen? Kwaadaardige software is in staat zichzelf snel en onzichtbaar te verspreiden door programmeerfouten in geïnstalleerde toepassingen uit te buiten. Computerprogramma's worden alsmaar groter en complexer, waardoor ook het aantal fouten toeneemt. Het succesvol uitbuiten van een enkele fout, geeft de aanvaller vaak de volledige controle over zowel het uitgebuite programma als over de rest van de computer. De macht van zo'n aanvaller mag dus niet onderschat worden. Huidige technieken in computerbeveiliging focussen op de preventie van aanvallen en pakken meestal één welbepaald probleem aan. Het is echter slechts een kwestie van tijd voor er nieuwe aanvalstechnieken verschijnen die rond de extra beveiliging heen werken. Beveiligingsexperts moeten immers alle lekken dichten, terwijl aanvallers genoeg hebben aan één programmeerfout om binnen te dringen. PandaLabs en de Anti-Phishing Working Group (APWG) rapporteren onafhankelijk van elkaar dat wereldwijd ongeveer 30% van de computers geïnfecteerd zijn met kwaardaardige software. Dit geeft aan dat de huidige preventieve maatregelen inderdaad niet erg succesvol zijn en dat er dringend bijkomend onderzoek nodig is. De scriptie "Implementation of a State-of-the-Art Security Architecture in the Linux Kernel" gaat dan ook op zoek naar een alternatief. In plaats van aanvallen te voorkomen, wordt ervan uitgegaan dat aanvallers altijd een gaatje in de beveiliging vinden. Het doel van de scriptie is om de schade die een aanvaller kan aanrichten tot een minimum te beperken, zelfs al vindt hij een uitbuitbare fout in een computerprogramma. Om de computer te beveiligen, wordt in deze scriptie voorgesteld om kwetsbare computerprogramma's op te splitsen in verschillende modules. Aanpassingen aan het besturingssysteem van de computer zorgen er dan voor dat die modules volledig geïsoleerd zijn van elkaar. Zonder dit beveiligingssysteem kan een computer als één grote doos gezien worden. Een aanvaller die ergens in die doos een gaatje vindt, kan binnen in de doos vrij manoeuvreren. Het mechanisme voorgesteld in deze scriptie deelt deze grote doos op in allemaal kleine doosjes. Een aanvaller die een gat in een zo'n kleine doos vindt, kan niet zomaar aan de andere doosjes. Een aanvaller die in staat is om een programmeerfout in één van de modules uit te buiten, krijgt dus geen toegang tot de andere modules van het programma. Dit is bijvoorbeeld nuttig in een web browser, zoals Internet Explorer, Google Chrome of Mozilla Firefox. Deze programma's halen namelijk informatie op van het internet. De webpagina's die ze binnen halen bevatten mogelijk pogingen om fouten in de web browser uit te buiten. Als een aanvaller hier in slaagt, is het belangrijk dat hij geen toegang krijgt tot de informatie op andere webpagina's die op hetzelfde ogenblik geopend zijn, zoals bijvoorbeeld de website van een bank. Anerzijds krijgt die aanvaller ook een veel beperktere toegang tot de rest van de computer. Dit wordt bereikt door elke module erg te beperken in hoe ze met de rest van de computer mag interageren. Een module uit een web browser zal bijvoorbeeld geen bestanden op de computer mogen openen. Bijgevolg kan een aanvaller die een fout uitbuit in deze module ook geen bestanden openen. Bestaand onderzoek stelde eerder al gelijkaardige technieken voor opsplitsing van computerprogramma's in modules voor. Deze beveiligingstechnieken focusten zich echter steeds ofwel op de bescherming van het programma, ofwel op de bescherming van de rest van de computer. Deze scriptie is dus vernieuwend in die zin dat de voorgestelde techniek de twee beschermingen voorziet. Daarnaast zijn de wijzigingen aan het besturingssysteem zo dat oude toepassingen nog steeds blijven werken. Deze beveiliging kan dus worden toegevoegd op elke computer zonder dat de gebruiker hier last van heeft. Beveiligde en onbeveiligde toepassingen kunnen zonder probleem tegelijkertijd op dezelfde computer uitgevoerd worden. Deze scriptie bespreekt uiteraard niet alleen het theoretische idee. Er wordt ook overgegaan tot een praktische uitwerking van de techniek. Twee echte programma's worden beveiligd en hun performantie wordt vergeleken met die van de onbeveiligde versie. Deze testen tonen aan dat het gebruiken van de beveiligingstechniek slechts een kleine vertraging van het beveiligde programma als gevolg heeft. Computers waarin deze techniek wordt toegepast zullen dus niet plots veel trager worden. Het opsplitsen van applicaties in volledig geïsoleerde modules werpt een nieuwe licht op de actuele problematiek van computerbeveiliging. Er wordt niet langer geprobeerd om aanvallers volledig te stoppen. In de plaats daarvan wordt het effect van één programmeerfout sterk verminderd. Aanvallers worden ingesloten in een klein deel van het programma en kunnen alleen andere delen aanvallen indien die ook fouten bevatten. De uitwerking in deze scriptie toont aan dat dit soort technieken effectief en efficiënt kan werken tegen de snelle verspreiding van kwaadaardige software.

Universiteit of Hogeschool
KU Leuven
Thesis jaar
2013