Out-of-bounds: kwetsbaarheden in computergeheugen van buitenaf blootgelegd

Out-of-bounds writes: je hebt er misschien nog nooit van gehoord, maar ze spelen een belangrijke rol bij het hacken van computerprogramma’s. Misbruikmogelijkheden te over, van het aanpassen van een banksaldo tot het binnendringen van ziekenhuissystemen. Linus Hafkemeyer ontwikkelde een tool die het eenvoudiger maakt om de ernst van zulke kwetsbaarheden in te schatten, waardoor ze sneller te herstellen zijn en de digitale veiligheid toeneemt.

Linus Hafkemeyer is zeker niet de eerste die als tiener probeerde om de beperkingen te omzeilen die zijn ouders, en hun router, op zijn internetgebruik stelden. Maar waar anderen het daarbij laten, leidde dit bij hem tot een fascinatie voor cybersecurity die uitmondde in een afstudeerscriptie over een van de meest gevaarlijke kwetsbaarheden in een computergeheugen, wat in bijna elk apparaat zit.

‘Dat zijn out-of-bounds write kwetsbaarheden, en je kunt er een computerprogramma mee om de tuin leiden zodat je toch toegang krijgt tot bepaald afgeschermd werkgeheugen,’ zegt Hafkemeyer. ‘Als je hiermee iets naar ongebruikt werkgeheugen schrijft, dat daarna nooit meer benaderd wordt, dan is er geen man overboord. In veel andere gevallen zal het programma gewoon crashen. Maar soms kan een hacker ze bijvoorbeeld gebruiken om kritieke data aan te passen of om een programma in zijn geheel te kapen.’
 

Een computerprogramma om de tuin leiden zodat het toch toegang biedt tot afgeschermd werkgeheugen is een van de meest gevaarlijke software-kwetsbaarheden

Veelvoorkomend en betrouwbaar

Out-of-bounds writes zijn zo gevaarlijk omdat ze vaak voorkomen en heel ‘betrouwbaar’ zijn: als iemand met kwade bedoelingen eenmaal op basis van zo’n kwetsbaarheid een exploit heeft ontwikkeld, dan zal die elke keer dat een programma uitgevoerd wordt vrijwel zeker succesvol zijn. Hafkemeyer: ‘Ik leerde de ins en outs van deze kwetsbaarheden aan het begin van mijn masteropleiding, toen ik meedeed aan zogenoemde Capture the Flag-competities – een informatiebeveiligingswedstrijd waarbij je bijvoorbeeld een kwetsbaarheid op een server moet uitbuiten om een geheim te bemachtigen en zo punten te scoren.’

Omdat zijn favoriete afstudeeronderwerp nauwelijks aan de TU Delft werd onderwezen of onderzocht, regelde hij externe supervisie van professor Andrea Continella van Universiteit Twente. Hafkemeyer: ‘Hij stelde een paar onderzoeksrichtingen voor, die ik vervolgens terugbracht tot een nog onopgelost sub-probleem dat haalbaar was als master thesis opdracht.’
 

Fuzzing

De state-of-the-art voor het ontdekken van out-of-bounds write kwetsbaarheden is een proces met de naam fuzzing, gevolgd door oorzaakanalyse op basis van menselijke intuïtie. ‘Bij fuzzing bied je een programma grote hoeveelheden willekeurige invoergegevens aan,’ legt Hafkemeyer uit. ‘Ondertussen houd je nauwlettend bepaalde indicatoren in de gaten, op zoek naar afwijkend gedrag door het programma. Zo kan ongebruikelijke toegang tot werkgeheugen bijvoorbeeld op een kwetsbaarheid duiden.’ Vervolgens wordt er, nog voor de oorzaakanalyse, een inschatting gemaakt van de ernst van de gevonden kwetsbaarheden. Dit triageproces lijkt op dat bij de spoedeisende hulp, waarbij iemand bepaald welke patiënt onmiddellijk medische zorg nodig heeft en wie er nog even kan wachten. ‘Ik wilde een tool ontwikkelen die dit triageproces van out-of-bounds writes versnelt.’
 

Van buitenaf bezien

‘Huidige methodes voor de detectie van out-of-bounds writes hebben als nadeel dat ze invasief zijn; er moet wat broncode aan het programma worden toegevoegd om detectie mogelijk te maken,’ zegt Hafkemeyer. ‘Maar het gedrag van dat aangepaste programma zal  afwijken van het originele programma. Waargenomen afwijkend gedrag van het aangepaste programma is dus ongeschikt voor triage.’ Op een spoedeisende hulppost zou dit overeenkomen met triage waarbij je patiënten willekeurige klachten laat aanwijzen op een bord.

‘Ik heb een aanpak ontwikkeld waarbij we het originele programma in een virtuele machine uitvoeren, waarbij we de gegevens gebruiken die volgens fuzzing tot out-of-bounds writes kunnen leiden,’ zegt Hafkemeyer. ‘Zo kunnen we het gedrag van het programma van buitenaf observeren en zien hoe het reageert zonder het te hoeven aanpassen.’ De einduitkomst van zijn tool is een lijst met alle broncode-objecten die door zulke onverwachte geheugentoegang worden beïnvloed – zeer waardevolle informatie voor de menselijke experts, bij zowel triage als oorzaakanalyse.

De crux is het monitoren van een computerprogramma zonder die eerst aan te hoeven aanpassen

Waanzinnig complex

Terugkijkend verwondert Hafkemeyer zich vooral over de vele wendingen en afslagen in zijn afstudeeronderzoek, waardoor zijn scriptie weinig meer van zijn oorspronkelijke insteek wegheeft. ‘Hoe dieper ik het onderwerp in dook, hoe meer ik me realiseerde hoe waanzinnig complex het is,’ zegt hij. Vooral de finesses van het compileren – waarbij begrijpelijke broncode naar een uitvoerbaar programma wordt vertaald – leidden tot vele hoofdpijndossiers. ‘Tijdens het compilatieproces gaat veel semantische programma-informatie verloren die juist zo belangrijk is voor het detecteren van out-of-bounds writes. Om die informatie terug te kunnen winnen moest ik heel diep in de krochten van de compiler duiken.’

Programmeurs hebben het vaak over in the zone zijn – een gemoedstoestand van hyperfocus en hoge productiviteit. Zo ook Hafkemeyer, maar af en toe voelde het ook alsof hij in een tunnel zat, twijfelend of hij wel de juiste weg had ingeslagen. ‘Op die momenten toetste ik mijn ideeën bij mijn vrienden en begeleider,’ zegt hij. ‘Tijdens mijn afstuderen ontwikkelde ik ook een voorliefde voor geschiedkundige audioboeken. Even mijn gedachten afleiden met een totaal andere werkelijkheid, al was het soms maar voor een half uurtje, om vervolgens met verse energie en inzichten weer aan de slag te gaan.’
 

Cybersecuritycongres

Zijn begeleider, professor Continella, is lovend over zijn afstuderen en noemt het een belangrijke methode die van grote toegevoegde waarde is in de echte wereld. ‘Out-of-bounds writes-kwetsbaarheden zullen hiermee sneller hersteld worden, wat tot veiligere software leidt,’ zegt hij. ‘We moeten ook niet vergeten dat het heel duur is om hooggekwalificeerd personeel voor triage in te zetten. Elke tijdswinst is dus mooi meegenomen. We werken nu aan een publicatie voor op een hoog aangeschreven cybersecuritycongres, en we verwachten veel interesse vanuit cybersecurity-bedrijven en softwareontwikkelaars.’ Terwijl Hafkemeyer aan deze publicatie werkt, geniet hij van een lange vakantie. ‘Backpacken door Europa,’ zegt hij, ‘en wat mooie herinneringen naar mijn eigen werkgeheugen schrijven.’
 

Dankzij mijn tool zullen kwetsbaarheden in programma’s sneller hersteld worden, wat tot veiligere software leidt

Linus Hafkemeyer

Best Graduate 2022 van de Faculteit Elektrotechniek, Wiskunde & Informatica