MihailMihaylov97/catchai-action

GitHub: MihailMihaylov97/catchai-action

一个 GitHub Action 封装,在每次推送或 PR 时自动运行 catchai 七层安全扫描并将结果呈现于 Code Scanning 和 PR 评论中。

Stars: 0 | Forks: 0

# catchai 安全扫描 — GitHub Action 在每次推送或拉取请求时运行 [catchai](https://github.com/MihailMihaylov97/catchai) 多层漏洞扫描器。扫描结果将显示在仓库的**安全**选项卡中(通过 SARIF 上传至 GitHub Code Scanning),并作为摘要评论显示在每个 PR 上。 | 层级 | 覆盖范围 | |------:|----------------| | L1 | 依赖项 CVE (Trivy + Grype + OSV.dev)、供应链风险 | | L2 | 静态分析 — SAST 模式,感知框架的来源 | | L3 | 硬编码机密(熵 + 正则表达式 + 上下文) | | L4 | 配置 / IaC — Dockerfile、Terraform、k8s、CI/CD | | L5 | 过程间污点分析(调用图 + 数据流) | | L6 | 业务逻辑 / 授权模型(入口点覆盖率) | | L7 | LLM 语义审查 — 文件模式(按文件)或流模式(按攻击面,具有跨流链检测功能) | ## 快速开始 创建 `.github/workflows/security.yml`: ``` name: security on: pull_request: push: branches: [main] permissions: contents: read security-events: write # for SARIF upload to Code Scanning pull-requests: write # for the PR summary comment jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: MihailMihaylov97/catchai-action@v1 ``` 大功告成。推送工作流,打开一个 PR。此 Action 将: 1. 安装 catchai(单次 curl)。 2. 运行确定性扫描(L1-L6,无 LLM 调用)。 3. 将 SARIF 上传至“安全”选项卡。 4. 在 PR 上发布摘要评论。 5. 如果存在任何高危或严重发现,则使工作流步骤失败。 ## 启用第 7 层(LLM 语义审查) L7 能够捕获 L1-L6 无法发现的多步漏洞利用和跨函数推理缺陷——代价是产生 LLM API 费用。 ``` - uses: MihailMihaylov97/catchai-action@v1 with: semantic: 'true' semantic-mode: 'flows' # 'flows' or 'files' semantic-top-n: '20' semantic-chain-review: 'true' # cross-flow exploit chain detection anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }} ``` `anthropic-api-key` 必须设置为仓库或组织机密。该 Action 从 `${{ secrets.ANTHROPIC_API_KEY }}` 读取它,并通过 `ANTHROPIC_API_KEY` 环境变量传递给 `catchai`。该密钥绝不会被记录到日志中。 每次扫描的 LLM 成本取决于仓库大小和 `semantic-top-n`。典型范围为:在中等规模的仓库上每次扫描 $0.20-$2。如果需要硬性上限,可以通过内置的 `prompts.yaml` 中的 `cost_budget_tokens` 旋钮进行限制。 ## 所有输入 | 输入 | 默认值 | 作用 | |---|---|---| | `path` | `.` | 要扫描的目录 | | `semantic` | `false` | 启用第 7 层 LLM 审查 | | `semantic-mode` | `files` | `files`(按文件深度审查)或 `flows`(按入口点) | | `semantic-top-n` | `20` | LLM 阶段审查的最大文件/流数量 | | `semantic-chain-review` | `false` | 跨流漏洞链检测(仅限 flows 模式) | | `semantic-verbose` | `false` | 为每次 LLM 调用打印一行进度 | | `anthropic-api-key` | — | 当 `semantic=true` 时为必填项。通过机密传递。 | | `upload-sarif` | `true` | 将扫描结果上传至 GitHub Code Scanning | | `fail-on-severity` | `high` | 导致步骤失败的严重性阈值 (`critical|high|medium|low|info|none`) | | `comment-on-pr` | `true` | 在 PR 对话中发布/更新摘要评论 | ## 所有输出 该 Action 将扫描总计数据作为步骤输出公开,以便下游作业可以对它们做出反应: | 输出 | 示例 | |---|---| | `total-findings` | `42` | | `critical-findings` | `3` | | `high-findings` | `7` | | `sarif-path` | `/.../reports/repo/scan_2026-05-03.sarif` | | `json-path` | `/.../reports/repo/scan_2026-05-03.json` | ``` - id: scan uses: MihailMihaylov97/catchai-action@v1 - name: React to high-severity findings if: ${{ steps.scan.outputs.high-findings != '0' }} run: | echo "Posting incident to PagerDuty..." ``` ## 权限参考 | 权限 | 原因 | |---|---| | `contents: read` | 标准检出。始终需要。 | | `security-events: write` | 将 SARIF 上传至 Code Scanning。可使用 `upload-sarif: false` 跳过。 | | `pull-requests: write` | 发布/更新 PR 摘要评论。可使用 `comment-on-pr: false` 跳过。 | ## 私有仓库上的 Code Scanning 将 SARIF 上传到**私有**仓库的 GitHub Code Scanning 需要 GitHub Advanced Security。如果您的组织没有 GHAS,请设置 `upload-sarif: false` —— 扫描仍将运行,报告将作为工作流构件(`catchai-report`)上传,并且 PR 评论将显示发现计数。 ## 工作原理(底层机制) 此 Action 是一个轻量级的复合包装器。它会: 1. 通过 curl 请求 `https://raw.githubusercontent.com/MihailMihaylov97/catchai-dist/main/install.sh` 来安装 catchai 二进制文件,该脚本会下载适合当前平台的预构建 wheel。 2. 使用从输入派生的参数运行 `catchai scan ...`。 3. 解析规范的扫描 JSON 输出以获取严重性计数。 4. 将 SARIF 上传至 GitHub Code Scanning。 5. 使用标记行发布/更新 PR 摘要评论,以便推送到 PR 分支时会更新现有评论,而不是堆叠新评论。 该 Action 源码(此 `action.yml`)采用宽松许可证授权(参见 [`LICENSE`](LICENSE))。catchai 二进制文件本身受其自身条款管辖 —— 参见 [`LICENSE_NOTE.md`](LICENSE_NOTE.md)。 ## 版本控制 固定到主要版本(`@v1`)可获取带有稳定 Action 接口的自动次要/补丁更新。如果您希望获得哈希等效的可复现性,请固定到特定标签(`@v1.0.0`)。 ## 问题 Action 管道错误(工作流 YAML、SARIF 上传、PR 评论格式)请提交至本仓库的 [issues](https://github.com/MihailMihaylov97/catchai-action/issues)。 扫描结果质量问题(遗漏发现、误报、错误的严重性)请提交至上游的 [catchai 仓库](https://github.com/MihailMihaylov97/catchai/issues)。
标签:Chrome Headless, CI/CD安全, CISA项目, Claude, CVE检测, DevSecOps, GitHub Action, GitHub代码扫描, Kubernetes安全, Llama, SARIF, StruQ, Terraform安全, Web截图, 上游代理, 代码安全, 代码审查, 依赖漏洞, 基础设施即代码扫描, 容器安全, 文档安全, 权限模型检测, 漏洞枚举, 结构化查询, 自动化安全, 逆向工具, 静态应用安全测试