rdx644/ZeroPatch-CI

GitHub: rdx644/ZeroPatch-CI

ZeroPatch CI 是一款证据优先的 GitHub Actions 供应链修复工具,通过解析工作流 YAML 结构并对高置信度安全问题生成草稿补丁,帮助团队安全地加固 CI 流水线。

Stars: 1 | Forks: 0

# ZeroPatch CI 证据优先的 GitHub Actions 供应链修复工具。ZeroPatch 会解析工作流,扫描五项高置信度控制措施,使用透明指标对发现的问题进行排名,并生成包含结构性验证证据的**仅限草稿**修复产物。 如需了解黑客松背景故事、架构、90秒演示和评审证明,请阅读 [Build Week 提交简报](docs/hackathon_submission.md)。 ## 安全边界 - YAML 节点位置——而非原始文本正则表达式——驱动发现检测和更改。 - 转换操作仅限于批准的 action SHA 锁定、最小权限、安全的 PR 触发器以及精确的 self-hosted runner 替换。 - 不受支持的、模糊的和产物执行的发现仅供审查;API 会拒绝尝试自动修复它们的请求。 - 候选补丁必须能被解析为 YAML,并在返回证据之前移除所有选定的发现。 - ZeroPatch 绝不执行仓库代码,且没有合并权限。 - 可选的 GPT-5.6 逻辑说明默认处于禁用状态,且仅接收带有分隔符的、不受信任的工作流文本。 ## 本地运行 要求 Python 3.11+。 ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt python -m unittest discover -s tests -v python evals\run_local.py python -m app.main ``` 打开 `http://127.0.0.1:8000`。仪表盘会自动加载 `fixtures/insecure-release.yml`。 要在受信任的本地会话中启用可选的审查者逻辑说明,请将 `OPENAI_API_KEY` 放入 `.env.local` 中,设置 `ZEROPATCH_LOAD_DOTENV=1`,并设置 `ZEROPATCH_ALLOW_AGENT=1`。除非添加经过身份验证且具有速率限制的服务边界,否则在共享或公共部署中请保持禁用此选项。 ## Docker ``` docker build -t zeropatch-ci . docker run --rm -p 8000:8000 zeropatch-ci ``` 容器以非特权用户身份运行,并监听 `0.0.0.0:8000`。默认的受信任主机是 `localhost` 和 `127.0.0.1`;对于反向代理部署,请将 `ZEROPATCH_ALLOWED_HOSTS` 设置为明确的、以逗号分隔的主机名允许列表。请在该边缘层应用 TLS、请求大小限制和速率限制。 ## 生产部署 `render.yaml` 配置了 Web 服务及其 PostgreSQL 审计数据库。在应用 Blueprint 之前,请设置以下 Render 密钥(切勿提交它们): - `GITHUB_CLIENT_ID` 和 `GITHUB_CLIENT_SECRET` - `ZEROPATCH_SESSION_SECRET`(一个较长的随机值) - `ZEROPATCH_ADMIN_LOGINS`(以逗号分隔的、允许读取 `/api/audit` 的 GitHub 登录名) 生产环境的回调 URL 是 `https://zeropatch-ci-rdx644.onrender.com/auth/github/callback`。部署要达到就绪状态,必须先确保数据库正常运行。GitHub OAuth 保护扫描和修复操作;可选的无人值守客户端可以在 `X-ZeroPatch-Key` 标头中发送来自 `ZEROPATCH_API_KEYS` 的值。请在仓库之外轮换该密钥。 ## 策略控制 | 规则 | 控制措施 | 自动修复 | | --- | --- | --- | | ZP001 | 未锁定的 GitHub Action | 仅限已批准的目录条目;其他 action 仅供审查 | | ZP002 | 显式的写入 token 权限 | 将选定的 `write` 值更改为 `read` | | ZP003 | `pull_request_target` | 更改为 `pull_request` | | ZP004 | PR 工作流中的 Self-hosted runner | 将精确的 `self-hosted` 标签更改为 `ubuntu-latest` | | ZP005 | 下载的产物随后被执行 | 无 —— 需要人工重新设计 | ## 验证 测试套件包括解析器、转换、产物流程、权限范围、API 拒绝和响应标头回归测试。在开启任何 PR 之前,请先查看生成的草稿补丁;证据仅能证明受限的静态检查,而不能证明运行时的工作流行为。 ## 作为 GitHub Action 使用 ZeroPatch 可以在任何 GitHub Actions 仓库中运行,而无需运行它所检查的仓库工作流。它会生成一份经过脱敏处理的 JSON 报告、步骤摘要计数,并且可以在达到选定严重程度时使检查失败。 ``` - uses: rdx644/ZeroPatch-CI@v1.0.0 with: workflow-path: .github/workflows report-path: .zeropatch/zeropatch-report.json fail-on: critical ``` 可用的输出有 `report-path`、`finding-count` 和 `blocking-findings`。使用 `fail-on: never` 可开启仅报告模式。在生产工作流中,请将 action 锁定到发布标签背后的不可变 commit SHA。有关完整约定,请参阅 [GitHub Action 用法](docs/github-action.md)。
标签:DevSecOps, GitHub Actions, Petitpotam, Python, 上游代理, 安全合规, 文档安全, 无后门, 模块化设计, 测试用例, 网络代理, 自动化修复, 自动笔记, 请求拦截, 软件开发工具包, 逆向工具