Page 221 - 《软件学报》2026年第7期
P. 221

2906                                                       软件学报  2026  年第  37  卷第  7  期


                    ● 敏感操作检测阶段. 由公式        (4) 显然有  |S sink | = kS sink ; 此外, 考虑污染传播行为映射满足分配律性质, 可将公
                 式  (4) 基于多标签污点的敏感操作检测进行分解, 分别判断污染语句是否拥有漏洞谓词条件所需的各个污染标签.
                 极端情况下, 每个污点汇模式的谓词条件中均涉及所有                 k 种类型的污染标签, 此时匹配次数上界为            kS sink V t .
                    综上所述, 多标签数据流分析的时间复杂度上界可表示为:

                                          O(kS source V +kτ(E,V)+kS sink V t ) = O(kV +kτ(E,V))      (14)
                 一般地, 实际分析场景中多标签数据流分析算法的复杂度为:

                                             O(S source V +τ(E,V)+kS sink V t ) = O(E +V)            (15)
                 即多标签数据流分析算法与传统污点分析算法开销相近.

                  6   相关工作

                  6.1   Web 静态应用安全测试
                    作为一种高效的漏洞检测方法, Web           应用静态安全测试技术始终是研究领域备受关注的热点课题. 早期技术
                 主要依赖于对代码文本的简单模式匹配, 虽能快速发现浅层代码缺陷, 但存在极高误报率问题. 随着                               Web  应用复
                 杂度的提升, 众多研究者       [34−40] 开始引入污点分析这一关键技术, 将程序代码转化为抽象语法树、代码属性图                      [41] 或
                 静态单赋值 (static single assignment, SSA) 等中间表示形式后, 基于数据流分析追踪不可信输入的传播过程, 进而
                 识别  Web  安全漏洞.
                    近年来, 基于静态污点分析的          Web  应用漏洞检测研究范式呈现出两个主要演进方向. 其一, 聚焦于整体分析
                 精度与效率提升, 主要思路为在污点分析具体实现上融入各类形式化方法与工具, 从流敏感、域敏感、上下文敏
                 感等分析能力维度增强静态分析技术, 进而提升漏洞检测精确率、召回率与整体分析效率. 例如, Tan                             等人  [3]  提出
                 的  Tai-e 框架实现了针对   Java Web  应用的创新性高效指针分析算法, 可在降低复杂度的同时实现更准确的分析结
                 果; Li 等人  [4] 提出了基于对象依赖图 (ODG) 和图查询的        Node.js 应用漏洞检测方法, 其检测过程结合了流敏感、
                 上下文敏感的静态分析与混合分支敏感技术; 在此基础上, Kang                  等人  [5] 针对 JavaScript 语言动态特性提出一种扩
                 展抽象解释方法, 通过自底向上与自顶向下的两阶段处理, 平衡静态分析的准确性与可扩展性问题; Luo                              等人  [6] 的
                 TChecker 框架针对  PHP  语言弱类型问题, 建模面向对象相关特性并执行对象的过程间数据流分析来细化类型, 实
                 现  PHP  动态特性分析支持. 其二, 致力于特异性分析模型构建, 即针对               Web  应用开发过程中常见的框架、开发架
                 构或特殊环境进行细粒度语义建模, 补全缺失的程序控制流、数据流信息, 提升静态分析技术在不同场景下的安
                 全漏洞识别能力. 例如, Chen     等人  [7] 提出了一种针对    Spring  框架核心技术的静态分析方法, 通过优化调用图构建
                 过程增强其完整性, 来提高对         Spring Web  应用中依赖注入、面向切面编程等行为的分析能力; Guo               等人  [8] 提出了
                 组件图概念, 用于建模       JavaScript React 框架数据流以及跨组件数据依赖, 可实现对          React 应用漏洞的有效检测;
                 Wang 等人  [42] 提出了  ANTaint, 通过扩展调用图并按需对库应用污点传播, 来提高方法在工业级场景下面对大量库、
                 原生方法和企业级框架的可扩展性与准确性; Liu              等人  [43] 针对微服务架构   Web  应用中的漏洞检测问题, 提出了一
                 种名为   MScan  的新型安全分析方法, 通过基于        LLM  的入口识别、服务依赖关系建模、距离引导的选择性污点分
                 析策略等多项技术, 解决传统方法难以处理跨服务通信与调用关系的问题; Park                      等人  [44] 提出的  SAFEWapp  框架可
                 针对不同浏览器执行环境构建静态分析模型, 并支持调整                  DOM  树抽象层次来平衡分析的性能与精确率.
                    上述工作虽然在实现层面有所差异, 但采取的核心污点分析算法均相似. 而本文提出的多数据流分析方法着
                 重于在   Web  应用场景下改进污点分析算法的底层框架设计, 与这些工作呈正交关系, 且方法本身与                           Web 应用程
                 序的编程语言或开发框架实现无关, 具备较强的泛用性. 在实践中, 可将多数据流分析方法与上述各类分析框架相
                 互结合, 共同提升     Web  应用静态安全测试技术的分析能力.
                    此外, 部分研究工作在关注特定场景下的静态分析问题时, 采用了定制化的数据流抽象层次与近似分析策略,
                 相较于通用分析方法可在准召率与性能间取得更好平衡, 如                    Zhong  等人  [45] 针对工业微服务应用场景下的敏感数
                 据泄露问题, 提出了可扩展组合静态污点分析工具                CFTaint, 其核心思路为采取对象非敏感 (object-insensitive) 的
   216   217   218   219   220   221   222   223   224   225   226