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, 上下文修复建议, 上游代理, 动态应用安全测试, 多步骤攻击检测, 安全合规, 安全扫描器集成, 容器安全扫描, 密码管理, 恶意软件分析, 攻击可行性分析, 攻击链分析, 漏洞利用评估, 盲注攻击, 网络代理, 自动化安全分析, 自动化攻击, 自动化渗透测试, 请求拦截, 部署判决, 部署安全评估, 错误基检测, 静态代码分析, 风险评分