FP-Predictor - False Positive Prediction for Static Analysis Reports

Dit paper introduceert FP-Predictor, een op Graph Convolutional Networks gebaseerd model dat Code Property Graphs gebruikt om de hoge rate van false positives in statische beveiligingstests (SAST) te verminderen, waarbij het een testnauwkeurigheid van 100% en een praktische nauwkeurigheid van 96,6% bereikte.

Tom Ohlmer, Michael Schlichtig, Eric Bodden

Gepubliceerd Thu, 12 Ma
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

🕵️‍♂️ FPPredictor: De Slimme Filter voor Software-bugs

Stel je voor dat je een enorme berg brieven hebt ontvangen. Deze brieven zijn allemaal geschreven door een robot genaamd CogniCrypt. Deze robot is een "veiligheidsinspecteur" die door miljoenen regels computercode loopt op zoek naar fouten (bugs) die hackers kunnen misbruiken.

Het probleem? De robot is extreem paranoïde. Hij schreeuwt "Gevaar!" bij bijna elke kleine onzekerheid.

  • Soms heeft hij gelijk (een echte gevaarlijke bug).
  • Maar heel vaak schreeuwt hij "Gevaar!" terwijl er helemaal niets aan de hand is. Dit noemen we vals-positieven (false positives).

Voor programmeurs is dit een nachtmerrie. Ze moeten elke "alarm" handmatig controleren. Het is alsof je een brandweerman bent die 90% van de tijd uitrukt voor een verbrande boterham in plaats van een echt brandend huis. Het kost tijd, geld en vertrouwen.

FPPredictor is de oplossing die de auteurs van dit paper hebben bedacht. Het is een slimme AI-assistent die de brieven van de robot inspecteert en zegt: "Hee, dit is waarschijnlijk een nep-alarm, laat dit maar liggen. Kijk hier, dit is een echt gevaar."


🧠 Hoe werkt deze slimme assistent?

In plaats van alleen naar de tekst te kijken, laat FPPredictor de code zien als een gigantisch, driedimensionaal web (een grafiek).

  1. Het Web van de Code (CPG):
    Stel je voor dat elke regel code een knooppunt is in een web. De lijnen tussen de knooppunten laten zien hoe de code met elkaar praat.

    • Sommige lijnen laten zien hoe de code eruitziet (de structuur).
    • Andere lijnen laten zien welke knop je eerst moet indrukken (de volgorde).
    • Weer andere lijnen laten zien welke gegevens waar naartoe vliegen (de logica).
      FPPredictor kijkt naar dit hele web tegelijk, niet alleen naar één losse zin.
  2. De Oefening (Training):
    De AI is getraind met een speciale "oefenpakket" genaamd CamBenchCAP. Dit is een verzameling van voorbeelden waar de auteurs precies weten: "Dit is een echte bug" en "Dit is een nep-alarm".
    De AI heeft deze voorbeelden bestudeerd en leert patronen te herkennen. Het is alsof je een detective opleidt met duizenden foto's van echte misdaden en onschuldige situaties, tot hij het verschil kan zien.

  3. De Test (Het Resultaat):
    Toen ze de AI testten op een nieuwe, onbekende berg brieven (CryptoAPI-Bench), gebeurde er iets interessants:

    • Op het eerste gezicht: De AI leek niet zo goed te werken. Hij zag veel "nep-alarmen" van de robot als "echte gevaarlijke situaties". De statistieken zagen er slecht uit.
    • Naar de diepte kijken: Toen de auteurs de resultaten handmatig controleerden, ontdekten ze iets verrassends. De AI had vaak meer gelijk dan de benchmark zelf.
      • De benchmark (de "antwoordenlijst") dacht dat een stukje code veilig was.
      • De AI dacht: "Nee, dat is niet veilig, dat is een slechte gewoonte die hackers kunnen misbruiken."
      • Bij nadere inspectie bleek de AI vaak gelijk te hebben! De code was inderdaad riskant, maar de benchmark had het gemist.

🏆 De Les: Soms is de AI slimmer dan de Mensen

Het meest fascinerende deel van dit verhaal is dat de AI een conservatieve houding heeft aangeleerd.
Stel je voor dat je een veiligheidscontroleur bent op een vliegveld.

  • De "oude" regels zeggen: "Als iemand een mes heeft, is het gevaarlijk. Als iemand een boterhammesje heeft, is het veilig."
  • De AI zegt: "Wacht even, dat boterhammesje is ook scherp. Laten we het maar als gevaarlijk behandelen om zeker te zijn."

In de wereld van softwarebeveiliging is het beter om veiligheid te verkiezen boven gemak. Als de AI een "vals-positief" van de robot als "echt gevaar" ziet, betekent dit vaak dat de AI een subtiel risico heeft gevonden dat de menselijke regels (of de benchmark) over het hoofd zagen.

De cijfers:

  • De AI kon 96,6% van de gevallen correct beoordelen (na rekening te houden met de nieuwe inzichten).
  • Hij helpt programmeurs om te stoppen met het controleren van nep-alarmen en zich te focussen op de echte gevaarlijke situaties.

🔮 Wat komt er nog?

De auteurs geven toe dat hun AI nog niet perfect is:

  • De Blinde Vlek: De AI kijkt momenteel vooral naar één stukje code tegelijk. Hij ziet niet altijd hoe dat stukje code praat met andere stukken code in een ander bestand (zoals een gesprek tussen twee mensen in verschillende kamers).
  • Toekomstplannen: Ze willen de AI leren om ook die "interne gesprekken" te horen en beter uit te leggen waarom hij iets als gevaarlijk ziet (zodat mensen het kunnen vertrouwen).

📝 Samenvatting in één zin

FPPredictor is een slimme AI die helpt om de overvloed aan nep-waarschuwingen van software-veiligheidstools te filteren, zodat programmeurs hun tijd kunnen besteden aan het oplossen van de echte, gevaarlijke problemen in hun code.