CauSec: Unboxing the Causal Drivers of Static Vulnerability Analysis Performance
Dit artikel introduceert CAUSEC, een causaal analyseframework dat de onderliggende aannames van Static Application Security Testing (SAST)-tools formaliseert en valideert om te bepalen of hun ontwerpkeuzes daadwerkelijk de beoogde prestatiewinst opleveren, waarbij het het nut ervan aantoont door middel van een systematische studie naar 57 aannames over het misbruik van crypto-API's in vier populaire tools.
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
In de digitale wereld fungeren softwaretools als de poortwachters van beveiliging, waarbij ze code scannen om verborgen gebreken te vinden voordat ze kunnen worden misbruikt. Deze tools, bekend als static application security testers, worden overal gebruikt, van kleine startups tot enorme corporaties. Ze werken door beredeneerde gissingen te doen over hoe code zich gedraagt, waarbij ze er vaak voor kiezen bepaalde delen van een programma te negeren om sneller te draaien of om te voorkomen dat ze onschuldige code als gevaarlijk markeren. De sector heeft lang operaties gevoerd op basis van een reeks onbewezen overtuigingen: dat het overslaan van specifieke soorten code de tool nauwkeuriger zal maken, of dat het negeren van bepaalde bibliotheken het aantal valse meldingen zal verminderen. Deze overtuigingen sturen de manier waarop de tools worden gebouwd, maar tot nu toe had niemand systematisch getest of deze aannames daadwerkelijk waar waren of dat het slechts handige verhalen waren die de ontwerpers zichzelf vertelden.
Een team onderzoekers aan de William & Mary besloot deze overtuigingen op de proef te stellen. Ze bouwden een nieuw framework genaamd CAUSEC, dat de aannames achter beveiligingstools niet behandelt als feiten, maar als hypothesen die bewezen of weerlegd kunnen worden. In plaats van alleen te kijken naar of een tool bugs vindt, vroegen ze waarom de tool ze vindt en wat er gebeurt als je de regels verandert. Door een methode genaamd causale inferentie toe te passen, die helpt om echte oorzaak-gevolgrelaties te scheiden van eenvoudige toevalligheden, waren ze in staat om specifieke ontwerpkeuzes te isoleren en hun werkelijke impact te meten. Hun werk onthult dat de regels die beveiligingstools volgen vaak fragieler en specifieker zijn dan men besefte, en dat een strategie die perfect werkt voor de ene tool, volledig kan falen voor een andere.
De onderzoekers begonnen door te kijken naar de geschiedenis van tools die ontworpen zijn om fouten te vangen in de manier waarop software cryptografie gebruikt, de wiskunde die gegevens veilig houdt. Ze doorzochten twintig jaar aan onderzoeksartikelen en vonden vijfentwintig verschillende aannames die toolontwerpers hadden gemaakt. Deze aannames varieerden van het idee dat het focussen op specifieke coderegels de nauwkeurigheid verbetert, tot de overtuiging dat het negeren van externe codebibliotheken de tool sneller en preciezer maakt. Het team realiseerde zich dat veel van deze claims gebaseerd waren op correlaties — dingen die toevallig samen voorkwamen — in plaats van bewezen oorzaken. Bijvoorbeeld, een tool zou externe bibliotheken kunnen overslaan en toevallig minder valse meldingen hebben, maar dat betekent niet dat het overslaan de werkelijke reden voor de verbetering was. Er zouden andere verborgen factoren in het spel kunnen zijn.
Om dit te ontrafelen, richtte het team zich op één zeer algemene aanname: dat het rapporteren van beveiligingswaarschuwingen uit externe bibliotheken de precisie van de tool verlaagt, wat betekent dat het meer valse meldingen creëert. Ze verzamelden een enorme dataset van meer dan 57.000 meldingen gegenereerd door vier populaire beveiligingstools: Semgrep, CodeQL, CogniCrypt en CryptoGuard. Vervolgens controleerden ze elke melding handmatig om te zien of het een echt probleem was of een valse melding, waardoor ze een 'ground truth' creëerden waar de tools tegenaan gemeten konden worden. Met behulp van hun nieuwe framework simuleerden ze wat er zou gebeuren als ze elke tool zouden dwingen om meldingen uit externe bibliotheken te rapporteren, terwijl ze zorgvuldig rekening hielden met andere variabelen zoals de grootte van de applicatie of de populariteit ervan.
De resultaten waren verrassend en lieten zien dat de aanname geen universele waarheid was. Voor twee van de tools hield de aanname stand: wanneer ze begonnen met het rapporteren van meldingen uit externe bibliotheken, steeg het aantal valse meldingen inderdaad. Echter, voor de andere twee tools gebeurde precies het tegenovergestelde. Wanneer die tools meldingen uit externe bibliotheken bevatten, verbeterde hun nauwkeurigheid juist. Deze ontdekking bewees dat het ontwerp van de tool zelf fungeert als een moderator; dezelfde regel kan totaal verschillende effecten hebben afhankelijk van de tool. De onderzoekers ontdekten dat de impact van het opnemen van externe code sterk varieerde afhankelijk van het specifieke type bibliotheek en de specifieke tool die werd gebruikt. Voor de ene tool veroorzaakten utility-bibliotheken een aanzienlijke daling in nauwkeurigheid, terwijl voor een andere tool diezelfde bibliotheken de nauwkeurigheid juist verbeterden.
De studie benadrukte ook dat veel van de aannames van toolontwerpers gebaseerd waren op ongeverifieerde afwegingen. Ontwerpers offeren vaak het vermogen op om elke mogelijke bug te vinden in ruil voor snelheid of minder valse meldingen, in de overtuiging dat deze afweging noodzakelijk is. De onderzoekers ontdekten dat hoewel deze afwegingen echt zijn, de specifieke uitkomsten vaak onvoorspelbaar zijn. Ze ontdekten dat de manier waarop een tool is gebouwd — de specifieke regels, hoe het gegevens filtert en hoe het context afhandelt — bepaalt of een ontwerpkeuze helpt of schaadt. Dit betekent dat een beveiligingsteam niet simpelweg de ontwerpkeuzes van een succesvolle tool kan kopiëren en hetzelfde resultaat kan verwachten. Wat voor de ene tool werkt, is niet gegarandeerd voor een andere.
Uiteindelijk betoogt het artikel dat de beveiligingsgemeenschap moet bewegen van het accepteren van aannames als feiten. De onderzoekers hebben aangetoond dat het door middel van causale analyse mogelijk is om deze aannames rigoureus te testen en precies te begrijpen hoe ze de prestaties beïnvloeden. Ze ontdekten dat hoewel sommige aannames geldig zijn, veel dat niet zijn, en dat hun geldigheid volledig afhangt van de specifieke context van de gebruikte tool. De studie concludeert dat toolontwerpers niet de aannames van eerder werk moeten overnemen zonder deze te testen in hun eigen specifieke omgeving. In plaats daarvan moeten ze elke ontwerpkeuze behandelen als een hypothese die getest moet worden, om ervoor te zorgen dat de tools die ze bouwen gebaseerd zijn op bewijs in plaats van intuïtie. Deze aanpak biedt een duidelijk pad naar het bouwen van beveiligingstools die niet alleen snel zijn, maar ook echt effectief zijn in het beschermen van software.
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.