Page 214 - 《软件学报》2026年第7期
P. 214
毛祥煜 等: 面向 Web 应用漏洞检测的多数据流静态分析方法 2899
能力时, 使用相关工作中常见的几类评估指标: 精确率 (Precision)、召回率 (Recall) 和 F1 分数 (F1-score). 其中, 精
确率表示检测出的漏洞中实际为漏洞的比例, 反映了检测结果的精确性; 召回率表示所有真实漏洞中被正确检测
出的比例, 衡量了检测系统的覆盖能力; F1 分数是精确率和召回率的调和平均数, 用于综合评估检测性能, 平衡精
确率和覆盖能力. 基于检测结果分类的 3 类评估指标计算方式如下所示:
TP TP 2×Precision×Recall
Precision = , Recall = , F1-score = (8)
TP+FP TP+FN Precision+Recall
4.2 RQ1: MultiFlow 基础分析性能评估
为了验证 MultiFlow 对基础 Web 安全漏洞的检测能力, 本节将使用基准漏洞数据集开展实验评估, 比较 MultiFlow
和现有方法针对不同类型 Web 漏洞的检测效果. 评估过程中使用如下测试配置.
● 在评估 MultiFlow 时, 为各个漏洞类型独立编写其对应的基础污点分析规则, 其中包含基准漏洞数据集测试
用例涉及的所有污点源、污点汇与净化函数模式; 规则中关闭所有多数据流分析相关配置, 即不包含共享数据存
储/读取模式, 且仅为所有污点源指定单一类型的污染标签.
● 在评估 Coverity 与 CodeQL 时, 分别基于其官方规则库 [29,30] 中对应类型的漏洞规则, 使用默认参数配置运
行分析; 在评估 Tai-e 时, 基于其官方代码库中提供的常见污点分析配置 [31] 构建完整漏洞规则, 并补充基准漏洞数
据集涉及的污点源与污点汇模式, 以保障规则覆盖能力与其他方法一致; 在运行参数上, 使用默认的非上下文敏感
模式. 各方法使用的具体运行命令与参数配置见表 1.
表 1 对比方法运行命令与参数设置
方法名称 运行命令与参数
cov-analyze --dir /path/to/benchmark --all --max-mem 1024 --include-java --fb-max-mem 6144 --android-security -j4
--enable-audit-checkers --webapp-security --enable DC.STRING_BUFFER --enable ENUM_AS_BOOLEAN --enable
Coverity HARDCODED_CREDENTIALS --enable ORM_LOST_UPDATE --enable UNENCRYPTED_SENSITIVE_DATA
--enable FLOATING_POINT_EQUALITY --enable USER_POINTER --enable WEAK_GUARD --enable WEAK_
PASSWORD_HASH --enable XML_INJECTION
CodeQL codeql database analyze /path/to/database ql/java/ql/src/Security/CWE/path/to/rule.ql --format=csv --output=result.csv
java -jar tai-e-all-0.5.1.jar -cp /path/to/benchmark/target/classes -acp/ path/to/benchmark/target/classes -java 8 -ap -a
Tai-e
pta=taint-config:/path/to/rules.yml;only-app:false;dump:false;cs:ci;timelimit:1200000
基准漏洞数据集的测试结果对比如表 2 所示. 在漏洞检测精确率上, 得益于精细化的污染传播建模, MultiFlow
取得了 90.52% 的出色表现, 相较于 Coverity、CodeQL 和 Tai-e 分别提高了 13.11%、12.15% 和 30.18%; 在漏洞
检测召回率上, 除 Tai-e 外, 各工具表现较为接近, MultiFlow 略优于 Coverity 和 CodeQL; 考虑 F1 分数时,
MultiFlow 相较于其他工具同样表现最佳. 需说明的是, Tai-e 作为一款学术研究领域的程序分析框架, 在污点分析
规则库成熟度上与 Coverity、CodeQL 等工具差距较大, 缺少对真实应用场景中常见污点传播模式的覆盖能力, 影
响了其整体表现. 综合而言, 上述结果表明, MultiFlow 作为一种 Web 安全漏洞检测方法, 对于传统污点分析算法
具备较强的兼容能力, 在检测准召率上表现优秀, 具备较强的实用性.
表 2 基准漏洞数据集测试结果对比
Coverity CodeQL Tai-e MultiFlow
漏洞类型 CWE编号
TP FP FN TP FP FN TP FP FN TP FP FN
path traversal CWE-22 133 75 0 133 66 0 109 92 24 133 22 0
command injection CWE-78 115 67 11 83 29 43 98 80 28 126 20 0
XSS CWE-79 246 68 0 246 90 0 194 87 52 246 48 0
SQL injection CWE-89 272 128 0 272 87 0 193 121 79 272 36 0
LDAP injection CWE-90 27 15 0 27 13 0 19 22 8 27 4 0
weak cryptography CWE-327 130 0 0 130 27 0 - - - 130 0 0
weak hashing CWE-328 89 0 40 - - - - - - 89 0 40
weak randomness CWE-339 218 0 0 218 0 0 - - - 218 0 0

