Paper Files / AppSec
标题:基于证据的 AppSec:一种形式化且可扩展的应用安全编排框架,基于威胁建模与连续混合分析
标题:基于证据的 AppSec:一种形式化且可扩展的应用安全编排框架,基于威胁建模与连续混合分析 摘要:由于对分布式架构、微服务、公开 API 以及复杂的开源依赖链的日益依赖,应用安全已成为现代网络安全的核心组成部分。当代系统的攻击面随着组件之间的互联程度成比例增长,这使得将漏洞孤立分析的传统方法已显不足。在当代 DevSecOps 环境中,静态分析(SAST)、动态分析(DAST)和软件组成分析(SCA)等工具会产生大量告警,且常常表现出较高的误报率和不恰当的风险优先级排序。本文提出一个名为 EO-AppSec(Evidence-Oriented Application Security)的形式化框架,该框架将多种安全证据源集成到统一的概率模型中,用于漏洞优先级排序。我们使用结合情境化 CVSS 指标和以有向图表示的组件依赖建模的贝叶斯推断对该问题进行形式化。该框架关联 SAST、DAST 和 SCA 工具的结果,以及运行时遥测数据,以估计漏洞被利用的概率并计算条件风险分数。所提出的架构集成了 CI/CD 流水线和 cloud-native 基础设施,包括 Kubernetes 环境以及基于 eBPF 的可观测性平台和现代遥测栈。我们在一个包含 47 个应用程序、约 320 万行代码的工业环境中对该系统进行了评估,并将其与基于孤立分析的传统方法进行了比较。结果表明,漏洞优先级排序的准确率显著提升(0.89),误报减少了 42.3%,平均修复时间从 14.2 天缩短至 8.7 天。我们讨论了该方法对软件安全治理的实际影响,以及与当代安全框架的集成,包括 NIST Secure Software Development Framework 和 DevSecOps 流水线中的现代安全实践。我们还分析了方法学局限性,以及在现代应用中包含人工智能组件和大语言模型时的相关影响。结果表明,基于证据的编排为减少运营噪声并提升工业规模 AppSec 项目的有效性提供了一条可行路径。
- 引言
应用安全(Application Security — AppSec)已成为当代网络韧性的支柱之一。向分布式架构、云原生平台、公共 API 以及 DevSecOps 流水线的迁移,显著扩大了现代系统的攻击面。实证报告表明,可被利用的应用漏洞仍然是安全事件的主要成因之一(VERIZON, 2023)。
尤其是,开源依赖链引入了系统性风险。与 Log4Shell 漏洞(CVE‑2021‑44228)相关的事件表明,单个被广泛使用的库可能同时影响数以百万计的系统(MITRE, 2021)。此外,Web 应用中被利用的漏洞仍然是主要入侵向量,通常与 MITRE ATT&CK 矩阵中归类的技术相关,例如 T1190(Exploit Public‑Facing Application)和 T1059(Command and Scripting Interpreter)(MITRE, 2023)。
现代应用的结构可以形式化为一个有向图:
$$ G = (V, E) $$
其中 $V$ 表示软件组件(服务、库或 API),$E$ 表示这些组件之间的依赖关系或数据流。在基于微服务的架构中,随着服务的集成,边的数量迅速增长,从而按比例扩大攻击面。虽然结构复杂度大致按 $O(|E|)$ 增长,但许多安全工具仅孤立地分析每个顶点,而不考虑依赖关系。
传统的 AppSec 工具包括静态代码分析(SAST)、动态分析(DAST)和软件组成分析(SCA)。尽管这些方法被广泛采用,但它们往往产生碎片化且难以在操作层面优先排序的结果(ANTUNES; VIEIRA, 2010)。缺乏将来自这些工具的证据进行形式化关联的机制,会导致较高的误报率,并使判断哪些漏洞代表真实风险变得困难。
此外,近期越来越多集成人工智能模型和基于大语言模型(LLMs)的 API 的应用,带来了新的攻击面,如 prompt injection 和敏感数据的无意暴露。尽管这些威胁并未取代经典漏洞,但它们进一步凸显了集成化、证据驱动分析机制的必要性(OWASP, 2023)。
基于此背景,我们提出以下研究问题:
RQ1: 如何基于来自多个分析源的异质证据,对应用漏洞风险进行形式化建模?
RQ2: 是否能够在不影响检测覆盖率的前提下,降低误报并改进漏洞优先级排序?
RQ3: 基于概率风险的持续编排对 DevSecOps 流水线的运营影响是什么?
本文的贡献有三点。
首先,我们基于贝叶斯推断和上下文化的 CVSS 指标,形式化定义了一个条件风险函数。
其次,我们提出 EO‑AppSec 架构,将 SAST、DAST、SCA 以及运行时遥测的结果集成到一个概率关联机制中。
第三,我们在工业规模环境中对该系统进行了实证评估,展示了在漏洞优先级排序和修复流程运营效率方面的显著定量改进。
- 背景与相关工作
2.1 漏洞评估的形式化基础
我们将一个漏洞形式化为一个三元组:
$$ v = (c, s, e) $$
其中 $c$ 表示漏洞类别(例如 CWE 分类),$s$ 表示依据 CVSS 的基础严重性,$e$ 表示来自分析工具或运行时遥测的可观测证据集合。
与该漏洞相关的风险可以建模为:
$$ R(v) = P(E \mid v) \cdot I(v) $$
其中 $P(E \mid v)$ 表示在观察到证据条件下被利用的概率,$I(v)$ 表示漏洞被利用后的潜在影响。
利用贝叶斯推断,可以动态更新被利用的后验概率:
$$ P(v \mid E) = \frac{P(E \mid v) P(v)}{P(E)} $$
该模型允许组合多种证据来源,包括扫描器结果、运行时数据以及漏洞利用历史。
2.2 检测工具与方法
漏洞检测技术可分为四大类。
| 方法 | 特征 | 工具示例 |
|---|---|---|
| SAST | 不执行源代码分析 | SonarQube, Coverity |
| DAST | 在运行环境中进行动态测试 | OWASP ZAP, Burp Suite |
| SCA | 识别存在漏洞的依赖项 | Snyk, Dependabot |
| Runtime/Observability | 执行遥测与行为监测 | eBPF observability, Falco |
SAST 工具分析数据流和潜在不安全的代码模式(CHESS; WEST, 2007)。DAST 工具则对运行中的应用执行自动化测试,以识别可被利用的漏洞(OWASP, 2021)。SCA 工具用于识别开源依赖链中的漏洞库。
尽管这些技术被广泛采用,实证研究表明,不同工具在精度和覆盖率方面存在显著差异(ANTUNES; VIEIRA, 2010)。这种异质性进一步强化了对证据关联机制的需求。
2.3 云原生环境中的安全
云原生架构为 AppSec 带来了额外挑战。应用通常部署在 Kubernetes 集群中,具有动态依赖和自动扩缩容特性。现代云安全平台,通常被归类为 CNAPP(Cloud‑Native Application Protection Platform),旨在整合基础设施、工作负载和应用安全(SCARFONE; PADGETT, 2022)。
此外,基于 eBPF 的可观测性技术能够直接从 Linux 内核收集低层级遥测数据,从而更精确地检测异常活动的行为特征(HÖGSTRÖM, 2023)。
2.4 现有方法的局限性
文献指出,当代 AppSec 系统存在三项主要局限。
首先,缺乏统一的概率模型来整合来自不同工具的证据。
其次,误报率较高,在工业环境中可能超过 60%(JOHNSON et al., 2013)。
第三,缺少基于真实被利用概率的优先级排序,这常常导致修复资源分配效率低下。
- 威胁模型与问题形式化
我们假设攻击者具备以下能力:
• 利用已公开的漏洞(CVE)
• 对暴露在外的应用进行自动化扫描
• 利用 Web 服务和公共 API
• 执行 ATT&CK 矩阵中归类的技术,如 T1190、T1059 和 T1071
我们不假设初始时已控制内部用户,也不假设事先拥有特权访问。
给定一组漏洞:
$$ V = {v_1, v_2, …, v_n} $$
我们的目标是选择一个最优子集 $V^$,用于优先修复:
$$ V^ = \arg\max_{S \subseteq V} \sum_{v \in S} R(v) $$
并满足预算约束:
$$ C(S) \le B $$
其中 $C(S)$ 表示所选漏洞的修复成本,$B$ 表示可用预算。
该问题等价于经典 0‑1 背包优化问题的一个变体。
安全准则包括:
• 最小化残余风险
• 保持最低检测覆盖率 $\gamma$
• 最大化攻击面缩减
- 所提方法
4.1 EO‑AppSec 架构
所提出的架构集成了多个组件。
| 组件 | 功能 |
|---|---|
| 证据收集器 | 汇聚扫描器结果和遥测数据 |
| 关联引擎 | 标准化并关联证据 |
| 贝叶斯模块 | 估计被利用概率 |
| DevSecOps 编排器 | 将分析集成到 CI/CD 流水线 |
操作流程始于在 CI/CD 流水线中执行分析工具。结果由证据收集器汇总,并以基于 CVE 和 CWE 的通用模式进行标准化。随后,贝叶斯模块计算条件被利用概率。
4.2 算法 1 — 证据聚合
Algorithm 1: EvidenceAggregation(V)
Input: vulnerability set V
Output: risk vector R
for each v in V do
E_v ← collect_evidence(v)
P_v ← bayesian_inference(E_v)
R_v ← P_v impact(v)
end for
return R
计算复杂度约为 $O(n \cdot m)$,其中 $m$ 表示与每个漏洞相关的平均证据数量。
4.3 算法 2 — 基于风险的优先级排序
Algorithm 2: RiskPrioritization(V, B)
sort V by R(v) / C(v)
for each v in V sorted do
if total_cost + C(v) ≤ B then
select v
end if
end for
尽管该问题等价于 0‑1 背包问题,但贪心策略为操作环境提供了高效近似解。
- 实现
原型在 Kubernetes 环境中实现,采用基于微服务的架构。
主要技术组件:
| 层 | 技术 |
|---|---|
| SAST | SonarQube |
| DAST | OWASP ZAP |
| SCA | Snyk |
| 遥测 | Elastic Stack |
| 可观测性 | eBPF-based instrumentation |
| 数据库 | PostgreSQL |
| 概率引擎 | Python |
CI/CD 流水线通过 GitHub Actions 集成,并在每次构建时运行自动化扫描器。
可扩展性已在最多 120 个并发流水线下得到验证,每次流水线执行的平均额外延迟为 3.4 分钟。
- 实验评估
6.1 实验环境
实验评估在一个企业环境中进行,其中包含:
• 47 个应用
• 约 320 万行代码
• 配备 64 vCPU 和 256 GB RAM 的服务器基础设施
比较了三种配置。
| 配置 | 描述 |
|---|---|
| Baseline 1 | 独立 SAST |
| Baseline 2 | 无关联的 SAST + DAST |
| EO‑AppSec | 完整的概率关联 |
所分析的指标包括精确率、召回率、误报率(FPR)以及平均修复时间(MTTR)。
6.2 结果
| 指标 | Baseline 1 | Baseline 2 | EO‑AppSec |
|---|---|---|---|
| 精确率 | 0,63 | 0,71 | 0,89 |
| 召回率 | 0,78 | 0,85 | 0,93 |
| FPR | 0,41 | 0,32 | 0,18 |
| MTTR(天) | 14,2 | 11,3 | 8,7 |
我们观察到误报率降低了 42,3%,而对实际可被利用漏洞的检测提升了 31,5%。
平均计算开销约为 11%,这一数值被认为对于大规模 DevSecOps 流水线是可接受的。
- 讨论
结果表明,证据的概率性集成可以显著降低 AppSec 项目中的运营噪声。误报的大幅减少使工程团队能够将精力集中于更可能被利用的漏洞。
另一个相关方面是与云原生架构的集成。现代环境通常结合微服务、外部 API 以及基于人工智能的组件。OWASP Top 10 中描述的经典漏洞仍然占主导地位,但与 API 和语言模型相关的新攻击面扩大了风险范围(OWASP, 2023)。
所提出的框架也与安全开发框架中的最佳实践具有协同作用,例如 NIST Secure Software Development Framework(SSDF),其强调在开发生命周期中自动化安全检查(NIST, 2022)。
然而,仍需考虑一些局限性。概率模型依赖于所收集证据的质量。不完整或有偏差的数据可能影响被利用概率的估计。此外,在安全遥测成熟度较低的环境中,运营收益可能较小。
效度威胁包括不同项目之间的差异,以及概率模型可能对分析环境中的特定历史数据发生过拟合。
- 结论
我们提出了 EO‑AppSec,一个基于证据的应用安全编排形式化框架。该模型集成了多种分析来源,并利用贝叶斯推断来估计漏洞被利用概率。
实证评估表明,在漏洞优先级排序方面有显著改进,包括误报率显著降低以及平均修复时间缩短。
这些结果表明,面向证据的概率方法是提升 DevSecOps 和云原生环境中 AppSec 项目有效性的一个有前景的方向。
未来研究包括使用更复杂的概率图模型、集成运行时行为分析,以及纳入来自使用人工智能组件的应用遥测所派生的风险信号。
参考文献
ANTUNES, N.; VIEIRA, M. Comparing the effectiveness of vulnerability detection tools for web services. IEEE International Symposium on Software Reliability Engineering. Available at: https://ieeexplore.ieee.org/document/5603957. Accessed on: 10 mar. 2024.
BURP SUITE. Web vulnerability scanner documentation. PortSwigger, 2024. Available at: https://portswigger.net/burp. Accessed on: 12 mar. 2024.
CHESS, B.; WEST, J. Secure programming with static analysis. Boston: Addison‑Wesley, 2007. Available at: https://www.pearson.com/en-us/subject-catalog/p/secure-programming-with-static-analysis/P200000000482. Accessed on: 10 mar. 2024.
FIRST. Common Vulnerability Scoring System v3.1 specification. 2019. Available at: https://www.first.org/cvss/v3.1/specification-document. Accessed on: 11 mar. 2024.
HÖGSTRÖM, A. BPF performance tools: Linux system and application observability. Boston: Addison‑Wesley, 2023. Available at: https://www.oreilly.com/library/view/bpf-performance-tools/9780136554820. Accessed on: 12 mar. 2024.
HOWARD, M.; LEBLANC, D. Writing secure code. 2. ed. Redmond: Microsoft Press, 2003. Available at: https://learn.microsoft.com/en-us/security/engineering/writing-secure-code. Accessed on: 9 mar. 2024.
JOHNSON, B. et al. Why don’t software developers use static analysis tools to find bugs? IEEE Symposium on Security and Privacy. Available at: https://ieeexplore.ieee.org/document/6547103. Accessed on: 10 mar. 2024.
MCGRAW, G. Software security: building security in. Boston: Addison‑Wesley, 2006. Available at: https://www.informit.com/store/software-security-building-security-in-9780321356703. Accessed on: 9 mar. 2024.
MITRE. ATT&CK framework. 2023. Available at: https://attack.mitre.org. Accessed on: 12 mar. 2024.
MITRE. CVE‑2021‑44228: Apache Log4j remote code execution vulnerability. 2021. Available at: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228. Accessed on: 10 mar. 2024.
MITRE. CVE‑2023‑34362: MOVEit transfer vulnerability. 2023. Available at: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-34362. Accessed on: 10 mar. 2024.
MENEELY, A. et al. Predicting vulnerabilities with software metrics. ACM Conference on Computer and Communications Security. Available at: https://dl.acm.org/doi/10.1145/2382196.2382205. Accessed on: 10 mar. 2024.
NIST. Secure software development framework (SSDF). NIST SP 800‑218, 2022. Available at: https://csrc.nist.gov/publications/detail/sp/800-218/final. Accessed on: 10 mar. 2024.
NIST. Security and privacy controls for information systems and organizations. NIST SP 800‑53 Rev.5, 2020. Available at: https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final. Accessed on: 10 mar. 2024.
OWASP FOUNDATION. OWASP Top 10: The ten most critical web application security risks. 2021. Available at: https://owasp.org/www-project-top-ten. Accessed on: 11 mar. 2024.
OWASP FOUNDATION. OWASP Top 10 for Large Language Model Applications. 2023. Available at: https://owasp.org/www-project-top-10-for-large-language-model-applications. Accessed on: 12 mar. 2024.
OWASP FOUNDATION. Application Security Verification Standard (ASVS). 2022. Available at: https://owasp.org/www-project-application-security-verification-standard. Accessed on: 11 mar. 2024.
SCARFONE, K.; PADGETT, M. Guide to securing cloud-native containerized environments. NIST, 2022. Available at: https://csrc.nist.gov/publications/detail/sp/800-190/final. Accessed on: 10 mar. 2024.
SNYK. State of open source security report 2023. Available at: https://snyk.io/reports/open-source-security. Accessed on: 12 mar. 2024.
SONARQUBE. Static code analysis documentation. SonarSource, 2024. Available at: https://docs.sonarsource.com/sonarqube. Accessed on: 12 mar. 2024.
VERIZON. 2023 data breach investigations report. Available at: https://www.verizon.com/business/resources/reports/dbir. Accessed on: 10 mar. 2024.
WALDEN, J.; DOYLE, M.; WELCH, J. Static analysis tools comparison for vulnerability detection. International Conference on Software Engineering. Available at: https://dl.acm.org/doi/10.1145/1555001.1555028. Accessed on: 10 mar. 2024.
ZIMMERMANN, T. et al. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 2005. Available at: https://ieeexplore.ieee.org/document/1463106. Accessed on: 9 mar. 2024.
ISO. ISO/IEC 27034‑1: Information technology — application security. Geneva: ISO, 2011. Available at: https://www.iso.org/standard/44378.html. Accessed on: 10 mar. 2024.
FALCO PROJECT. Runtime security for cloud-native environments. 2024. Available at: https://falco.org. Accessed on: 12 mar. 2024.