安全 SDLC、SAST 与 DAST 工具
在开发早期通过静态分析(SAST)、动态分析(DAST)和威胁建模,将安全性融入软件开发生命周期。
安全 SDLC、SAST 与 DAST 工具 是 CoddyKit 上的免费 Security+ Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Security+ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Security+ Academy 课程共包含 4 节课。
什么是安全 SDLC
安全软件开发生命周期(SSDLC)将 Security 活动整合到软件开发的每个阶段——从需求到设计、编码、测试、部署和维护。传统 SDLC 将 Security 视为最后阶段的关卡,这种做法成本高且效果不佳。安全 SDLC 的理念是尽早发现并修复漏洞,因为在设计阶段发现的缺陷,其修复成本远低于在生产环境中发现的缺陷。
在开发过程中将 Security 左移
左移意味着将 Security 提前到开发流程中,而不是在最后阶段再临时添加。在实践中,这意味着将 Security 需求纳入 User 故事,在设计阶段开展威胁建模,在开发过程中进行代码审查和 SAST,并在发布前运行 DAST。实施左移的 Team 能在漏洞修复成本最低时发现漏洞——也就是在开发期间,而不是在生产环境中。
威胁建模:STRIDE 与 PASTA
威胁建模会在设计阶段系统地识别并记录 Security 威胁。STRIDE模型将威胁分为:Spoofing、Tampering、Repudiation、Information Disclosure、Denial of Service 和 Elevation of Privilege。PASTA(Process for Attack Simulation and Threat Analysis)是一种以风险为中心、用于模拟 Attacker 目标的方法。威胁模型会在编写第一行代码之前生成按优先级排序的缓解措施。
# STRIDE threat categories (mnemonic)
# S - Spoofing identity
# T - Tampering with data
# R - Repudiation of actions
# I - Information disclosure
# D - Denial of service
# E - Elevation of privilege静态应用程序 Security 测试(SAST)
SAST(白盒测试)无需执行应用程序即可分析源代码、字节码或二进制文件,查找与已知漏洞相关的编码模式。SAST 工具可以快速扫描整个代码库,并报告硬编码凭据、SQL 注入入口和不安全反序列化等问题。它们在 IDE 或 CI 流水线中运行,并通过报告文件和行号来指出发现的问题,从而简化修复工作。
# Example: running Semgrep SAST in CI
semgrep --config=auto --error src/
# Common SAST tools:
# - Checkmarx, Veracode, Fortify (commercial)
# - Semgrep, SonarQube, Bandit (open source)
# - GitHub CodeQL (integrated with GitHub Actions)SAST 的局限:误报
SAST 的一个主要局限是容易产生误报——将实际上安全的代码标记为存在漏洞。这种告警疲劳会导致开发人员不经调查就忽略发现的问题。SAST 工具也无法检测运行时 Configuration 问题、依赖运行时行为的 Authentication 缺陷,或第三方 API 调用中的漏洞。如果结合开发人员培训,使发现的问题得到准确分级处理,SAST 才能发挥最大效果。
动态应用程序 Security 测试(DAST)
DAST(黑盒测试)通过向正在运行的应用程序的 HTTP 端点发送攻击载荷,并分析响应中的漏洞迹象来进行测试。DAST 不需要访问源代码,而是像 Attacker 一样测试应用程序。它擅长发现运行时问题,例如 Authentication 绕过、响应中反射的 XSS 以及 Server 配置错误。DAST 工具包括 OWASP ZAP、Burp Suite 和 Netsparker。
# Running OWASP ZAP baseline scan against a URL
docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://staging.example.com \
-r zap-report.html
# ZAP sends probe requests and analyzes responses
# without requiring source code accessSAST 与 DAST:互补的方法
SAST 和 DAST 是互补的,而不是相互竞争的。SAST能够及早发现代码级问题并集成到 IDE 中,但无法了解运行时行为。DAST能够发现运行时漏洞且不需要源代码,但无法扫描自动化探测未触发的代码路径。将两者结合使用——在 CI 流水线中运行 SAST,并针对预发布环境运行 DAST——可以最大限度地覆盖整个 SDLC 中的漏洞。
交互式应用程序 Security 测试(IAST)
IAST通过在运行时对应用程序进行插桩,结合了 SAST 和 DAST 的部分特性。IAST 代理在应用程序内部(Server 上)运行,在测试流量经过时观察代码执行。它可以沿代码路径跟踪受污染的 User 输入到敏感入口,从而以低于纯 SAST 的误报率发现漏洞。IAST 对 Java 和 .NET 应用程序尤其有效,并且能够自然地集成到功能测试运行中。
软件组成分析(SCA)
软件组成分析(SCA)会识别应用程序中的开源库和第三方 Dependency,并将其与漏洞数据库(NVD、OSV)进行比对。现代应用程序可能引入数百个 Dependency,其中许多还是传递性 Dependency,因此 OWASP Dependency-Check、Snyk 和 Renovate 等 SCA 工具对于在 Attacker 利用供应链中的已知 CVEs 之前发现它们至关重要。
# OWASP Dependency-Check (scans project dependencies)
dependency-check --project myapp --scan ./target --format HTML
# Snyk CLI
snyk test # finds vulnerabilities in package.json / requirements.txt
snyk monitor # continuously monitors for new CVEsCI/CD 流水线中的 Security
将 Security 工具集成到CI/CD 流水线中,可以确保任何代码在通过 Security 关卡之前都不会进入生产环境。典型的 DevSecOps 流水线会执行:每次提交时运行 SAST,Dependency 变更时运行 SCA,推送到注册表前扫描 Container 镜像,扫描 Terraform/CloudFormation IaC,以及针对预发布部署运行 DAST。失败的 Security 检查会阻止构建,从而贯彻默认安全的文化。
# GitHub Actions example — security gate in CI
jobs:
security:
steps:
- uses: actions/checkout@v4
- name: Run SAST
run: semgrep --config=auto --error .
- name: SCA check
run: snyk test --severity-threshold=high
- name: Container scan
run: trivy image myapp:latest --exit-code 1安全代码审查实践
自动化工具无法取代以 Security 逻辑为重点的人工代码审查。同行审查应验证:Authentication 和授权检查位于正确位置,错误处理不会泄露敏感 Information,密码学函数使用获批准的算法和参数,并且业务逻辑无法被绕过。开发 Team 中的 Security champions——接受过 Security 培训的开发人员——能够弥合 Security Team 与 Engineering 之间的差距。
快速检查
请测试您对本课 CompTIA Security+ (SY0-701) 概念的理解。
课程回顾
在本课中,您学习了:安全 SDLC 将 Security 整合到所有开发阶段,而不是在最后阶段再临时添加,SAST 无需执行即可分析代码,而 DAST 会测试正在运行的应用程序,以及 SCA 能识别存在漏洞的开源 Dependency,而 CI/CD Security 关卡会自动强制落实检查结果。接下来我们将探讨使用 LDAP 和 Active Directory 的目录服务。
常见问题解答
「安全 SDLC、SAST 与 DAST 工具」课时是免费的吗?
是的 — 「安全 SDLC、SAST 与 DAST 工具」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Security+ Academy 课程的其余内容,请升级到 CoddyKit PRO。 Security+ Academy 课程共包含 4 节课。
「安全 SDLC、SAST 与 DAST 工具」这节课中我会学到什么?
在开发早期通过静态分析(SAST)、动态分析(DAST)和威胁建模,将安全性融入软件开发生命周期。 你通过在浏览器中直接运行的动手代码来练习 Security+ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Security+ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Security+ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「安全 SDLC、SAST 与 DAST 工具」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Security+ Academy 课中编写并运行代码吗?
能。每节 Security+ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- SQL 注入与命令注入
- 跨站脚本攻击(XSS)与 CSRF
- 身份验证失效与不安全反序列化
- 安全 SDLC、SAST 与 DAST 工具