A Security Analysis of CheriBSD and Morello Linux
Dit artikel analyseert de beveiliging van CheriBSD en Morello Linux, waarbij wordt aangetoond dat ondanks de effectiviteit van de CHERI-architectuur tegen geheugencorruptie, bestaande compartimenteringsmechanismen kwetsbaar blijven voor omzeiling via eenvoudige bugs en aanvallen, en stelt specifieke mitigaties en aanbevelingen voor om deze zwakheden aan te pakken.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je een hoogbeveiligde bankkluis voor. In het verleden, als een dief een raam brak (een softwarebug), kon hij ongehinderd door de bank rennen en alles stelen, van het bureau van de kassier tot de kluis van de CEO.
Om dit te stoppen, bouwden ingenieurs een nieuw soort kluis genaamd CHERI. In plaats van alleen maar de deuren op slot te doen, gaven ze elk item in de bank een speciale "magische sleutel" (een capability). Deze sleutel zegt niet alleen "open deze deur"; deze zegt: "Je mag deze specifieke deur openen, maar alleen tussen 9:00 en 17:00 uur, en je mag alleen naar binnen kijken, niet aanraken."
Het doel van CHERI is compartimentering: het verdelen van de bank in kleine, geïsoleerde kamers. Als een dief inbrengt in de kamer van de "Souvenirwinkel", moeten de magische sleutels die hij daar vindt hem alleen de deuren van de Souvenirwinkel laten openen. Hij mag niet naar de kamer van de "Kluis" kunnen lopen.
Dit papier is als een beveiligingsauditrapport. De onderzoekers vroegen: "Als een dief in de Souvenirwinkel komt, kan hij dan nog steeds stiekem de Kluis binnenglippen?" Ze testten dit op twee verschillende versies van het banksysteem: Morello Linux en CheriBSD.
Hier is wat ze vonden, eenvoudig uitgelegd:
Het kernproblein: Het lekken van de meestersleutels
Hoewel de muren sterk zijn, vonden de onderzoekers vier manieren waarop de dief in de "Souvenirwinkel" de sleutels kon stelen die de "Kluis" openen.
1. De "Stack Walking" aanval (Kijken in de prullenbak)
De analogie: Stel je voor dat elke keer dat een bankmedewerker een taak uitvoert, hij aantekeningen maakt op een briefje en dit op een stapel op zijn bureau plakt. Wanneer hij klaar is, gaat hij naar de volgende taak, maar soms vergeet hij de oude briefjes weg te gooien.
De aanval: De dief in de Souvenirwinkel kijkt naar de stapel briefjes die achterbleven door vorige medewerkers. Hij vindt een briefje waarop staat: "Hier is de sleutel tot de Kluis." Omdat het systeem de briefjes niet heeft opgeruimd (het geheugen), steelt de dief de sleutel en loopt zo de Kluis binnen.
De oplossing: De onderzoekers suggereren dat de bank een "schoonmaakploeg" moet hebben die elk briefje direct na gebruik van het bureau wist, of dat elke medewerker zijn eigen privédesk krijgt zodat ze elkaars briefjes niet kunnen zien.
2. De "Dlopen" lek (De glimmende kaart)
De analogie: De bank heeft een centraal register (een kaart) dat vertelt waar alle kamers zich bevinden. Wanneer er een nieuwe kamer wordt toegevoegd, wordt het register bijgewerkt. De dief vraagt het register om een kaart van de "Souvenirwinkel".
De aanval: Het register geeft hem een kaart, maar dit is een "glimmende" versie. In plaats van alleen de Souvenirwinkel te tonen, bevat de kaart per ongeluk een geheime lijst van elke kamer in de bank, inclusief de Kluis, het kantoor van de CEO en de kluis. De dief gebruikt deze accidentele lijst om de sleutels naar overal te vinden.
De oplossing: De onderzoekers suggereren dat het register de dief een "verzegelde" kaart moet geven. De dief kan de kaart zien, maar hij kan de geheime delen niet lezen tenzij hij een speciaal hulpmiddel heeft om de zegel te breken (wat hij niet heeft).
3. De "Heap Scavenging" aanval (Graven in de stapel)
De analogie: De bank heeft een grote stapel weggegooide dozen (geheugen) in de hoek. Wanneer een doos wordt weggegooid, hoort deze leeg te zijn. Maar soms gooien de werknemers dozen weg waar nog steeds gereedschap of sleutels in zitten omdat ze vergeten zijn ze eerst leeg te maken.
De aanval: De dief graaft door de stapel weggegooide dozen en zoekt naar een doos waar nog een sleutel in zit. Als hij een sleutel vindt die door de "Kluis"-medewerker is achtergelaten, kan hij de Kluis openen.
De oplossing: De bank heeft een regel nodig die zegt: "Voordat je een doos weggooit, moet je deze schoonvegen." Of de dief mag alleen graven in een stapel dozen die bij de Souvenirwinkel hoort, en niet in de hele bank.
4. De "Heap Storing" aanval (De tijdbom)
De analogie: De dief pakt een doos uit de stapel, schrijft zijn naam erop en verstopt deze in zijn zak. Later gooit de bank die zelfde doos weg en geeft deze aan een nieuwe medewerker.
De aanval: De dief wacht af. Later controleert hij zijn zak. De doos wordt nu door de nieuwe medewerker gebruikt om het goud van de Kluis op te bergen. Omdat de dief nog steeds een "pointer" (een mentale aantekening) heeft naar die specifieke doos, kan hij erin reiken en het goud stelen, ook al zou hij daar niet mogen zijn.
De oplossing: De bank heeft een systeem nodig dat de oude sleutels naar een doos "revokeert" (vernietigt) op het moment dat de doos wordt weggegooid, zodat de mentale aantekening van de dief nutteloos wordt.
De resultaten: Twee verschillende banken
De onderzoekers testten deze trucs op twee verschillende systemen:
- Morello Linux: Dit systeem was zeer kwetsbaar. De dief kon alle vier de trucs gebruiken om uit de Souvenirwinkel te breken en de privé sleutels van de hoofdkluis te stelen. Het was als een bank zonder beveiligers en met overal vuile briefjes.
- CheriBSD: Dit systeem was veel beter. Het had ingebouwde bewakers (genaamd c18n en heap revocation).
- De "Stack Walking" truc werkte niet omdat elke medewerker zijn eigen privédesk had (geïsoleerde stacks).
- De "Heap Storing" truc werkte niet omdat de bank een systeem had dat oude sleutels onmiddellijk vernietigde.
- Echter, de "Dlopen" lek en "Heap Scavenging" werkten nog steeds. De dief kon nog steeds de geheime kaart vinden en door de vuile dozen graven.
De belangrijkste conclusie
De onderzoekers bouwden een "Proof of Concept" (een testcase) waarbij ze er succesvol in slaagden een private key (zoals een master wachtwoord) te stelen uit een beveiligd programma met behulp van de "Dlopen" lek.
De conclusie:
De CHERI-architectuur is een fantastische nieuwe uitvinding die veel oude vormen van diefstal (zoals door muren heen slaan) stopt. Echter, de software die hierop draait (de besturingssystemen en bibliotheken) bevat nog steeds bugs. Deze bugs werken als open ramen of verloren sleutels, waardoor een dief de beveiliging kan omzeilen, zelfs als de muren sterk zijn.
Het papier concludeert dat hoewel de hardware veilig is, we de software moeten repareren (de briefjes opruimen, de glimmende kaarten repareren en de dozen vegen) om het systeem echt veilig te maken.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.