# A Comprehensive Review and Assessment of Cybersecurity Vulnerability Detection Methodologies
## 4 Taxonomy of Vulnerability Detection Approaches and Findings Analysis
### Graph-Based Approach
#### 4.2.1 Graph-Based Approach Methods Description  
Method Based on GGNN  
This study introduced in their work a novel framework named FUNDED (Flow-sensitive vUINerability coDE Detection) [55]. It combines a graph-based learning concept with automated data collection for code vulnerability detection. FUNDED leverages the  
Figure 16: Features of graph-based approach. benefits of advanced graph neural networks (GNNs) [56] to represent the target program as a graph by AST [57], capturing control, data, and call dependencies, using PCDG [58], to enhance code vulnerability detection. The framework first converts the program source code into a graph representation, where nodes represent statements and edges represent various code dependencies (control, data, and call). In the first phases, FUNDED includes Gated Graph Neural Networks (GGNNs) [59] to capture complex code structures and relationships critical for identifying vulnerabilities. In the second step, related to data collection, the framework gathers high-quality training samples from open-source projects to identify vulnerable code and enrich the training dataset with real-life examples. A key aspect of this phase is the combination of expert models (support vector machine (SVM), random forests (RFs), k-nearest neighbor (KNN), logistic regression (LR), and gradient boosting (GB) to identify vulnerability-relevant commits. Conformal Prediction (CP) measures the statistical confidence of each expert model's predictions. The third step highlights the multi-relational graph modeling technique, which helps create multiple relation graphs for different types of edges (e.g., control flow, data flow, syntax). It aggregates information across these relation graphs using a Gated Recurrent Unit (GRU) [60] to learn a comprehensive representation of the program. Finally, the last step involves training the models on real-life samples and applying transfer learning to adapt the model to different programming languages, as shown in Figure 17. Through the utilization of the trained model and the learned graph representations, the proposed solution assists in identifying patterns indicative of vulnerabilities. Using static program analysis approaches, this contribution presented a method for handling software vulnerability detection based on the Slice Property Graph (VulSPG) [61]. After parsing the target code using the open-source tool joern ([[https://joern.readthedocs.io/en/latest/](https://joern.readthedocs.io/en/latest/)]([https://joern.readthedocs.io/en/latest/](https://joern.readthedocs.io/en/latest/)), accessed on 31 July 2024), the method matches some vulnerability candidate syntax characteristics by applying the Abstract Syntax Tree (AST) [57], following six types of Syntax-based Vulnerability Candidates (SyVCs) [62]. Then, the Program Dependency Graph (PDG) [63] is traversed to obtain slice nodes. Additionally, the Code Property Graphs (CPG) [64] generate data and control-dependencies as well as function calls among slice nodes to build the Slice Property Graph (SPG). The second step encodes the semantics in the SPG nodes. This process involves lexical analysis via the Word2 Vec model and semantic feature vectors through a token-level attention mechanism [65]. This type of information is then combined to enrich the node's feature representation and output an embedded vector of the graph nodes. The current step divides the SPG into three types of subgraphs: a Control Dependency Graph (CDG), a Data Dependency Graph (DPG), and a Function Call Dependency Graph. The Graph Encoding Network phase then uses Relational Graph Convolutional Networks (R-GCNs) [66]. This helps to learn the hidden state of each node in each layer and concatenate them to capture the comprehensive graph features essential for identifying potential vulnerabilities. In the last step, the method proposes a subgraph-level attention mechanism to obtain the feature vector of the combined subgraphs (vectors). Figure 17: Workflow of FUNDED. (Adapted from [55]).