PeAR: A Static Binary Rewriting Framework for Binary-Only Fuzzing
Het artikel introduceert PeAR, een framework voor statische binary rewriting dat aantoont dat statische instrumentatie een praktisch en effectief alternatief is voor dynamische instrumentatie voor binary-only fuzzing, waarbij een hoge doelcompatibiliteit, aanzienlijke prestatiewinsten door persistent mode en een dekking die vergelijkbaar is met compiler-gebaseerde methoden worden bereikt.
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 voor dat je een beveiligingsbeambte bent die verborgen vallen probeert te vinden in een afgesloten, mysterieus gebouw (een stuk software). Je kunt de blauwdrukken (de broncode) niet zien, dus moet je raden waar de vallen zich kunnen bevinden door duizenden verschillende objecten tegen de deuren en muren te gooien om te zien wat er breekt. Dit proces wordt fuzzing genoemd.
Om te weten of je een nieuwe plek hebt gevonden om te testen, heb je een manier nodig om bij te houden welke delen van het gebouw je al hebt bezocht. Meestal installeert de architect van het gebouw (de compiler) kleine sensoren (instrumentatie) om je stappen te tellen. Maar omdat je de blauwdrukken niet hebt, moet je deze sensoren zelf installeren nadat het gebouw al is gebouwd.
Er zijn twee hoofdmethode:
- De "Live" Methode (Dynamisch): Je huurt een team van arbeiders in die binnen in het gebouw staan terwijl jij objecten werpt. Zij kijken naar alles en schrijven het op. Het is zeer nauwkeurig, maar de arbeiders zijn traag en staan in de weg, waardoor het hele proces veel langzamer gaat.
- De "Pre-Game" Methode (Statisch): Je sluipt naar binnen voordat het gebouw opent, past de muren aan om je sensoren te bevatten, en sluit het gebouw vervolgens weer af. Dit is veel sneller omdat de sensoren deel uitmaken van het gebouw zelf. Het is echter riskant. Als je de murenstructuur verkeerd inschat, kun je het gebouw beschadigen of de vallen volledig missen.
Lange tijd dachten mensen dat de "Live" methode de enige veilige keuze was, omdat de "Pre-Game" methode als te onhandig en foutgevoelig werd beschouwd.
Ontmoet PeAR: De Meester-Renovator
De auteurs van dit artikel hebben een nieuwe tool gebouwd genaamd PeAR. Denk aan PeAR als een zeer geschoolde, geautomatiseerde renovatieploeg die in staat is om in een voltooid gebouw te sluipen, de muren nauwkeurig in kaart te brengen en hoogwaardige sensoren te installeren zonder iets te beschadigen.
Ze wilden bewijzen dat de "Pre-Game" methode niet langer een riskante gok is, maar net zo goed kan zijn als de "Live" methode, maar dan veel sneller.
Wat maakt PeAR bijzonder?
De meeste eerdere renovatieploegen (oudere tools) konden alleen basis-sensoren installeren. Ze konden de slimme trucjes niet aan waarmee moderne beveiligingsbeambten werken om sneller te zijn. PeAR is echter gebouwd op een nieuw, betrouwbaar kaartmakersysteem (genaamd GTIRB) dat het mogelijk maakt om drie geavanceerde trucs uit te voeren:
De "Geen-Reset" Lus (Persistent Mode):
- De Oude Manier: Elke keer dat je een steen werpt, moet de ploeg je eruit schoppen, de deur herbouwen en je weer binnenlaten. Dat duurt eeuwig.
- De PeAR-Manier: PeAR installeert een speciale gang waar je 1.000 stenen achter elkaar kunt werpen zonder het gebouw ooit te verlaten. Je reset simpelweg de kamer tussen de worpen door. Dit maakt het proces ongelooflijk snel.
De "Sla de Opstart over" Truc (Deferred Initialization):
- De Oude Manier: Sommige gebouwen hebben een lange, saaie beveiligingscontrole bij de ingang (bibliotheken laden, configuraties controleren) voordat je zelfs maar kunt beginnen met stenen werpen.
- De PeAR-Manier: PeAR snijdt het gebouw open en laat je pas beginnen met stenen werpen nadat de saaie opstart is voltooid. Je slaat de wachtrij elke keer over.
De "Telepathische Overdracht" (Shared Memory Fuzzing):
- De Oude Manier: Je moet je steen op een stuk papier schrijven, naar een brievenbus lopen, het erin doen, en het gebouw moet de brievenbus openen om het te lezen. Dit is traag.
- De PeAR-Manier: PeAR installeert een directe buis tussen jouw hand en de hand van het gebouw. Je geeft de steen direct door de lucht door. Geen papier, geen brievenbus, geen wachten.
De Grote Test
De auteurs hebben PeAR getest tegen andere tools met behulp van een beroemde hindernisbaan genaamd FuzzBench, die 25 verschillende complexe softwareprogramma's bevat. Ze hebben de tests gedraaid voor een enorme hoeveelheid tijd (het equivalent van 4,25 jaar aan continue computerverwerking).
Dit is wat ze ontdekten:
- Betrouwbaarheid: PeAR heeft succesvol 22 van de 25 gebouwen aangepast. Dit is net zo goed als de beste andere "Pre-Game" tools en bewijst dat je het gebouw niet hoeft te breken om de sensoren te installeren.
- Snelheid: Wanneer PeAR haar fancy trucs gebruikte (de "Geen-Reset" lus en de "Telepathische Overdracht"), werd het 4 keer sneller dan de basisversie. Het was aanzienlijk sneller dan alle andere "Pre-Game" tools.
- Nauwkeurigheid: Ondanks dat het sneller was, miste PeAR geen enkele val. Het vond net zoveel verborgen paden (code coverage) als de trage "Live" methode en de tools die blauwdrukken gebruiken.
De Conclusie
Het artikel concludeert dat de "Pre-Game" methode (Static Binary Instrumentation) niet langer een risicovolle, trage of onnauwkeurige optie is. Met de juiste tools zoals PeAR kun je gesloten software snel en nauwkeurig aanpassen om bugs te vinden, zonder dat je de originele blauwdrukken nodig hebt. PeAR bewijst dat je zowel de snelheid van een renovatieploeg als de precisie van een live waarnemer kunt hebben.
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.