AlphaSudo/zerodast

GitHub: AlphaSudo/zerodast

一个 CI 优先的开源 DAST 编排框架,为公共仓库提供企业级自动化漏洞扫描与精准修复指导。

Stars: 0 | Forks: 2

## 🔍 什么是 ZeroDAST? **ZeroDAST** 是一个开源的、CI 优先的 **动态应用安全测试(DAST)** 编排框架,专为带有文档化 REST API 的公共 GitHub 仓库设计。 它将 [OWASP ZAP](https://www.zaproxy.org/) 封装在一个 **安全加固、权限隔离的 CI 流水线** 中,提供企业级扫描能力 —— 可信/不可信工作流分离、多角色认证扫描、Delta 范围 PR 分析、基于基线的分类处理、结构化操作工件 —— 全程无需任何许可证成本。 ### 用通俗的话来说它能做什么 1. **扫描你的 API** — 自动发现并测试 REST 端点的漏洞(SQLi、XSS、IDOR、配置错误) 2. **在 CI 中运行** — PR 扫描约 3 分钟,夜间全量扫描约 5 分钟,全部在 GitHub Actions 内 3. **帮你处理认证** — 自动引导用户和管理员令牌,覆盖 4 种主流认证方式 4. **隔离所有组件** — 应用、数据库和扫描器运行在加固的、联网隔离的容器环境 5. **智能报告** — 差异感知的基线对比、修复建议、API 路由覆盖清单、PR 机器人评论 6. **完全免费** — 开源、无 SaaS、无按开发者收费 ### 它适合谁? | ✅ 非常适合 | ⚠️ 暂不支持 | |---|---| | 开源维护者需要 CI DAST | SSO / SAML / OIDC / MFA 认证流程 | | 小型/中型 REST API 项目 | GraphQL / SOAP / gRPC 协议 | | 令牌引导友好的 API | 企业级治理项目 | | 有 OpenAPI 文档的服务 | 实时流量暗 API 发现 | | 厌倦嘈杂昂贵扫描器的团队 | 浏览器录制的登录流程 | ## 🚀 为什么选择 ZeroDAST 而不是原生 ZAP? 直接运行 `docker run zaproxy/zap-stable` 对 API 进行测试看似简单,但实际是 **无认证、无结构、往往无用** 的。以下是区别所在: ### 认证问题 在 **4 个真实开源目标**(NocoDB、Strapi、Directus、Medusa)上,原生 ZAP 未能发现任何 API 端点,而 ZeroDAST 发现了 **48 个**。差异的关键在于 **认证**。 原生 ZAP 无法处理非常规头部(`xc-auth`)、嵌套令牌字段(`data.token`、`data.access_token`)或管理员与用户 API 隔离,除非为每个目标编写定制脚本。ZeroDAST 的适配器框架通过配置即可处理这一切,无需修改代码。 ### 信号问题 | 指标 | 原生 ZAP | ZeroDAST | 提升 | |---|---|---|---| | 覆盖目标总发现数(4 个目标) | 77 | **117** | **+52%** | | 覆盖的 API URI 数量 | **0** | **48** | **∞** | | NocoDB 发现数 | 30(0 API) | **34(7 API)** | +13%,超集 | | Strapi 发现数 | 14(0 API) | **26(8 API)** | +86%,超集 | | Directus 发现数 | 28(0 API) | **51(30 API)** | +82%,超集 | | FastAPI(T4) | **0** — 扫描完全失败 | **14 个 API 告警 URI** | 原生完全无法扫描 | ### 隔离问题 | 安全控制 | 原生 ZAP | ZeroDAST | |---|---|---| | 可信/不可信工作流分离 | ❌ | ✅ | | 工件交接(不直接复用信任) | ❌ | ✅ | | 容器加固(cap-drop、no-new-privileges、只读根) | ❌ | ✅ | | `--internal` 网络隔离 | ❌ | ✅ | | 内存与 PID 限制 | ❌ | ✅ | | 覆盖 SQL 校验 | ❌ | ✅ | ### 操作问题 | 扫描后操作 | 原生 ZAP | ZeroDAST | |---|---|---| | 报告格式 | JSON + HTML(原始) | JSON + HTML + 环境清单 + 结果状态 + 修复指南 + 运行可靠性 + API 清单 | | 基线对比 | ❌ 无 | ✅ 差异感知的新/持久/已解决 | | 分级指导 | ❌ 原始报告,自行判断 | ✅ 结构化修复指南,按优先级排序 | | PR 机器人评论 | ❌ 手动配置 | ✅ 策略模式自动评论(`always` / `actionable` / `new_findings`) | | 夜间问题管理 | ❌ 无 | ✅ 去重分类问题,含操作上下文 | | API 路由覆盖 | ❌ 无 | ✅ 已观察/未观察/提示路由清单 | | 集群追踪 | ❌ 无 | ✅ 轻量多目标注册表 | ## 📊 关键数据
~3 分钟
PR 扫描时间
~5 分钟
夜间扫描时间
$0
总成本
7
验证的外部目标
3
语言栈(Java、Python、Node.js)
4
认证方式验证
52%
相比原生 ZAP 更多发现
48
API URI(相比原生的 0)
4/4
模型 1 集群 CI 绿色
10万+
累计 GitHub 星标(验证目标)
17/17
Petclinic 路由全覆盖
0
厂商锁定
## 🏗 架构 ZeroDAST 采用 **双通道权限隔离 CI 架构**,将不受信任的 PR 代码执行与受信任的 DAST 扫描分离: ### 三层防御模型 | 层级 | 作用 | |---|---| | **权限隔离** | PR 代码以只读权限运行;受信任扫描通过 `workflow_run` 从 `main` 触发,使用独立 Runner | | **凭证与工件隔离** | PR 构建 Docker 镜像并作为工件上传;DAST 下载使用,不直接复用运行时信任 | | **网络隔离** | 应用、数据库与 ZAP 通过 Docker `--internal` 网络通信;GitHub Runner 位于外部 | ## ⚔️ 对比:ZeroDAST vs 原生 ZAP vs 企业级 DAST ### 能力矩阵 | 能力 | 无 DAST | 原生 ZAP | ZeroDAST | 企业级 DAST(如 Checkmarx) | |---|---|---|---|---| | **成本** | $0 | $0 | **$0** | $180k–$350k/年(50–100 开发者) | | **CI 时机** | — | 变化(演示应用 8 分钟+) | **PR 约 3 分钟,夜间约 5 分钟** | 通常 15–60 分钟 | | **认证处理** | — | 每个目标手动脚本 | **适配器框架:4 种验证方式** | 浏览器录制、SSO/SAML/OIDC/MFA | | **可信/不可信分离** | — | ❌ | **✅** | 平台管理 | | **容器加固** | — | ❌ | **✅(只读、cap-drop、无新权限)** | 各有不同 | | **Delta PR 扫描** | — | ❌ | **✅ 基于 Git 差异的路由感知** | 增量扫描各有不同 | | **基线对比** | — | ❌ | **✅ 差异感知的新/持久/解决** | 平台管理 ✅ | | **修复指南** | — | ❌ | **✅ 按优先级排序的结构化指导** | 平台管理 ✅ | | **API 清单** | — | ❌ | **✅ 已观察/未观察/提示路由** | 专有指标 ✅ | | **PR 机器人评论** | — | 手动配置 | **✅ 策略驱动** | 平台管理 ✅ | | **集群追踪** | — | ❌ | **✅ 轻量级文件级多目标注册表** | 完整资产模型 ✅ | | **厂商锁定** | — | 无 | **无** | 有 | | **透明度** | — | 开源 | **完全可检查** | 黑盒专有 | ### 企业级 DAST 仍更强的领域 - **认证广度**:SSO/SAML/OIDC/MFA/浏览器录制(超出 ZeroDAST 目标范围) - **协议广度**:GraphQL、SOAP、gRPC 支持(超出当前小众领域) - **发现深度**:超出 ZAP 标准规则集的专有检测规则 - **平台功能**:完整治理/合规/RBAC/ASPM - **商业支持**:SLA、专属支持团队 ### ZeroDAST 相比两者更强的领域 - **CI 速度**:PR 扫描约 3 分钟,优于企业级 15–60 分钟,也优于原生 ZAP 8+ 分钟 - **信任架构**:真正的权限隔离,原生 ZAP 缺乏,企业级处理方式不同 - **透明度**:每个脚本、配置与决策均可检查,非黑盒 - **成本**:免费,企业级需每年 18 万美元以上 - **仓库耦合**:目标仓库不添加任何文件(模型 2 外部编排器) ### 汇总集群结果(全部在 CI 中测量) | 目标 | ⭐ 星标 | 原生 ZAP | ZeroDAST | 信号提升 | |---|---:|---|---|---| | **NocoDB** | 48k+ | 8M/15L/7I — **0 API** URI | 11M/15L/8I — **7 API** URI | +13% 发现,超集 | | **Strapi** | 67k+ | 3M/7L/4I — **0 API** URI | 8M/10L/8I — **8 API** URI | +86% 发现,超集 | | **Directus** | 29k+ | 10M/10L/8I — **0 API** URI | 13M/12L/26I — **30 API** URI | +82% 发现,超集 | | **Medusa** | 27k+ | 2M/3L/0I — **0 API** URI | 4M/2L/0I — **3 API** URI | 超集 | | **演示应用** | — | 11 条告警,认证 **失败** — 8m 44s | 相同 + 认证成功 + 管理员 — 2m 53s | 更快 + 覆盖更全 | | **FastAPI** | — | **0 发现** — 扫描完全失败 | 14 个 API 告警 URI — 3m 44s | ∞(原生无法扫描) | | **Petclinic** | — | T5:43 条 URI(噪声更大,常规信任) | 17/17 路由,更干净隔离 | 更干净的信任姿态 | | **集群总计** | **10万+** | **77 条发现,0 API URI** | **117 条发现,48 API URI** | **+52% 发现** | ## 🚀 快速开始 ### 选项 2:将模型 1 安装到你的仓库(约 30 分钟设置) - `.github/workflows/zerodast-pr.yml` + `zerodast-nightly.yml` - `zerodast/`(配置、扫描运行器、验证脚本) ``` # 本地运行 chmod +x zerodast/run-scan.sh ZERODAST_MODE=pr ./zerodast/run-scan.sh ``` ### 选项 3:AI 引导设置 ### 核心 | 文档 | 描述 | |---|---| | [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 三层防御模型与数据流 | | [CURRENT_CAPABILITIES.md](docs/CURRENT_CAPABILITIES.md) | 完整当前能力清单 | | [QUICK_START.md](docs/QUICK_START.md) | 本地设置与适配流程 | | [THREAT_MODEL.md](docs/THREAT_MODEL.md) | 攻击面与缓解措施 | ### 基准与证据 | 文档 | 描述 | |---|---| | [NEAR_LOSSLESS_COMPARISON.md](docs/NEAR_LOSSLESS_COMPARISON.md) | **完整对比**:ZeroDAST 与原生 ZAP、企业级 DAST 在所有目标上的表现 | | [BENCHMARK_COMPARISON.md](docs/BENCHMARK_COMPARISON.md) | T1–T5 级分层对比 | | [BENCHMARK_PROTOCOL.md](docs/BENCHMARK_PROTOCOL.md) | 基准方法与执行规则 | | [CLAIM_READINESS.md](docs/CLAIM_READINESS.md) | 第 6 阶段就绪评估 | ### 模型 1(仓库内采用) | 文档 | 描述 | |---|---| | [MODEL1_INSTALL_GUIDE.md](docs/MODEL1_INSTALL_GUIDE.md) | 逐步安装到你的仓库 | | [MODEL1_PROTOTYPE_DESIGN.md](docs/MODEL1_PROTOTYPE_DESIGN.md) | 原型架构与设计原理 | | [MODEL1_ADOPTION_KIT.md](docs/MODEL1_ADOPTION_KIT.md) | 评估者采用工具包 | ### 运维 | 文档 | 描述 | |---|---| | [FLEET_SUMMARY.md](docs/FLEET_SUMMARY.md) | 多目标集群状态 | | [ALPHA_RELEASE_NOTES.md](docs/ALPHA_RELEASE_NOTES.md) | 当前 Alpha 状态与验证结果 | | [SECURITY.md](SECURITY.md) | 安全策略与报告流程 | ## 🔒 安全 演示应用**故意包含漏洞** — 设计用于包含 SQL 注入、XSS、IDOR 和应用信息泄露。**切勿将其部署到生产环境或公网暴露**。 如需报告 ZeroDAST 本身的安全问题,请参考 [SECURITY.md](SECURITY.md)。 ## 🤝 贡献 请参考 [CONTRIBUTING.md](CONTRIBUTING.md) 获取完整贡献指南(前置条件、运行测试、覆盖校验与 PR 检查清单)。 如需进行安全相关修改,请同时阅读 [CONTRIBUTING_SECURITY.md](docs/CONTRIBUTING_SECURITY.md)。 ## 📄 许可证 Apache License 2.0 — 参见 [LICENSE](LICENSE)。

以纪律构建。用证据验证。为自由授权。

标签:API安全, CI/CD安全, CI DAST, GitHub Actions, IDOR, JSON输出, JS文件枚举, Llama, MITM代理, OWASP ZAP, REST API扫描, XML 请求, XSS, 二进制发布, 企业级安全, 免费DAST, 动态应用安全测试, 安全合规, 安全开发, 安全流水线, 容器隔离, 开发者安全, 开源安全扫描, 开源工具, 漏洞情报, 特权隔离, 网络代理, 自动笔记, 请求拦截, 逆向工具