Description
Abstract:
This thesis presents PIG, a program to improve the precision of the Static Application Security Testing (SAST) tool Woodpecker.
One weakness of SAST tools is the high number of false positives they report. PIG reevaluates the results produced by those tools.
It generates the Code Property Graph (CPG) of the analyzed code and converts the findings of Woodpecker to new finding-nodes.
These are appended to those nodes in the CPG, that represent the potentially vulnerable code. After that the modified graph is used
as an input for a Heterogeneous Graph Neural Network to classify the finding-nodes as true positives or false positives. The goal is
to train a Graph Neural Network (GNN) that can reliably classify the findings of Woodpecker.
As training data for the GNN the Juliet Test Suite was used because of its wide variety of vulnerabilities and clear labeling of vulnerable lines.
The setup and the graph generation was more time-consuming than anticipated. Therefore, only a simple GNN was implemented and the
optimization is left for future work.
Zusammenfassung:
Diese Arbeit präsentiert PIG, ein Programm zur Verbesserung der Präzision des Static Application Security Testing (SAST) Tools Woodpecker.
Eine Schwäche von SAST tools ist die große Anzahl an gemeldeten False Positives. PIG reevaluiert die erzeugten Reports dieses Tools. Es
generiert den Code Property Graph (CPG) des analysierten Codes und wandelt die Ergebnisse von Woodpecker in neue Finding-Knoten um.
Diese werden dann an die Knoten des CPGs angehängt, die den potentiell verwundbaren Code darstellen. Danach wird der modifizierte Graph
als Input für ein heterogenes neuronales Graphennetzwerk verwendet, um die Finding-Knoten als True Positives oder als False Positives zu
klassifizieren. Das Ziel ist es ein GNN zu trainineren, das die Findings von Woodpecker zuverlässig klassifizieren kann.
Als Trainingsdaten für das GNN wurde die Juliet Test Suite verwendet, da sie eine große Vielfalt an Schwachstellen und eine klare Kennzeichnung
der verwundbaren Zeilen enthält.
Das Setup und die Graphengenerierung waren zeitaufwändiger als erwartet. Deswegen wurde nur ein einfaches GNN implementiert und die
Optimierung wird für zukünftige Arbeiten zurückgestellt.
|