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

毛祥煜 等: 面向   Web  应用漏洞检测的多数据流静态分析方法                                              2907


                 字段级 (field-based) 分析策略, 通过合并同一类型的所有对象实例, 在不依赖完整调用图的前提下实现对跨过程敏
                 感数据传播的精确追踪, 有效解决了工业微服务中敏感数据治理的效率与精确度矛盾; 本文则针对                               Web  应用的诸
                 多独有特性, 采用基于抽象语法树遍历的分析策略, 并忽略循环、递归等结构中的控制流回边. 评估结果表明, 该
                 策略可在不影响      Web  漏洞检测精确度的前提下, 显著提升整体分析效率.
                  6.2   异步过程中的  Web  漏洞检测
                    如第  1.2  节中所述, 异步执行过程是      Web  应用的重要特性之一, 但目前的         Web  漏洞静态检测工作对于该特性
                 的考虑较少; 部分研究者采用建模思想连接部分污染数据流断边, 处理存储型漏洞的检测问题. 例如, Dahse 等人                            [11]
                 提出了针对    PHP Web  应用的持久数据存储建模方法; Su         等人  [10] 提出的  Splendor 框架采用启发式的令牌模糊匹配
                 方法, 定位数据库与源代码之间的污染数据流, 进而检测                 PHP Web  应用中的存储型     XSS 漏洞; Balzarotti 等人  [12]
                 则关注   Web  应用中跨模块的漏洞检测问题, 核心思想为通过建模数据库操作, 分析模块间的交互关系. 上述研究
                 并未建立异步过程       Web  漏洞检测的普适性方法论, 且使用的建模机制通常依赖于特定语言场景或框架, 迁移成本
                 高, 难以实现简单推广.
                    在混合检测技术领域, 基于动静态混合分析方法的异步漏洞检测研究也取得一定进展. 如                            Olsson  等人  [46] 提出
                 了一种基于数据库的灰盒扫描方法            Spider-Scents, 其思路为在数据库中注入攻击载荷, 并在运行           Web  应用时自动
                 查找未受保护的输出, 检测存储型           XSS  漏洞; Alhuzal 等人  [47] 提出的  Navex  框架则采用基于导航图    (navigation
                 graph) 引导的符号执行技术, 在分析过程中对存在链接跳转关系的跨请求异步控制流实现连接. 这些方法同样面
                 临特定语言环境约束、分析复杂度高等技术瓶颈, 难以有效适配                     Web  静态应用安全测试场景的实际需求.
                    本文所提出的多段数据流分析方法, 其核心创新为基于共享数据概念的多轮次迭代分析思想, 分析能力并不
                 依赖于特定的持久化介质类型, 能够以较小的分析开销, 系统性地实现对跨越多段异步执行过程的污染数据流追
                 踪, 相较于现有工作具备更广泛的适用场景.
                  6.3   多标签污点分析技术
                    在二进制安全领域中, 已有诸多研究者             [13−18] 提出使用多标签污点分析     (multi-tag taint analysis) 技术来增强动
                 态污点分析、符号执行等漏洞检测方法. 其实现形式通常为针对指定内存单元或寄存器设置污染标签位, 在运行
                 时动态记录污染数据来源组合, 进而实现对多源信息流的实时追踪, 或优化符号约束计算. 考虑到                              Web  应用安全
                 更多关注应用层语义、无须精确追踪变量或内存具体取值的分析特性, 直接迁移上述方法将产生较大的分析开
                 销, 无法满足工业级      Web  静态分析场景的实际需求.
                                                                                        [6]
                    在  Web  应用安全领域的静态分析相关工作中, 极少有研究者提及类似概念, 仅                    TChecker 将污染标签用于表
                 征不同漏洞类型, 实现对多种漏洞的并行扫描, 其污染标签设计本质上服务于漏洞分类标识, 而非反映输入源语义
                 特征. 本文提出的多标签数据流分析算法目标场景为针对                   Web  应用的安全漏洞静态检测, 将污染标签概念用于表
                 示  Web  应用程序中不同来源的输入数据, 设计上考虑了              Web  应用的诸多特性, 同时通过跨标签污染传播、基于
                 多标签的敏感操作检测等方式, 进一步提高了分析的灵活性, 同时可在分析性能开销上取得优异表现.
                  7   总 结

                    针对现有    SAST  技术受  Web  应用场景下传统污点分析算法局限性影响的问题, 本文提出一种基于面向                        Web
                 安全漏洞检测的多数据流静态分析方法, 并基于该方法实现了适用于                       Java Web  与  JavaScript Web  应用的漏洞检
                 测原型系统    MultiFlow. 该系统通过多段数据流与多标签数据流两种类型的全新分析范式, 从多个维度扩展传统污
                 点分析算法的漏洞检测能力与适用场景, 并针对               Web  应用独有特性进行多项优化. 实验结果表明, 在包含              60  个真
                 实  Web  应用与第三方组件的数据集上, MultiFlow      具备良好的有效性, 可准确检测数据库存储型漏洞、越权访问、
                 原型链污染等多种复杂类型          Web  安全漏洞; 在基准数据集上的评估结果表明, MultiFlow           的漏洞检测基础性能与
                 分析效率表现均优于两类现有方法, 验证了其实用价值.
                    未来研究工作中, 计划将        MultiFlow  扩展至更多语言与漏洞类型, 进一步提升其泛用性; 此外, 还将关注基于
   217   218   219   220   221   222   223   224   225   226   227