Skip to content
返回质量保障

动态分析(DAST)

从外部扫运行中应用,探测黑盒攻击者会找的漏洞。

为什么

SAST 看代码不看运行时配置;DAST 看运行应用不看源。它们互补。DAST 找仅运行时显现的漏洞: 配置错误的安全头、无 HttpOnly 的会话 cookie、该返 401 却返 200 的端点、因生产防火墙允许 staging 不允许的出站而工作的 SSRF。它如攻击者般探测应用——无源访问、无内部知识——所以验证你以为在位的控制运行时真工作。它是生产安全态势最现实的测试,仅次于人工渗透。

何时使用

每次部署到 staging 跑 DAST 扫描(自动、ZAP 基线)和每周或发布前更深扫描(ZAP 全扫、Nuclei)。未经协调不对生产跑——主动扫描可破坏东西。

如何做

1. 选 DAST 工具
   - OWASP ZAP(免费、工业标准、好 API+自动化)
   - Nuclei(快、模板化、好查已知 CVE 和配置错误)
   - 商业: Burp Suite、Acunetix、Netsparker(更深、更贵)

2. 每次 staging 部署跑基线扫描(被动,<2 分钟)
   - ZAP 基线: 爬应用、录请求、标被动发现
   - 无主动探测——每次部署安全跑,抓头/cookie/配置问题
   - 新高严重性发现即部署失败

3. 每周或发布前跑全主动扫描(10-30 分钟)
   - ZAP 主动扫: 向每个表单/参数发攻击载荷(SQLi、XSS、路径遍历)
   - 对专用 staging 实例跑非生产——主动扫可崩应用
   - 分类发现: 真阳性 → 修;假阳性 → 带理由抑制

4. 为登录后区域给扫描器认证
   - 给 ZAP 登录宏/脚本使它能达认证端点
   - 无认证扫描漏 80% 应用(登录墙后一切)

5. 把发现集成到追踪器并趋势化
   - 每个真阳性开 ticket;追踪修复时间
   - 扫间比: 新发现是回归,解决发现是赢
   - 把 DAST 报告喂入 OWASP 控制矩阵作证据

示例

# 每次部署后对 staging 跑 ZAP 基线扫描
# scripts/dast-baseline.sh
#!/bin/bash
TARGET="https://staging.example.com"
docker run -t ghcr.io/zaproxy/zaproxy:latest   zap-baseline.py -t "$TARGET" -J zap-report.json -r zap-report.html   --hook=/zap/custom_hook.py
# 高严重性发现非零退出 → 部署流水线失败。

# GitHub Actions: staging 部署后 DAST
# .github/workflows/dast.yml
name: DAST
on: [workflow_dispatch]  # staging 部署后触发
jobs:
  zap-baseline:
    runs-on: ubuntu-latest
    steps:
      - uses: zaproxy/[email protected]
        with:
          target: "https://staging.example.com"
          cmd_options: "-a -j"
          # -a: 主动扫,-j: JSON 输出
          # HIGH 或 CRITICAL 发现即失败。WARNING 发但不失败。

# 样本发现:
#  ❌ 高: 跨站脚本(反射)在 /search?q=
#    攻击: <script>alert(1)</script>
#    证据: 搜索词在响应中未转义反射。
#    修: 渲染前转义用户输入,或用 CSP script-src 'none'。

常见问题

  • ⚠未经协调对生产跑主动 DAST 扫描——扫描发攻击载荷可崩应用、毁数据(成功 POST 中 SQL 注入)、或触发限流和 WAF 阻断使站下线。
  • ⚠仅跑未认证扫描漏登录墙后一切——最敏感端点(账户设置、支付、管理)从未测,DAST 报告给虚假信心。
  • ⚠把每个 DAST 发现当危急 bug 立即修——很多低严重性(缺安全头)或假阳性(实际已消毒的反射参数),团队分类噪声燃尽。
  • ⚠仅发布时跑一次 DAST 再不跑——发布后新端点从未扫,现有端点回归(移除输入验证的重构)不被发现。

最佳实践

  • ✓每次 staging 部署跑被动基线扫描(安全、快、抓配置/头问题)和每周专用 staging 实例主动扫——绝不对生产跑主动扫描。
  • ✓用测试账户认证扫描器使它能达登录后敏感端点——80% 攻击面是认证的,未认证扫描不完整。
  • ✓按严重性和可利用性分类发现: 高/危立即修、中排期、低/假阳性带文档理由抑制——别让噪声淹没信号。
  • ✓扫间趋势化发现数并喂入安全仪表盘——稳定代码库上上升趋势意味新端点无安全审查被加。