Exploiting Heterogeneous Program Knowledge Graph for Register-related Instruction Vulnerability Prediction (VP-HPKG)
VP-HPKG explores the random propagation of instruction-stream errors by representing the source program as a multi-layer heterogeneous program knowledge graph, and accurately locates the instructions prone to errors.
methods | generate_Fib | float-mm |
---|---|---|
ours | A:0.89 P:0.98 F1:0.80 | A:0.85 P:0.90 F1:0.82 |
PrograML | A:0.85 P:0.93 F1:0.80 | A:0.82 P:0.85 F1:0.78 |
MVD | A:0.67 P:0.50 F1:0.40 | A:0.63 P:0.56 F1:0.0.67 |
Each folder is a benchmark and contains the program data. The most important files in each folder are as follow:
- data_test.py: Data acquisition and processing module.
def get_node
: Identifying entities and relations from the information obtained by LLVM.def get_Ins_SDC
: Getting the attribute information of each entity.
- main.py: Data division, model building, and training module.
def train_model
: Building a knowledge graph. Model building and training.G
: Heterogeneous Graph of instrcution layer.BB_G
: Graph of basic block layer.
To run the code, you need the following dependencies:
Our current experiments are conducted on data obtained by LLVM and LLFI.
Ins_g.dot
: The text and structure information of instructions.F_B_I.dot
: The position number of the instruction in the program.cycle_result.txt, result_other.txt
: The result of fault injection.
Execute the following scripts to train on node classification task:
python main.py