摘要:随着信息技术的持续发展, 软件产品的数量和种类不断增加, 然而即使是高质量的软件也可能存在漏洞. 此外, 软件更新速度快, 软件架构愈发复杂, 这导致漏洞逐渐进化成新的形态, 传统的漏洞检测方法和规则难以适用于新的漏洞特征. 由于零日漏洞样本的稀缺性, 软件演化过程中出现的零日漏洞难以被发现, 这为软件安全带来很大的潜在风险. 提出一种基于抽象语法树变异的漏洞样本生成方法, 能够模拟真实漏洞的结构和语法规则, 生成更符合实际情况的漏洞样本, 它可以为软件安全性和可靠性提供更加有效的解决方案. 该方法通过分析 Eclipse CDT 生成的抽象语法树结构, 提取节点中的语法信息, 重构节点和抽象语法树, 优化抽象语法树结构, 并设计一系列变异算子, 然后在优化后的抽象语法树上进行变异操作. 该方法可以生成具有UAF和CUAF漏洞特征的变异样本, 这些样本可以用于零日漏洞的检测, 有助于提高零日漏洞的检测率. 实验结果表明, 该方法比传统检测方法中的随机变异方法平均减少了 34% 的无效样本量, 并且可以生成更加复杂的变异样本; 此外, 该方法可以生成更加复杂的变异样本, 提高检测的覆盖率和准确率.