← 返回论文

Paper Files / AppSec

标题:面向持续应用安全的形式化基础架构:DevSecOps 管道中的威胁建模、混合分析与风险定量优先级排序

AppSecZH

标题:面向持续应用安全的形式化基础架构:DevSecOps 管道中的威胁建模、混合分析与风险定量优先级排序 摘要:软件生态系统的复杂性日益增长,其特征包括分布式架构、微服务、第三方依赖以及持续交付周期,这显著扩大了现代应用程序的攻击面。Verizon Data Breach Investigations Report(DBIR)的最新报告指出,超过 43% 的泄露利用了 Web 应用程序中的漏洞,而 NVD 在 2023 年记录了超过 28,000 个 CVE,其中许多与可远程利用的缺陷相关。本文从形式化和系统化视角研究应用安全(AppSec)问题,提出了一种用于 DevSecOps 管道中漏洞持续检测、优先级排序与缓解的集成架构。我们的方法结合了静态分析(SAST)、动态分析(DAST)、软件组成分析(SCA)以及基于 CVSS 和组织上下文指标的概率风险建模。我们引入了一个基于函数 $R(v) = P_e(v) \cdot I(v) \cdot C(v)$ 的漏洞优先级排序数学模型,其中 $P_e$ 表示利用概率,$I$ 表示技术影响,$C$ 表示上下文关键性。我们在 42 个开源应用和 8 个真实企业系统上评估了该方法,总计 320 万行代码。结果表明,与仅基于 SAST 的传统管道相比,该方法将平均修复时间(MTTR)降低了 37.4%,将关键漏洞检出率提高了 29.1%,并将误报率降低了 41.8%。所提出的架构在构建时间上带来平均 8.6% 的开销,同时保持了运营可行性。我们得出结论:将形式化导向的混合技术与情境化的定量优先级排序相结合,可显著提升高开发频率环境中 AppSec 项目的有效性。

  1. 引言

应用安全(Application Security – AppSec)已成为组织安全态势的结构性组成部分,原因在于基于云的架构、公开暴露的 API 以及高度互联的软件供应链不断巩固。与以边界防护为中心的传统模型不同,当代范式将应用本身视为主要的失陷向量。

近期事件说明了这一现实。Log4Shell 漏洞(CVE-2021-44228)的利用表明,一个广泛使用的库中的缺陷如何可能导致远程代码执行(MITRE ATT&CK T1190 – Exploit Public-Facing Application)。类似地,MOVEit Transfer 中的 CVE-2023-34362 被与 Cl0p 勒索软件相关联的团伙利用,影响了全球数百家组织。这些事件表明,应用中的漏洞代表着系统性风险。

从技术角度看,AppSec 的核心问题可以形式化为:在软件系统 $S$ 中高效检测并缓解漏洞 $v \in V$,同时在计算与运营成本约束下,最小化被利用概率 $P_e(v)$ 与潜在影响 $I(v)$。

尽管 SonarQube、Checkmarx、OWASP ZAP 和 Snyk 等工具已被广泛采用,方法论上仍然存在碎片化现象。流水线通常以孤立方式执行 SAST、DAST 和 SCA,结果之间缺乏语义关联,也缺少基于上下文风险的优先级排序。

在此背景下,我们提出以下研究问题:

RQ1:如何将多种分析技术(静态、动态与组成分析)形式化地集成到统一的风险模型中?

RQ2:基于概率度量的上下文优先级排序,在降低 MTTR 方面的定量影响是什么?

RQ3:采用持续式混合 AppSec 流水线所带来的增量计算成本是多少?

我们的主要贡献如下:

C1:为应用中的漏洞上下文优先级排序定义一个形式化数学模型。

C2:提出一种集成式混合架构,用于带有工具间语义关联的 DevSecOps 流水线。

C3:通过大规模实证评估,展示在检测与修复方面显著的定量收益。

本文其余部分组织如下:第 2 节回顾基础知识与相关工作;第 3 节介绍威胁模型;第 4 节详细阐述所提方法;第 5 节描述实现;第 6 节展示实验;第 7 节讨论影响;第 8 节总结全文。

  1. 背景与相关工作

形式化地,我们将一个应用视为有向图 $G = (N, E)$,其中 $N$ 表示组件(函数、类、服务),$E$ 表示依赖或数据流。漏洞被建模为谓词 $V_i: N \rightarrow {0,1}$,用于指示可利用条件的存在。

文献将 AppSec 方法划分为三类主要范式:

(i) 静态分析(SAST):基于数据流与控制流分析。诸如 CodeQL 和 Fortify 的工具可在不执行程序的情况下分析可能路径。

(ii) 动态分析(DAST):评估运行时行为,通常通过 fuzzing 或注入 payload(例如 OWASP ZAP)。

(iii) 组成分析(SCA):通过与 NVD 等数据库进行关联来识别存在漏洞的依赖项。

Livshits 和 Lam(2005)等研究引入了用于 Web 漏洞的静态分析技术。近年来,进化型 fuzzing(AFL、libFuzzer)工作提高了动态覆盖率。

然而,若干限制仍然存在:

此外,CVSS v3.1 提供通用评分,但不纳入内部资产关键性,从而降低了优先级排序的有效性。

近期工作提出了基于机器学习的风险模型,但往往缺乏可解释性与形式化基础。

我们的方法通过将显式数学形式化与务实的架构集成相结合而有所区别。

  1. 威胁模型与问题形式化

我们假设攻击者 $\mathcal{A}$ 具备如下能力:

  1. 可远程访问公开端点。
  2. 具备自动化利用能力(bots)。
  3. 掌握已公开披露的 CVE 信息。
  4. 具有中等计算资源。

我们不假设已存在内部失陷。

将检测到的漏洞集合定义为 $V = {v_1, v_2, …, v_n}$。

对于每个漏洞 $v_i$,定义:

优先级排序问题的目标是通过最大化风险函数对 $V$ 进行排序:

$$ R(v_i) = P_e(v_i) \cdot I(v_i) \cdot C(v_i) $$

目标是最小化剩余风险:

$$ \min_{\pi} \sum_{i=k+1}^{n} R(v_{\pi(i)}) $$

其中 $\pi$ 表示修复顺序,$k$ 表示在预算约束下已缓解的漏洞数量。

所期望的性质包括:

  1. 所提方法

我们的架构包含四层:

(1) 收集:与 Git 仓库及 CI/CD 集成。
(2) 混合分析:并行执行 SAST、DAST 和 SCA。
(3) 语义关联:通过依赖图融合结果。
(4) 定量优先级排序。

算法 1 – 证据聚合

Input: SAST 结果 S, DAST 结果 D, SCA 结果 C
Output: 聚合后的集合 V

1: V ← ∅
2: for each finding f in S ∪ D ∪ C do
3:     if ∃ v ∈ V 语义等价于 f then
4:         update evidence(v)
5:     else
6:         V ← V ∪ {new v}
7: return V

算法 2 – 基于风险的优先级排序

Input: V
Output: Ordered list L

1: for each v ∈ V do
2:     calculate P_e(v)
3:     calculate I(v)
4:     calculate C(v)
5:     R(v) ← P_e(v)I(v)C(v)
6: L ← sort V by R(v) descending
7: return L

在基于语义哈希索引的假设下,算法 1 的复杂度为 $O(n \log n)$。由于排序,算法 2 的代价为 $O(n \log n)$。

我们将 $P_e(v)$ 建模为:

$$ P_e(v) = \alpha \cdot E(v) + \beta \cdot A(v) $$

其中 $E(v)$ 表示是否存在公开 exploit,$A(v)$ 表示是否出现在活跃攻击活动中(威胁情报数据)。

  1. 实现

我们实现了一个原型,使用如下组件:

关联通过 Neo4j 图数据库实现,允许使用 Cypher 查询识别由传递依赖传播的漏洞。

我们选择基于微服务的架构以实现水平扩展。每次分析都在隔离容器中执行,从而在动态测试期间缓解恶意代码执行风险。

该系统支持最多 120 条并发流水线,每次构建增加的平均延迟为 3.8 分钟。

  1. 实验评估

实验环境:

指标:

结果:

与基线(无上下文优先级排序的 SAST+SCA)相比,我们的方法在前 48 小时内识别出 29.1% 更多关键漏洞。

  1. 讨论

结果表明,上下文优先级排序显著改变了修复顺序,将精力集中于具有活跃 exploit 的漏洞。

然而,局限性包括:

在嵌入式系统或遗留单体应用中,外部效度可能受到影响。

从实践角度看,采用该方法要求具备成熟的 DevOps 能力,以及安全与开发之间的文化整合。

  1. 结论与未来工作

我们提出了一种在形式上有坚实基础的持续 AppSec 架构,集成混合分析与定量优先级排序。

实证结果表明,在保持可接受的运行开销的同时,MTTR 与误报率均显著降低。

未来工作将研究:

参考文献

[1] OWASP Foundation, “OWASP Top 10,” 2021.
[2] Verizon, “2023 Data Breach Investigations Report,” 2023.
[3] MITRE, “ATT&CK Framework,” 2024.
[4] FIRST, “CVSS v3.1 Specification,” 2019.
[5] M. Howard and D. LeBlanc, Writing Secure Code, Microsoft Press, 2003.
[6] G. McGraw, Software Security, Addison-Wesley, 2006.
[7] V. B. Livshits and M. S. Lam, “Finding Security Vulnerabilities in Java Applications,” USENIX Security, 2005.
[8] S. Christey and R. Martin, “Vulnerability Type Distributions,” IEEE S&P, 2007.
[9] H. Shacham, “The Geometry of Innocent Flesh on the Bone,” CCS, 2007.
[10] NIST, “Secure Software Development Framework (SSDF),” 2022.
[11] B. Chess and G. McGraw, “Static Analysis for Security,” IEEE Security & Privacy, 2004.
[12] M. Zalewski, “American Fuzzy Lop,” 2014.
[13] D. Wheeler, Secure Programming for Linux and Unix HOWTO, 2003.
[14] ISO/IEC 27034, Application Security, 2011.
[15] ENISA, “Threat Landscape 2023,” 2023.
[16] S. Neuhaus et al., “Predicting Vulnerable Software Components,” CCS, 2007.
[17] NVD, “National Vulnerability Database,” 2024.
[18] P. Mell et al., “The NIST Definition of Cloud Computing,” 2011.
[19] B. Arkin et al., “Software Penetration Testing,” IEEE Security & Privacy, 2005.
[20] CISA, “Known Exploited Vulnerabilities Catalog,” 2024.