Page 194 - 《软件学报》2025年第10期
P. 194

郑炜 等: 基于抽象语法树变异的漏洞样本生成方法                                                        4591


                 syntax  rules  of  real  vulnerabilities,  generate  vulnerability  samples  more  in  line  with  the  actual  situation,  and  provide  a  more  effective
                 solution  for  software  security  and  reliability.  This  method  analyzes  the  abstract  syntax  tree  structure  generated  by  Eclipse  CDT,  extracts
                 the  syntactic  information  in  the  nodes,  reconstructs  the  nodes  and  abstract  syntax  trees,  optimizes  the  abstract  syntax  tree  structure,  and
                 designs  a  series  of  mutation  operators.  Subsequently,  it  performs  mutation  operations  on  the  optimized  abstract  syntax  trees.  The  method
                 proposed in this paper can generate mutation samples with the characteristics of UAF and CUAF vulnerabilities, which can be used for the
                 detection  of  zero-day  vulnerabilities  and  help  to  improve  the  detection  rate  of  zero-day  vulnerabilities.  Experimental  results  show  that  this
                 method  reduces  the  invalid  sample  size  by  34%  on  average  compared  with  the  random  variation  method  in  traditional  detection  methods,
                 and  can  generate  more  complex  mutated  samples.  In  addition,  this  method  can  generate  more  complex  mutated  samples,  enhancing  the
                 coverage and accuracy of detection.
                 Key words:  abstract syntax tree (AST); zero-day vulnerability; variation operator; vulnerable sample generation

                    在当今不断发展壮大的信息化社会中, 软件行业作为信息技术的核心, 在国民经济和社会发展方面发挥着重
                 要的推动作用     [1] . 随着信息企业的迅猛发展, 海量的软件产品不断涌现, 为人们带来了巨大的效益. 但即使是最高
                 质量的软件也可能存在错误, 这可能导致软件失效. 在网络安全领域, 零日漏洞的检测尤为重要. 因此, 在软件开发
                 和使用过程中, 必须高度重视软件的安全性和稳定性, 加强软件漏洞的检测和修复工作, 以确保网络安全和国家安
                 全. 本文中所提到的零日漏洞特指未在各大漏洞网站或平台公开披露的漏洞, 由于它们没有公开补丁的安全漏洞,
                 因此具有更强的突发性与更大的破坏性. 目前基于网络的应用系统更多地采用了分布式、集群和可扩展架构, 使

                 得软件的内部结构错综复杂. 零日漏洞的增长同软件复杂性、软件架构的演化呈现正相关关系.
                    软件漏洞是程序中的错误或缺陷, 而零日漏洞是在公开发现前已被恶意利用的未知漏洞. 当前软件漏洞的静
                 态检测方式只能依据已知的漏洞类型进行重复性和被动性检测, 无法对架构演化导致的零日漏洞进行检测. 而以
                 模糊测试为代表的动态检测方式近年来在发现零日漏洞方面取得了较大成功, 但其执行阶段性能开销较大且非常
                 耗时, 无法对零日漏洞做出及时检测. 为了解决上述传统检测方式所存在的问题, 本文特别关注                            UAF (use after free)
                 和  CUAF (concurrent use after free) 这两种漏洞, 提出基于抽象语法树变异的漏洞样本生成技术. UAF          和  CUAF  类
                 型零日漏洞由于其难以检测和高危性质, 对软件系统安全构成严重威胁. 基于抽象语法树变异的漏洞样本生成方
                 法首先通过对     Eclipse CDT  生成源漏洞代码抽象语法树节点结构的分析, 提取节点中的语法信息来重构节点和抽
                 象语法树, 实现对抽象语法树结构的优化. 接着, 在谓词逻辑和统计分析的理论基础上分析软件漏洞演化规律, 得
                 到一系列变异算子. 根据变异算子的变异规则在优化后的抽象语法树上实现变异操作. 最后使用本文提出的                                MOPSG
                 (mutation operators perform sequence generation) 算法对变异算子序列进行优化生成变异策略, 对源漏洞代码在抽
                 象语法树层面执行变异策略, 最终得到蕴含漏洞的变异样本. 经过正则过滤和有效性确认后得到的有效变异样本
                 可用于观察测试用例在固定类型漏洞上的有效性, 了解其效果和不足, 间接提高用例在检测此类漏洞时的能力. 整
                 个路线的技术框架如图         1  所示, 该路线从漏洞演化特征和漏洞样本数据出发, 提出了针对具备                    UAF  和  CUAF  类
                 型零日漏洞特征的代码的静态模糊变异方法.
                    为了验证基于抽象语法树变异的漏洞样本生成技术得到的变异样本的有效性, 本文以多线程程序下数据竞争
                 引发的一类安全漏洞展开. 首先对含有漏洞多线程程序进行漏洞特征语句插入处理, 推断数据竞争引发的                                  CUAF
                 漏洞模式对应的最优变异算子执行序列, 有效降低变异算子次序带来的无效样本数量. 然后筛选                               Linux  内核公开
                 代码中规模合适的且在时间线中含有              CUAF  漏洞的代码片段, 通过抽象语法树变异复现这些代码片段在时间线
                 上触发该类型漏洞的过程, 通过与传统检测方法中的随机变异算子执行过程做横向对比, 传统检测方法由于难以
                 发现尚未公开披露的零日漏洞, 往往效果不佳. 本文方法可以生成包含漏洞特征的变异样本, 作为零日漏洞检测的
                 输入, 从而提高零日漏洞的检测率.
                    本文第   1  节介绍目前软件漏洞检测和变异测试的相关研究工作. 第                  2  节介绍本文的研究内容. 第       3  节介绍基
                 于抽象语法树变异的漏洞样本生成方法的具体实现. 第                   4  节通过实验来证明本文提出方法的有效性. 最后总结
                 全文.
   189   190   191   192   193   194   195   196   197   198   199