从数据中抽取模式进行匹配的方法,在设计时本质就是在解决准确性和泛化性之间求得平衡。
- 如果我们注重完全的准确性,可以针对所有数据进行特判,确保完全一致的匹配。这样模式没有泛化性,但可以保证绝对准确。
- 另一方面,如果完全注重泛化性,可以不进行任何判断,直接报告所有情况。虽然准确率可能极低,但保证了泛化。
现行的模式匹配方法需要在这两者之间找到平衡,才能有效使用。
在安全领域中,[[重现漏洞检测]]这个话题很大程度体现了这个特点。不同工作提出各种相似性度量方案(如后续列表所示),将代码与历史漏洞进行相似性对比。每个方案都关注程序和漏洞的不同特征,但本质上还是在历史漏洞检测的准确性和未知漏洞检测的泛化性之间寻求平衡,以尽可能准确地发现未知模式。
有趣的是,我们或许可以设计一个指标来衡量这些方法的准确性和泛化性,从而确认这些不同的方案究竟是存在实质性的创新,还是仅仅调整了准确性和泛化性之间的平衡参数。
### 重现漏洞检测论文
1. VUDDY: A Scalable Approach for Vulnerable Code Clone Discovery (SP'17)
2. MVP: Detecting Vulnerabilities using Patch-Enhanced Vulnerability Signatures (Security'20)
3. TRACER: Signature-based Static Analysis for Detecting Recurring Vulnerabilities (CCS'22)
4. Movery: A Precise Approach for Modified Vulnerable Code Clone Discovery from Modified Open-Source Software Components (Security'22)
5. V1scan: Discovering 1-day Vulnerabilities in Reused C/C++ Open-source Software Components Using Code Classification Techniques (Security'23)
6. RecurScan: Detecting Recurring Vulnerabilities in PHP Web Applications (WWW'24)
7. Accurate and Efficient Recurring Vulnerability Detection for IoT Firmware (CCS'24)
8. VMud: Detecting Recurring Vulnerabilities with Multiple Fixing Functions via Function Selection and Semantic Equivalent Statement Matching (CCS'24)
9. FIRE: Combining Multi-Stage Filtering with Taint Analysis for Scalable Recurring Vulnerability Detection (Security'24)