epten08/breachgate

GitHub: epten08/breachgate

一个基于 CLI 的 REST API 攻击可行性分析工具,通过多扫描器集成与 AI 行为测试给出明确的部署安全结论和上下文修复建议。

Stars: 0 | Forks: 0

# Breach Gate **攻击可行性分析器** - 基于 CLI 的 REST API 自动化安全分析工具。它超越了漏洞检测,旨在回答核心问题:**“部署安全吗?”** 结合静态分析、容器扫描、动态 API 测试和 AI 辅助行为测试,提供部署结论及上下文修复建议。 ## 有何不同 大多数安全扫描器回答的问题是:*“存在哪些漏洞?”* Breach Gate 回答的问题是:**“攻击者真的能攻破系统吗?”** | 传统扫描器 | Breach Gate | |---------------------|--------------| | 罗列漏洞 | 分析攻击可行性 | | 按严重程度排序 | 风险 = 影响 × 可利用性 × 可达性 × 置信度 | | 通用建议 | 结合代码示例的上下文修复 | | 基于严重程度的通过/失败 | **部署结论:SAFE / UNSAFE / REVIEW_REQUIRED** | ## 功能特性 - **攻击可行性分析** - 乘法风险评分:可达性 × 可利用性 × 影响 × 置信度 - **部署结论** - 明确给出 SAFE/UNSAFE/REVIEW_REQUIRED 决策及原因 - **攻击链检测** - 识别多步攻击路径(例如:身份验证绕过 → 数据渗出) - **已确认漏洞利用追踪** - AI/动态测试成功 = 自动标记为严重优先级 - **端点关联** - 按攻击面区域对发现进行分组 - **上下文修复** - 提供带有代码示例的具体修复方案,而非通用建议 - **多扫描器集成** - Trivy (SAST)、ZAP (DAST)、容器扫描、AI 行为测试、GraphQL 探测 - **CI 认证与安全** - 短期认证钩子、多角色扫描、会话 cookies、AI 重放构件以及主动扫描防护 - **并行执行** - AI 测试并发运行,具有可配置的并发上限以实现更快的扫描 - **基线响应差异对比** - 为每个端点捕获良性基线;在正常响应中出现的正文匹配项将作为噪声被丢弃 - **基于时间的盲注** - 通过响应时间(>3 秒且 >3 倍基线时间)检测盲注 SQL 和命令注入 - **扩展的 AI 攻击类别** - SSRF、Mass Assignment、JWT 算法混淆/声明篡改,以及标准的注入和 XSS - **Watch 模式** - 按可配置间隔进行持续扫描,并展示新增/解决发现的差异 - **发现抑制** - `.breachgateignore` 文件,用于按 ID、模式或端点抑制已知可接受的发现 ## 快速开始 ``` # 安装 npm install npm run build # 启动 demo 漏洞 API npm run demo # 运行攻击可行性分析 npm run scan -- -t http://localhost:3000 -v ``` ## 示例输出 ``` ═══════════════════════════════════════════════════════════ SCAN RESULTS ═══════════════════════════════════════════════════════════ SECURITY VERDICT: ╔════════════════════════════════════════════════════════╗ ║ ⛔ UNSAFE TO DEPLOY ⛔ ║ ╚════════════════════════════════════════════════════════╝ Reason: Confirmed exploitation: SQL Injection, Command Injection. Active attacks succeeded during testing. ⚡ 2 CONFIRMED EXPLOITS: • SQL Injection on POST /api/data • Command Injection on POST /api/execute Attack Surface (by endpoint): POST /api/execute Risk: ████████████████████ 95% ├── Command Injection └── Attack chain: Command Injection → Full System Compromise POST /api/data Risk: ██████████████████░░ 90% ├── SQL Injection └── Attack chain: Injection → System Compromise ═══════════════════════════════════════════════════════════ DEPLOYMENT BLOCKED 2 confirmed exploit(s) must be fixed before deployment. ═══════════════════════════════════════════════════════════ ``` ## 前置条件 ### 必需 - **Node.js** >= 18.0.0 - **npm** >= 8.0.0 ### 可选 (用于完整的扫描功能) | 工具 | 目的 | 安装说明 | |------|---------|--------------| | **Docker** | 容器扫描,通过容器运行 ZAP/Trivy | [docker.com](https://www.docker.com/get-started) | | **Trivy** | 静态分析与容器漏洞扫描 | [trivy 文档](https://aquasecurity.github.io/trivy/latest/getting-started/installation/) | | **OWASP ZAP** | 动态 API 安全测试 | [zaproxy.org](https://www.zaproxy.org/download/) | | **AI 提供商** | 用于 AI 辅助行为测试的 LLM — 任选其一:Anthropic、OpenAI 或 Ollama (本地) | 参见 [AI 提供商设置](#ai-provider-setup) | ### 安装前置条件 **Windows (使用 winget):** ``` winget install Docker.DockerDesktop winget install AquaSecurity.Trivy # 可选:仅在本地 Ollama 时需要 winget install Ollama.Ollama ``` **macOS (使用 Homebrew):** ``` brew install --cask docker brew install trivy # 可选:仅在本地 Ollama 时需要 brew install ollama ``` **Linux (Ubuntu/Debian):** ``` # Docker curl -fsSL https://get.docker.com | sh # Trivy sudo apt-get install wget apt-transport-https gnupg lsb-release wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list sudo apt-get update && sudo apt-get install trivy # 可选:仅在本地 Ollama 时需要 curl -fsSL https://ollama.ai/install.sh | sh ``` ## 开发者设置 如果您克隆该仓库是为了开发 Breach Gate 本身,请使用此路径。 ### 1. 安装依赖 ``` npm install ``` Node.js 20 是最简单的目标,因为它与仓库的 CI 和发布工作流相匹配。 ### 2. 添加本地环境变量 如果您在本地需要云 AI 提供商或受保护的 API 凭据,请从 `.env.example` 创建一个 `.env` 文件,并仅添加您需要的值。 常用变量: - `OPENAI_API_KEY` - `ANTHROPIC_API_KEY` - `JWT_TOKEN` - `API_KEY` - `ZAP_API_KEY` ### 3. 验证仓库 ``` npm run typecheck npm test npm run test:cli npm run build ``` 或者使用单条命令运行主要的本地验证路径: ``` npm run test:all ``` ### 4. 初始化启动配置 ``` npm run dev -- init --baseline --ci-provider github ``` 这将创建: - `security.config.yml` - `.breach-gate-baseline.yml` - `.github/workflows/breach-gate.yml` ### 5. 验证本地前置条件 ``` npm run dev -- doctor --config security.config.yml ``` 当您想确认已启用的扫描器和目标是否适合流水线执行时,请使用 `--ci`。 ### 常用开发者命令 | 命令 | 目的 | |--------|---------| | `npm run dev -- scan ...` | 使用 `tsx` 从源代码运行 CLI | | `npm run scan -- ...` | 本地开发期间用于 `scan` 的快捷方式 | | `npm run demo` | 启动包含已知漏洞的演示 API | | `npm run typecheck` | TypeScript 验证 | | `npm test` | 集成测试 | | `npm run test:cli` | CLI 退出码、schema 及多配置测试 | | `npm run build` | 将 CLI 编译到 `dist/` 目录 | | `npm run sbom -- sbom.cdx.json` | 为软件包生成 CycloneDX SBOM | ## 使用方法 ``` # 使用 tsx 运行(开发模式) npm run dev -- scan [options] # 或者使用 scan 快捷方式 npm run scan -- [options] # 或者直接运行 npx tsx src/cli/index.ts scan [options] ``` ### 命令 #### `scan` 对目标 API 运行攻击可行性分析。 ``` breach-gate scan [options] ``` **选项:** | 选项 | 描述 | |--------|-------------| | `-c, --config ` | 配置文件路径 (默认:`security.config.yml`) | | `--configs ` | 逗号分隔的配置文件,用于 monorepo 或多服务扫描 | | `--workdir ` | 用于解析配置、compose、报告和扫描器路径的工作目录 | | `-t, --target ` | 目标 URL (覆盖配置文件) | | `-o, --output ` | 报告的输出目录 | | `-f, --format ` | 输出格式,逗号分隔:`markdown`、`json`、`sarif` | | `--fail-on ` | 传统选项:基于严重程度失败 (现使用攻击可行性) | | `--profile ` | 策略配置文件:`pull-request`、`main`、`release`、`nightly` | | `--baseline ` | 基线/忽略文件路径 | | `--differential` | 仅在发现基线未涵盖的问题时失败 | | `-v, --verbose` | 启用详细输出,包含攻击链和修复建议 | | `-q, --quiet` | 抑制非必要的输出 | | `--ci` | **CI 模式** - 针对流水线的精简、确定性输出 | | `--skip-static` | 跳过静态分析 | | `--skip-container` | 跳过容器扫描 | | `--skip-dynamic` | 跳过动态 API 扫描 | | `--skip-ai` | 跳过 AI 辅助行为测试 | | `-h, --help` | 显示帮助 | #### `init` 创建启动配置文件及可选的基线/CI 文件。 ``` breach-gate init --baseline --ci-provider github ``` #### `watch` 以固定间隔持续扫描目标,并将新增或解决的发现作为差异报告输出。 ``` breach-gate watch [options] ``` | 选项 | 描述 | |--------|-------------| | `-c, --config ` | 配置文件路径 (默认:`security.config.yml`) | | `-i, --interval ` | 扫描之间的秒数 (默认:`60`,最小:`10`) | | `-v, --verbose` | 详细输出 | ``` # 每 2 分钟重新扫描并高亮显示新增/已解决的发现 breach-gate watch --interval 120 # 使用特定 config breach-gate watch -c staging.security.config.yml -i 300 ``` 按 `Ctrl+C` 停止。每次扫描会打印 `[Scan #N] N NEW finding(s)` 或 `[Scan #N] No new findings.`,并标记上一次运行中已解决的发现。 #### `doctor` 检查本地或 CI 的前置条件。 ``` breach-gate doctor --ci --config security.config.yml ``` ### 示例 ``` # 全面攻击可行性分析 breach-gate scan -t http://localhost:3000 -v # 快速扫描(仅限 static + container) breach-gate scan -t http://localhost:3000 --skip-dynamic --skip-ai # 以 AI 为中心的测试 breach-gate scan -t http://localhost:3000 --skip-static --skip-container -v # 为 CI/CD 集成输出报告 breach-gate scan -t http://localhost:3000 -f json,markdown -o ./reports # CI 模式 - 最小化、确定性输出 breach-gate scan -t http://localhost:3000 --ci # 输出: # SECURITY STATUS: PASSED|FAILED|INCONCLUSIVE # 原因: <单行原因> # 跨多个 service config 的 Monorepo 扫描 breach-gate scan --ci --configs services/api/security.config.yml,services/admin/security.config.yml --output ./security-reports # 从服务目录运行而无需 cd 进入它 breach-gate scan --ci --workdir services/api --config security.config.yml ``` ## 本地开发工作流 ### 运行演示目标 在一个终端中启动包含已知漏洞的 API: ``` npm run demo ``` 在另一个终端中对其运行 Breach Gate: ``` npm run scan -- -t http://127.0.0.1:3000 -v ``` 如果您想使用特定于演示的配置文件,而不是仓库根目录的配置: ``` npm run dev -- scan --workdir demo --config security.config.yml ``` ### 在 monorepo 中处理单个服务 ``` npm run dev -- scan --workdir services/payments --config security.config.yml --ci ``` ### 在一次运行中扫描多个服务配置 ``` npm run dev -- scan --ci --configs services/api/security.config.yml,services/admin/security.config.yml --output ./security-reports ``` ### 退出码 | 代码 | 结论 | 描述 | |------|---------|-------------| | `0` | SAFE | 未检测到可利用的漏洞 | | `0` | REVIEW_REQUIRED | 发现的问题需要审查,但没有已确认的漏洞利用 | | `1` | UNSAFE | 检测到已确认的漏洞利用 - 部署被阻止 | | `1` | INCONCLUSIVE | 扫描失败 - 无法验证安全性,安全地失败退出 | | `2` | - | 配置错误 | **核心原则:** `扫描失败 ≠ 无漏洞`。如果扫描器失败,结论将是 `INCONCLUSIVE` 并以非零退出码退出。 ## 攻击可行性工作原理 传统扫描器使用简单的严重程度 (LOW/MEDIUM/HIGH/CRITICAL)。Breach Gate 使用**乘法风险评分**: ``` risk = impact × exploitability × reachability × confidence ``` ### 风险因素 | 因素 | 描述 | 来源 | |--------|-------------|---------| | **可达性** | 攻击者能否访问此目标? | 端点分析,认证要求 | | **可利用性** | 漏洞利用是否已被证实? | AI 测试成功,ZAP 主动扫描,CVE 数据 | | **影响** | 可能造成什么损害? | 类别映射 (RCE=1.0,XSS=0.75 等) | | **置信度** | 证据有多充分? | 来源类型,证据质量,去重 | ### 已确认的漏洞利用 当 AI 或动态测试**成功利用**了某个漏洞时: - 自动标记为已确认 - 最低可行性评分为 0.8 - 结论变为 UNSAFE - 优先进行紧急修复 ## 报告 ### 安全结论 每份报告都以部署决策开头: ``` ## Security Verdict ╔══════════════════════════════════════════════════════════╗ ║ ⛔ UNSAFE TO DEPLOY ⛔ ║ ╚══════════════════════════════════════════════════════════╝ **Reason:** Confirmed exploitation: SQL Injection, Command Injection. ### ⚡ 已确认的 Exploits These vulnerabilities were **actively exploited** during testing: - **SQL Injection** on `POST /api/data` - **Command Injection** on `POST /api/execute` ``` ### 攻击面分析 ``` | Endpoint | Risk | Vulnerabilities | Attack Feasibility | |----------|------|-----------------|-------------------| | `POST /api/execute` | 🔴 95% | Command Injection | High | | `POST /api/data` | 🔴 90% | SQL Injection | High | | `GET /api/users/:id` | 🟠 65% | Broken Access Control | Medium | ``` ### 上下文修复 您将获得具体的修复方案,而非通用建议: ``` ### 🚨 SQL Injection **Endpoint:** `POST /api/data` **Priority:** IMMEDIATE **Fix:** Parameterize query on POST /api/data for parameter 'id' **Example:** ```javascript // Instead of: db.query(`SELECT * FROM users WHERE id = ${id}`); // Use: db.query('SELECT * FROM users WHERE id = ?', [id]); ``` ## 配置 在您的项目根目录中创建一个 `security.config.yml` 文件: ``` version: "1.0" target: baseUrl: http://localhost:3000 healthEndpoint: /health # Endpoints for AI testing (if no OpenAPI spec) endpoints: - path: /api/login method: POST body: username: test password: test - path: /api/users method: GET params: id: "1" auth: type: none # type: jwt # token: ${JWT_TOKEN} scanners: static: enabled: true trivy: severityThreshold: MEDIUM container: enabled: true images: - my-app:latest dynamic: enabled: true zap: apiScanType: api maxDuration: 300 ai: enabled: true provider: anthropic # ollama | openai | anthropic model: claude-haiku-4-5-20251001 maxTests: 15 # GraphQL scanner — auto-discovers common paths (/graphql, /api/graphql, /query) graphql: enabled: false # set to true if the target exposes a GraphQL API thresholds: failOn: HIGH warnOn: MEDIUM policy: profile: main # baselinePath: ./.breach-gate-baseline.yml # differentialOnly: true reporting: outputDir: ./security-reports formats: - markdown - json - sarif includeEvidence: true ``` ## 发现抑制 现有两种互补的机制可用于抑制发现结果: | 机制 | 最适合 | |-----------|---------| | `.breachgateignore` | 永久可接受的发现:有意为之的行为、由 CDN 处理的标头、仅限 VPN 访问的端点 | | `.breach-gate-baseline.yml` | 临时豁免:已跟踪的工单、尚无上游修复、冲刺待办事项 | ### `.breachgateignore` 在您的项目根目录中创建一个 `.breachgateignore` 文件。匹配规则的发现在结论和策略评估之前会被移除——它们不会导致 CI 失败,也不会出现在报告中。 ``` # .breachgateignore suppressions: # Suppress by exact finding ID (from the JSON report) - id: "7ba985bc-6885-4c1d-8666-92f317402bd4" reason: "Rate limiting is handled by the upstream load balancer" # Suppress by title/category pattern (case-insensitive substring) - pattern: "Missing security header" reason: "Security headers are added at the CDN layer, not the origin" # Narrow a pattern to a specific endpoint - pattern: "Path Traversal" endpoint: "/api/internal/files" reason: "Internal endpoint behind VPN, not reachable from the internet" # Rules can expire — finding resurfaces after this date - pattern: "Broken Access Control" endpoint: "/api/legacy" reason: "Tracked in SEC-456, scheduled for Q3" expires: "2026-09-01" ``` 规则按顺序评估。只要**任意**一条规则匹配,该发现就会被抑制。过期的规则会被自动忽略。 请参阅仓库根目录中的 `.breachgateignore.example` 获取完整的注释参考。 ## AI 辅助行为测试 AI 扫描器是**核心差异化优势**。它能够: - 理解端点语义和业务逻辑 - 为每个端点生成具有上下文感知的攻击载荷 (而非批量列表) - 在攻击前捕获良性的基线响应,然后过滤掉正常流量中出现的匹配项 - 通过实际的请求确认漏洞利用 - 提供高置信度的发现 ### 攻击类别 AI 扫描器会在所有这些类别中生成测试用例,并为每个端点选择最相关的类别: | 类别 | 检测方法 | |----------|-----------------| | SQL 注入 | 响应中包含 SQL 错误文本或反射出的注入载荷 | | 命令注入 | 响应中包含命令输出;通过响应延迟实现基于时间的盲注 | | 路径遍历 | 响应中包含文件内容或内部路径 | | 跨站脚本攻击 (XSS) | 脚本标签在 HTML 响应中原样反射 | | 访问控制破坏 / IDOR | 预期 4xx 状态码时却返回 2xx;返回了不同用户的数据 | | SSRF | 响应中包含云元数据 (169254.x.x,amazonaws.com) | | Mass Assignment | 特权字段 (如 role,is_admin) 被回显并带有攻击者设定的值 | | JWT 攻击 | 算法混淆 (alg:none)、声明篡改——在配置了 JWT 认证时触发 | | 信息泄露 | 调试字段、堆栈跟踪、响应中的内部路径 | ### 为什么 AI 的发现更重要 | 来源 | 置信度 | 原因 | |--------|------------|-----| | 静态分析 (Trivy) | 中 | 理论上的——基于模式匹配 | | 动态分析 (ZAP) | 高 | 主动测试,但属于通用型 | | **AI 测试器** | 非常高 | 结合基线差异比对的上下文感知行为测试 | 当 AI 成功利用漏洞时,这就是一个**已确认的攻击路径**。 ## AI 提供商设置 Breach Gate 支持三种 AI 提供商。任选其一并在 `security.config.yml` 中进行配置。 ### Anthropic (推荐用于 CI/CD) 无需本地服务器。从 [console.anthropic.com](https://console.anthropic.com/settings/keys) 获取 API 密钥。 ``` # .env ANTHROPIC_API_KEY=sk-ant-... ``` ``` # security.config.yml scanners: ai: enabled: true provider: anthropic model: claude-haiku-4-5-20251001 # fast and cost-effective maxTests: 15 ``` | 模型 | 速度 | 最适合 | |-------|-------|----------| | `claude-haiku-4-5-20251001` | 最快 | CI 流水线,高测试量 | | `claude-sonnet-4-6` | 均衡 | 对复杂漏洞具有更好的推理能力 | | `claude-opus-4-7` | 彻底 | 最高质量,夜间或发布扫描 | ### OpenAI ``` # .env OPENAI_API_KEY=sk-... ``` ``` scanners: ai: enabled: true provider: openai model: gpt-4o-mini # or gpt-4o maxTests: 15 ``` ### Ollama (本地,无需 API 密钥) 需要运行 Ollama 服务器。适用于物理隔离的环境。 ``` # 安装并启动 ollama serve ollama pull llama3 # 验证 curl http://localhost:11434/api/tags ``` ``` scanners: ai: enabled: true provider: ollama model: llama3:8b baseUrl: http://localhost:11434 # optional, this is the default maxTests: 15 ``` | 内存 | 推荐模型 | |-----|------------------| | 16 GB+ | `llama3:8b` | | 8 GB | `llama3:8b-q4_0` | | GPU | `codellama:13b` | ## GraphQL 扫描 当目标暴露 GraphQL API 时启用 GraphQL 扫描器: ``` scanners: graphql: enabled: true ``` 该扫描器会自动发现常见的 GraphQL 路径 (`/graphql`、`/api/graphql`、`/query`、`/gql`)。如果这些路径都没有返回 GraphQL 格式的响应体,它将自动跳过。 探测内容: | 检查项 | 发现类型 | |-------|-------------| | 启用了内省 | 信息泄露 (MEDIUM) | | 无查询深度限制 | 安全配置错误 (MEDIUM) | | 错误中的字段建议 | 信息泄露 (LOW) | | 通过查询变量进行 SQL 注入 | SQL 注入 (CRITICAL) | | IDOR — 查询其他用户的 ID | 访问控制破坏 (HIGH) | ## 演示 包含一个存在漏洞的演示 API: ``` # 启动 demo API(包含故意设置的漏洞) npm run demo # 运行完整分析 npm run scan -- -t http://localhost:3000 -v ``` 演示漏洞: - SQL 注入 - 命令注入 - 路径遍历 - IDOR (访问控制破坏) - 信息泄露 - 缺少安全标头 ## 项目结构 ``` breach-gate/ ├── src/ │ ├── cli/ │ │ └── commands/ │ │ ├── run.ts # breach-gate scan │ │ ├── watch.ts # breach-gate watch (continuous scanning) │ │ ├── init.ts # breach-gate init │ │ └── doctor.ts # breach-gate doctor │ ├── core/ # Config loader, logger, process runner │ ├── orchestrator/ # Scan orchestration, environment management │ ├── scanners/ │ │ ├── ai/ # AI behavioral tester │ │ ├── graphql/ # GraphQL security prober │ │ ├── static/ # Trivy SAST │ │ ├── container/ # Trivy image scanning │ │ └── dynamic/ # OWASP ZAP │ ├── findings/ # Attack analysis, risk scoring, remediation │ │ ├── attack.analyzer.ts # Attack feasibility analysis │ │ ├── risk.engine.ts # Risk scoring │ │ └── normalizer.ts # Finding normalization │ ├── policy/ │ │ ├── policy.ts # Baseline and policy evaluation │ │ └── suppression.ts # .breachgateignore parser │ ├── reports/ # Report generators (JSON, Markdown, SARIF, HTML) │ └── ai/ # LLM integration, test generation, evaluation ├── demo/ # Vulnerable demo API ├── .breachgateignore.example └── security.config.yml ``` ## 部署 Breach Gate 常见的部署场景有两种: 1. 将 Breach Gate 部署到另一个仓库或 CI/CD 流水线中 2. 发布新版本的 Breach Gate 供其他团队使用 ### 在其他项目中使用 Breach Gate 您可以通过三种主要方式将其部署到目标流水线中。 #### 选项 1:npm 包 ``` npx breach-gate@1.0.0 scan --ci --config security.config.yml --profile main --format json,markdown,sarif --output security-reports ``` 当流水线中已有 Node 环境可用时使用此选项。 #### 选项 2:Docker 镜像 ``` docker run --rm \ -v "$PWD:/workspace" \ -w /workspace \ -v /var/run/docker.sock:/var/run/docker.sock \ ghcr.io/epten08/breach-gate:1.0.0 \ scan --ci --config security.config.yml --profile main --format json,markdown,sarif --output security-reports ``` 当您需要一个固定版本且已包含 CLI 和 Trivy 的运行环境时使用此选项。 #### 选项 3:GitHub Action ``` - name: Run Breach Gate uses: epten08/breach-gate@v1 with: config: security.config.yml target: ${{ vars.STAGING_API_URL }} output: security-reports format: json,markdown,sarif scan-args: --profile main ``` 当您希望拥有最简便的 GitHub Actions 设置路径时使用此选项。 ### 发布新版本的 Breach Gate 面向维护者的发布流程如下: ``` npm install npm run test:all npm audit --omit=dev npm run sbom -- sbom.cdx.json git tag v1.2.3 git push origin v1.2.3 ``` 推送语义版本标签会触发 `.github/workflows/release.yml`,该工作流会验证软件包并发布: - npm 包 - GHCR 容器镜像 - CycloneDX SBOM 构件 - npm provenance - 容器 provenance 和 SBOM 证明 也可以通过 release 工作流上的 `workflow_dispatch` 输入来执行手动试运行。 ### 仓库 CI 仓库 CI 工作流位于 `.github/workflows/ci.yml`,负责运行: - `npm run typecheck` - `npm test` - `npm run test:cli` - `npm run build` - `npm audit --omit=dev` - `npm run sbom -- security-reports/sbom.cdx.json` - `npm pack --dry-run` - 演示 API 扫描冒烟测试 ## CI/CD 集成 以下场景提供了第一方 CI/CD 示例: - [仓库发布](docs/ci/releasing.md) - [GitHub Actions](docs/ci/github-actions.md) - [GitLab CI](docs/ci/gitlab-ci.md) - [Azure Pipelines](docs/ci/azure-pipelines.md) - [策略配置文件和基线](docs/ci/policy.md) - [认证、AI 重放和安全配置文件](docs/ci/auth-and-safety.md) - [代码扫描和 PR 反馈](docs/ci/code-scanning.md) ``` # GitHub Actions 示例 - name: Run Breach Gate uses: epten08/breach-gate@v1 with: config: security.config.yml target: ${{ vars.STAGING_API_URL }} output: security-reports format: json,markdown,sarif scan-args: --profile main - name: Upload security reports uses: actions/upload-artifact@v4 if: always() with: name: security-reports path: security-reports/ ``` ## 故障排除 ### "Trivy not found" Breach Gate 可以通过 Docker 使用 Trivy。请确保 Docker 正在运行,或者: ``` breach-gate scan --skip-static --skip-container ``` ### "ZAP not found" Breach Gate 可以通过 Docker (`ghcr.io/zaproxy/zaproxy`) 使用 ZAP。或者: ``` breach-gate scan --skip-dynamic ``` ### "Ollama connection refused" ``` ollama serve # Start the server first ``` 或者切换到云提供商 (无需本地服务器)——参见 [AI 提供商设置](#ai-provider-setup)。 或者完全跳过 AI 测试: ``` breach-gate scan --skip-ai ``` ### "Anthropic API key not configured" / "OpenAI API key not configured" 在您的 `.env` 文件中设置密钥,或者在 shell 中将其导出: ``` export ANTHROPIC_API_KEY=sk-ant-... # 或 export OPENAI_API_KEY=sk-... ``` ### 低置信度发现 在启用 AI 的情况下运行——它通过行为测试提供最高的置信度: ``` breach-gate scan -t http://localhost:3000 -v ``` ## 许可证 MIT
标签:AI安全测试, AI风险缓解, API安全, CI/CD安全, CISA项目, CLI安全工具, DAST, DevSecOps, GraphQL安全, JSON输出, Llama, MITM代理, REST API安全, SAST, 上下文修复建议, 上游代理, 动态应用安全测试, 多步骤攻击检测, 安全合规, 安全扫描器集成, 容器安全扫描, 密码管理, 恶意软件分析, 攻击可行性分析, 攻击链分析, 漏洞利用评估, 盲注攻击, 网络代理, 自动化安全分析, 自动化攻击, 自动化渗透测试, 请求拦截, 部署判决, 部署安全评估, 错误基检测, 静态代码分析, 风险评分