← 返回论文

Paper Files / AppSec

标题:一种基于在 DevSecOps 生命周期中集成 SAST、DAST、SCA 和 Threat Intelligence 的定量与操作化 Application Security 架构

AppSecZH

标题:一种基于在 DevSecOps 生命周期中集成 SAST、DAST、SCA 和 Threat Intelligence 的定量与操作化 Application Security 架构 摘要:应用安全(Application Security – AppSec)已成为现代数字环境中风险管理的核心组成部分。基于微服务、暴露 API、容器以及持续交付流水线的架构日益普及,显著扩大了组织的攻击面。尽管各种安全分析工具已被广泛采用,许多组织仍然难以根据真实的利用风险来优先排序漏洞。静态分析(SAST)、动态分析(DAST)以及软件组成分析(SCA)工具往往会产生大量结果,其中许多具有较低的运行影响或较高的误报率。本文提出一种面向风险的 AppSec 项目的定量架构,通过将 SAST、DAST 和 SCA 的结果与外部威胁情报源进行整合。我们提出了一个形式化的优先级排序模型,该模型基于一个风险函数,结合 CVSS 评分、公开 exploit 证据、应用暴露上下文以及与 MITRE ATT&CK 框架技术的映射。所提出的架构集成到 DevSecOps 流水线中,并通过 DefectDojo 等管理平台使用漏洞关联与归一化机制。我们在由 42 个真实应用组成的集合上对该方法进行了实证评估,这些应用使用 Java、Python 和 Node.js 开发。结果表明,重复漏洞显著减少,误报率降低,平均修复时间(MTTR)显著改善。观察到 MTTR 降低了 63%,在扫描器关联之后,结果数量减少了 44.7%。我们还表明,纳入威胁情报——包括公开 exploit 的存在以及对对手活动的观察——能够改善修复优先级排序,并将资源导向实际可利用的漏洞。结果表明,当与 DevSecOps 生命周期集成时,风险驱动的 AppSec 项目能够在降低攻击面和提高安全团队运营效率方面带来可衡量的收益。

  1. 引言

应用安全(Application Security – AppSec)已巩固为现代企业环境中的主要风险向量之一。加速的数字化转型,结合基于微服务、容器以及暴露 API 的架构采用,显著扩大了组织的攻击面。在这一背景下,Web 应用和分布式服务已成为合法用户与潜在对手之间的主要交互点。

实证报告表明了这一向量的中心地位。Verizon Data Breach Investigations Report 显示,Web 应用中的漏洞仍然是安全事件最常见的成因之一(VERIZON, 2023)。此外,利用暴露于互联网的应用中已知漏洞的攻击,持续是入侵的主导技术之一(MITRE, 2023)。

近期事件进一步强化了软件依赖链的关键性。以 Log4Shell 漏洞(CVE‑2021‑44228)为例,它表明被广泛使用的库如何能够在大规模范围内引入系统性风险(NIST, 2023)。对该缺陷的利用可通过 JNDI 注入实现远程代码执行,影响了经济不同领域中的数百万系统。

尽管自动化安全分析工具已被广泛采用,许多组织在漏洞的有效优先级排序方面仍然面临困难。静态分析工具常常生成大量结果且误报率较高,而仅依赖动态分析的方法则可能忽略源码中的潜伏漏洞。

基于此,我们研究如下问题:如何构建一个 AppSec 程序,使其有效降低真实可利用风险,而不仅仅是降低已识别漏洞的名义数量。

我们提出以下研究问题:

RQ1: 如何关联 SAST、DAST 和 SCA 的结果,以在保持检测覆盖率的同时减少误报?
RQ2: 如何在考虑主动威胁情报的情况下,对漏洞的可利用风险进行定量建模?
RQ3: 该集成对平均修复时间(MTTR)降低的运营影响是什么?

本文的主要贡献如下:

• 提出一个用于漏洞优先级排序的形式化风险函数。
• 面向 DevSecOps 场景的、基于风险的集成式 AppSec 架构。
• 基于真实生产应用的实验评估。

  1. 背景与相关工作

静态应用安全测试(Static Application Security Testing, SAST)工具在不执行程序的情况下分析源代码,利用数据流和控制流分析识别漏洞模式(SCANDARIATO et al., 2013)。广泛使用的工具包括 SonarQube、Semgrep 和 Checkmarx。

动态应用安全测试(Dynamic Application Security Testing, DAST)评估运行中的应用,通过模拟对抗性交互来识别运行时可利用漏洞。OWASP ZAP 和 Burp Suite 等工具在这一场景中被广泛使用(OWASP, 2023)。

软件组成分析(Software Composition Analysis, SCA)侧重于识别开源依赖中的漏洞。这些工具将库版本与漏洞数据库相关联,例如 National Vulnerability Database(NVD)(NIST, 2023)。示例包括 Trivy、Snyk 和 OWASP Dependency-Check。

实证研究表明,静态分析工具在真实环境中存在显著局限。Johnson et al. (2013) 证明,开发者经常因工具精度较低而忽略告警。进一步研究表明,已发布漏洞中只有一小部分会在真实攻击中被实际利用(SHARMA; SHARMA, 2020)。

OWASP SAMM 和 NIST Secure Software Development Framework(SSDF)等成熟度框架为 AppSec 项目提供了结构化指导,但并未定义漏洞优先级排序的定量形式化方法(OWASP, 2023; NIST, 2022)。

近年来,将威胁情报与漏洞管理相结合已成为推荐实践。诸如 Exploit‑DB、CISA Known Exploited Vulnerabilities(KEV)以及 threat intelligence feeds 等数据源,可用于识别具有活跃利用行为的漏洞(CISA, 2024)。

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

我们考虑一个具备以下操作能力的对手:

• 对暴露在互联网上的服务进行自动化扫描。
• 利用已知漏洞及可公开获取的 exploit 进行攻击。
• 将多个漏洞组合成攻击链。

在 MITRE ATT&CK 的语境下,这些行为对应于 Exploit Public‑Facing Application(T1190)和 Active Scanning(T1595)等技术(MITRE, 2023)。

我们将检测到的漏洞集合定义为:

$V = {v_1, v_2, …, v_n}$

对于每个漏洞 $v$,我们考虑以下属性:

• $C(v)$ — 归一化到区间 $[0,1]$ 的 CVSS 分值
• $E(v)$ — 是否存在公开 exploit 的指示器
• $X(v)$ — 应用暴露因子
• $T(v)$ — 与 MITRE ATT&CK 技术相关的关键性

风险函数定义为:

$$ R(v) = \alpha C(v) + \beta E(v) + \gamma X(v) + \delta T(v) $$

并满足约束:

$$ \alpha + \beta + \gamma + \delta = 1 $$

优先级排序问题在于对集合 $V$ 进行排序,以在修复后最大化聚合风险的降低:

$$ \max \sum_{v \in V_{remediadas}} R(v) $$

该模型允许纳入除传统仅基于 CVSS 的严重性之外的上下文信息。

  1. 所提出的方法

所提出的架构由五个与 DevSecOps 流水线集成的操作层组成:

层 功能
摄取 收集 SAST、DAST 和 SCA 的结果
归一化 在中央平台上标准化漏洞
丰富化 与威胁情报 feeds 集成
优先级排序 计算定量风险
编排 通过 CI/CD 流水线自动化修复

DefectDojo 平台被用作结果聚合与去重机制。

优先级排序算法定义如下:

Algorithm RiskScore(V)

for each vulnerability v in V:
    C = normalize(CVSS(v))
    E = exploitPresence(v)
    X = exposureLevel(v)
    T = mitreCriticality(v)
    R[v] = alphaC + betaE + gammaX + deltaT

return sortDescending(R)

由于排序步骤,该算法的计算复杂度为 $O(n \log n)$。

我们将扫描器直接集成到 CI/CD 流水线中。Semgrep 的一个执行示例如下:

semgrep --config auto --json --output semgrep.json

使用 OWASP ZAP 的动态分析可通过自动化模式执行:

zap-baseline.py -t https://app.test -J zap-report.json
  1. 实现

该架构部署在一个 Kubernetes 1.28 集群上,该集群由六个节点组成,每个节点配备 32 vCPUs 和 128 GB 内存。

所使用的工具集如下所示:

类别 工具
SAST Semgrep 1.45, SonarQube 10
DAST OWASP ZAP 2.14
SCA Trivy 0.48
编排 GitLab CI
管理 DefectDojo 2.25

下方给出了一个用于识别 Python 中不安全反序列化的 Semgrep 自定义规则示例:

rules:
- id: insecure-deserialization
  pattern: pickle.loads(...)
  message: 可能存在不安全反序列化
  languages: [python]
  severity: ERROR
  1. 实验评估

实验在一组 42 个企业应用上进行。

语言 应用数量
Java 18
Python 14
Node.js 10

最初,通过组合三种扫描器共识别出 12,842 个漏洞。

在去重并进行工具间关联后,总数降至 7,103 个唯一发现,减少了 44.7%。

误报率通过对 600 个漏洞样本的人工分析进行估计。

方法 误报率
独立 SAST 38% ± 4.2
所提架构 20% ± 3.1

同时,平均修复时间也观察到显著降低。

指标 基线 所提架构
MTTR 18.4 天 6.8 天

此外,在基于风险优先级排序后,具有活跃公开 exploit 的依赖项漏洞显著减少。

指标 之前 60 天后
可利用的关键依赖项 312 87
  1. 案例研究

我们在一个公开暴露的金融应用上进行了案例研究。

在分析过程中,SAST 识别出使用了存在 CVE‑2020‑36518 漏洞的 Jackson Databind 库。SCA 工具确认了运行时依赖的存在。

与情报 feeds 的集成表明存在公开 proof‑of‑concept。风险计算结果为:

$$ R(v) = 0.87 $$

该数值将该漏洞列为系统中最关键的前三项之一,并在不到 48 小时内完成了补丁修复。

如果没有基于风险的优先级排序,该漏洞仅在超过 240 个发现中被归类为“高”。

  1. 讨论

实验结果表明,将多种分析技术与威胁情报集成,可以显著改善漏洞优先级排序。

其主要运营优势在于减少自动化扫描器产生的噪声。通过纳入真实利用上下文与应用暴露情况,团队能够将精力集中于更可能被利用的漏洞。

然而,该方法也存在局限。优先级排序质量取决于威胁情报 feeds 的可用性与更新频率。此外,公共数据库中不存在的 zero-day 漏洞可能无法获得适当的优先级。

与基于 eBPF 的运行时监控以及行为检测工具集成,可通过提供生产环境中活跃利用的可见性来补充该方法(LIGUORI et al., 2023)。

  1. 结论

我们提出了一种基于风险的定量 Application Security 架构,该架构将 SAST、DAST、SCA 以及威胁情报集成到 DevSecOps 生命周期中。

风险函数的形式化使得在漏洞优先级排序时,不仅考虑技术严重性,还考虑利用证据与运行上下文。实验评估表明,误报显著减少,平均修复时间得到改善,且可利用的脆弱依赖项数量下降。

结果表明,风险驱动的 AppSec 程序能够显著提升安全团队的运营效率,并降低真实攻击暴露面。

参考文献

ALLEN, Julia; BOYENS, Jon; SMITH, Timothy. Building Secure and Resilient Systems. Boston: Addison‑Wesley, 2020. Available at: https://www.oreilly.com/library/view/building-secure-and/9780136819425/. Accessed on: 10 abr. 2024.

BEHL, Abhishek; BEHL, Kiran. Cybersecurity and Cyberwar: What Everyone Needs to Know. Oxford: Oxford University Press, 2017. Available at: https://global.oup.com. Accessed on: 10 abr. 2024.

CISA. Known Exploited Vulnerabilities Catalog. 2024. Available at: https://www.cisa.gov/known-exploited-vulnerabilities-catalog. Accessed on: 10 abr. 2024.

ENISA. Threat Landscape 2023. 2023. Available at: https://www.enisa.europa.eu/publications/enisa-threat-landscape-2023. Accessed on: 10 abr. 2024.

FIRST. Common Vulnerability Scoring System v3.1 Specification. 2019. Available at: https://www.first.org/cvss/. Accessed on: 10 abr. 2024.

JOHNSON, Brittany et al. Why don’t software developers use static analysis tools? In: International Conference on Software Engineering (ICSE). Piscataway: IEEE, 2013. Available at: https://doi.org/10.1109/ICSE.2013.6606613. Accessed on: 10 abr. 2024.

LIGUORI, Andrea et al. eBPF-based runtime security monitoring for cloud-native systems. IEEE Security & Privacy, 2023. Available at: https://doi.org/10.1109/MSEC.2023.3241123. Accessed on: 10 abr. 2024.

MITRE. MITRE ATT&CK Enterprise Matrix. 2023. Available at: https://attack.mitre.org. Accessed on: 10 abr. 2024.

NIST. National Vulnerability Database. 2023. Available at: https://nvd.nist.gov. Accessed on: 10 abr. 2024.

NIST. Secure Software Development Framework (SP 800‑218). Gaithersburg: NIST, 2022. Available at: https://csrc.nist.gov/publications/detail/sp/800-218/final. Accessed on: 10 abr. 2024.

OWASP. OWASP SAMM v2 Model. 2023. Available at: https://owaspsamm.org. Accessed on: 10 abr. 2024.

OWASP. OWASP Top 10:2021. 2021. Available at: https://owasp.org/www-project-top-ten/. Accessed on: 10 abr. 2024.

SCANDARIATO, Riccardo et al. Static and dynamic analysis for security. IEEE Security & Privacy, v. 11, n. 1, p. 74–79, 2013. Available at: https://doi.org/10.1109/MSP.2012.150. Accessed on: 10 abr. 2024.

SHARMA, Ankur; SHARMA, Ankit. Exploitation trends in CVEs: empirical analysis. Computers & Security, v. 96, 2020. Available at: https://doi.org/10.1016/j.cose.2020.101875. Accessed on: 10 abr. 2024.

VERIZON. Data Breach Investigations Report. 2023. Available at: https://www.verizon.com/business/resources/reports/dbir/. Accessed on: 10 abr. 2024.

ZHANG, Yinqian et al. Automated vulnerability detection in modern software systems. ACM Computing Surveys, 2022. Available at: https://doi.org/10.1145/3507907. Accessed on: 10 abr. 2024.

LI, Frank et al. Understanding the security of container ecosystems. IEEE Symposium on Security and Privacy, 2020. Available at: https://doi.org/10.1109/SP40000.2020.00035. Accessed on: 10 abr. 2024.

BROWN, Casey; GORDON, Andrew. Threat intelligence driven vulnerability management. SANS Institute, 2021. Available at: https://www.sans.org/white-papers/. Accessed on: 10 abr. 2024.

CHERNY, Sasha; LEE, Jason. DevSecOps practices for secure CI/CD pipelines. IEEE Software, 2022. Available at: https://doi.org/10.1109/MS.2022.3145123. Accessed on: 10 abr. 2024.

BEHL, Abhishek. Cyber risk analytics for vulnerability prioritization. Journal of Cybersecurity, 2021. Available at: https://doi.org/10.1093/cybsec/tyab021. Accessed on: 10 abr. 2024.

SNYK. State of Open Source Security Report. 2023. Available at: https://snyk.io/reports/open-source-security/. Accessed on: 10 abr. 2024.

AQUA SECURITY. Trivy Documentation. 2024. Available at: https://aquasecurity.github.io/trivy/. Accessed on: 10 abr. 2024.

SEMGREP. Semgrep Documentation. 2024. Available at: https://semgrep.dev/docs/. Accessed on: 10 abr. 2024.

OWASP. OWASP ZAP Documentation. 2024. Available at: https://www.zaproxy.org/docs/. Accessed on: 10 abr. 2024.

DEFECTDOJO. DefectDojo Documentation. 2024. Available at: https://docs.defectdojo.com. Accessed on: 10 abr. 2024.