PatchDiscovery: Patch Presence Test for Identifying Binary Vulnerabilities Based on Key Basic Blocks
收藏资源简介:
PatchDiscovery: Patch Presence Test for Identifying Binary Vulnerabilities Based on Key Basic Blocks The source code is structured in the following way:1. Preprocessing:PatchDiscovery preprocesses each input binary function (i.e., VF, PF and TF) by distilling each function's semantics into a CFG and applyinginstruction normalization and simplification to deal with the syntax gaps on instructions. 2. PatchAnalysis: PatchDiscovery identifies the scope of patch in PF and the scope of vulnerability in VF and selects the key basic blocks in PF and VF as their signatures for patch presence discovery, respectively.3. PatchPresenceDscovery:PatchDiscovery determines whether a TF has been patched or not. The dataset is structured in the following way:1. Bin:the compiled binaries 2. _config.csv : There are four parts in the file, which are CVE id , the last vulnerable version , the first patched version , involved functions in order.3. _func.csv : All involved functions in _config.cvs.4. _version.csv : All binary versions to be analyzed.5. gt.csv : optional , you can mark V and P for functions in target binary as ground truth.
PatchDiscovery:基于关键基本块(Basic Block)的二进制漏洞补丁存在性测试 该项目的源代码结构如下: 1. 预处理阶段:PatchDiscovery会对每个输入的二进制函数(即漏洞函数(Vulnerable Function,VF)、补丁函数(Patched Function,PF)与目标函数(Target Function,TF))进行预处理:将每个函数的语义提炼为控制流图(Control Flow Graph,简称CFG),并实施指令归一化与简化操作,以消除指令层面的语法差异。 2. 补丁分析阶段:PatchDiscovery将分别确定PF中的补丁作用域与VF中的漏洞作用域,并选取PF与VF中的关键基本块作为补丁存在性检测的特征签名。 3. 补丁存在性检测阶段:PatchDiscovery将判定目标TF是否已完成补丁修复。 该数据集的组织结构如下: 1. Bin目录:存放编译得到的二进制文件 2. _config.csv:该文件包含四部分内容,按顺序分别为CVE编号、最后一个存在漏洞的版本、首个包含补丁的版本以及涉及的函数 3. _func.csv:收录_config.csv中提及的所有相关函数 4. _version.csv:包含所有待分析的二进制版本信息 5. gt.csv(可选):可用于为目标二进制文件中的函数标注V(存在漏洞)与P(已补丁)作为基准真值(Ground Truth)



