← Nieuwste papers
💻 computer science

Automatic, Expressive, and Scalable Fuzzing with Stitching

Het paper introduceert STITCH, een automatisch systeem dat fuzzing schaalbaar en expressief maakt door API-constraints via 'stitching' dynamisch samen te stellen, wat resulteert in een aanzienlijk hogere bug-detectie en precisie dan bestaande tools.

Oorspronkelijke auteurs: Harrison Green, Fraser Brown, Claire Le Goues

Gepubliceerd 2026-02-24
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Harrison Green, Fraser Brown, Claire Le Goues

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

Samenvatting van het onderzoek: "Stitching" – De Naaimachine voor Softwarefouten

Stel je voor dat je een enorme, ingewikkelde machine hebt (zoals een auto of een robot) en je wilt weten of hij kapot gaat als je hem op de gekste manieren gebruikt. In de softwarewereld noemen we dit fuzzing: het automatisch gooien van duizenden willekeurige input-gegevens naar een programma om te zien of het crasht.

Het probleem is echter dat moderne software heel complex is. Het is alsof je probeert een auto te testen door zomaar de deuren open te gooien, de motor te starten zonder brandstof, en de wielen eruit te trekken. De meeste van deze pogingen zijn zonde van de tijd omdat ze simpelweg niet werken (de deuren gaan niet open als de motor niet draait). De software heeft specifieke regels: "Eerst brandstof, dan startknop, dan versnelling."

Dit papier introduceert een nieuwe methode genaamd Stitching (naaien/stikken), ontwikkeld door onderzoekers van de Carnegie Mellon University. Hier is hoe het werkt, vertaald naar alledaagse taal:

1. Het Probleem: De "Willekeurige Chaos"

Vroeger probeerden computersoftware te testen door zomaar willekeurige knoppen in te drukken.

  • Analogie: Stel je voor dat je een kind bent dat probeert een piano te bespelen door zomaar met de vuisten op de toetsen te slaan. Je maakt geluid, maar je speelt geen muziek. Je vindt misschien wel een kapot toetsje, maar je mist de mooie melodieën die de echte fouten verbergen.
  • Het resultaat: De computer besteedt 99% van zijn tijd aan het vinden van "geen-fouten" (zoals een knop indrukken die al kapot is) in plaats van de echte, gevaarlijke fouten.

2. De Oplossing: "Stitching" (Het Naaien)

De onderzoekers zeggen: "Laten we niet willekeurig slaan, maar laten we de regels van de piano leren en die dan creatief combineren."

Ze hebben een systeem bedacht dat blokken code (kleine stukjes instructies) als puzzelstukjes behandelt.

  • De Blokken: Elke functie in een programma (bijvoorbeeld "maak een bestand aan" of "sla op") is een blokje.
  • De Naaimachine: De computer (de "fuzzer") pakt deze blokjes en naait ze dynamisch aan elkaar op het moment dat het test. Het maakt geen vaste route vooraf, maar bouwt de route terwijl het gaat.
  • De Regels (De "Extrinsic Typestate"): Dit is het slimme deel. Het systeem onthoudt de staat van de objecten.
    • Voorbeeld: Als je een bestand hebt geopend, onthoudt het systeem: "Oké, dit bestand is nu open." Als het systeem later probeert een bestand te sluiten dat al gesloten is, zegt het systeem: "Stop! Dat mag niet." Het naait dan een andere route.
    • Dit voorkomt dat de computer tijd verslijt aan onmogelijke situaties. Het is alsof je een naaimachine hebt die weet dat je niet eerst een knoop kunt maken voordat je de draad hebt door het oog van de naald.

3. De Magische Assistent: De AI (LLM)

Het moeilijkste deel is het vinden van die regels. Waar staan die geschreven? Vaak in saaie documentatie, comments in de code, of foutmeldingen die niemand leest.

  • De Rol van de AI: Het systeem STITCH gebruikt een krachtige AI (een Large Language Model) als een super-snelle lezer en vertaler.
  • Analogie: Stel je voor dat je een oude, onleesbare handleiding voor een machine hebt. De AI leest die handleiding, begrijpt de regels ("Je moet eerst de sleutel omdraaien"), en schrijft die regels om in een testplan. Als de AI een fout maakt in zijn plan, ziet de computer dat het crasht, en vraagt hij de AI: "Hé, dit werkt niet, probeer het nog eens." De AI leert van zijn fouten en past het plan aan.

4. De Resultaten: Een Groot Onderzoek

De onderzoekers hebben dit systeem op 1365 verschillende open-source projecten losgelaten (zoals VLC Media Player, libjpeg, en vele andere).

  • Het resultaat: Ze vonden 131 nieuwe, echte fouten in 102 projecten.
  • De kwaliteit: Van die 131 fouten waren er 73 al door de ontwikkelaars opgelost (gepatcht).
  • Vergelijking: Andere geavanceerde tools vonden samen maar 10 echte fouten. STITCH was niet alleen slimmer, maar ook veel sneller en goedkoper.

Waarom is dit belangrijk?

In de wereld van softwarebeveiliging is tijd geld. Hoe sneller je een gat in de beveiliging vindt, hoe sneller hackers er geen misbruik van kunnen maken.

  • De Metafoor: Vroeger was software testen als het zoeken naar een speld in een hooiberg door blindelings te steken. Met Stitching heb je nu een magneet die precies weet waar de spelden zitten, en een robot die de hooiberg systematisch doorzoekt zonder zich te laten afleiden door het hooi.

Kortom:
Dit papier beschrijft een slimme manier om software te testen door de regels van het programma te "leren" en die regels dynamisch te combineren, ondersteund door een AI die de handleidingen leest. Het resultaat is een systeem dat veel sneller en nauwkeuriger gevaarlijke bugs vindt dan wat we tot nu toe hadden.

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.

Probeer Digest →