sfg-labs/ai-reviewer-security
GitHub: sfg-labs/ai-reviewer-security
一个基于AI的GitHub PR安全审查工具,用于自动检测代码中的安全漏洞和合规问题。
Stars: 0 | Forks: 0
# ai-reviewer 安全性
AI PR审查器专注于**安全**关切 — OWASP、SAST、密钥、PII、DPDP合规、RBAC、依赖项CVE。即插即用的GitHub Action,被`sfg-labs`多仓库中的每个仓库使用。
## 状态
**v1 — 正在发布。** 包含13条规则,涵盖最高影响的安全类别。可重新运行,在静态分析器层面具有确定性,并辅以Claude推理来处理微妙模式(IDOR / RBAC缺陷 / 细微认证漏洞)。
## 快速安装
```
# .github/workflows/ai-review.yml
- uses: sfg-labs/ai-reviewer-security@main
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
github-token: ${{ secrets.GITHUB_TOKEN }}
```
完整安装指南:[`docs/INSTALL.md`](./docs/INSTALL.md)。
## 可检测的问题
| # | 规则 | 严重性 |
|---|---|---|
| 1 | [SEC.SECRET.001](./src/rule-packs/SEC.SECRET.001.md) — 源代码中的API密钥/私钥/提供商令牌 | 严重 |
| 2 | [SEC.SQL.001](./src/rule-packs/SEC.SQL.001.md) — 使用用户输入的字符串拼接/模板化SQL | 高危 |
| 3 | [SEC.SQL.002](./src/rule-packs/SEC.SQL.002.md) — Prisma的`$queryRawUnsafe` | 高危 |
| 4 | [SEC.PII.001](./src/rule-packs/SEC.PII.001.md) — 源代码中的原始 Aadhaar / PAN / CIN | 高危 |
| 5 | [SEC.PII.002](./src/rule-packs/SEC.PII.002.md) — PII被写入控制台/日志器 | 中危 |
| 6 | [SEC.RBAC.001](./src/rule-packs/SEC.RBAC.001.md) — 数据库查询缺少租户范围 | 高危 |
| 7 | [SEC.RBAC.002](./src/rule-packs/SEC.RBAC.002.md) — 路由绕过租户中间件 | 高危 |
| 8 | [SEC.AUTH.001](./src/rule-packs/SEC.AUTH.001.md) — JWT签名未验证 | 严重 |
| 9 | [SEC.CRYPTO.001](./src/rule-packs/SEC.CRYPTO.001.md) — 使用MD5 / SHA1 / DES / RC4 | 高危 |
| 10 | [SEC.CRYPTO.002](./src/rule-packs/SEC.CRYPTO.002.md) — 对安全敏感值使用`Math.random` | 高危 |
| 11 | [SEC.HTTP.001](./src/rule-packs/SEC.HTTP.001.md) — 禁用了TLS验证 | 高危 |
| 12 | [SEC.DEP.001](./src/rule-packs/SEC.DEP.001.md) — 存在已知CVE的依赖项(npm audit) | 继承 |
| 13 | [SEC.GIT.001](./src/rule-packs/SEC.GIT.001.md) — 使用`--no-verify`绕过提交钩子 | 中危 |
完整目录:[`docs/RULES.md`](./docs/RULES.md)。
## 架构
```
PR opened/updated
│
▼
fetch changed files (octokit)
│
▼
filter scannable (skip lockfiles, dist/, binaries)
│
▼
token-budget guard (skip + polite comment if > 50k tokens)
│
▼
┌──────┴──────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
│ semgrep │ │gitleaks │ │ rbac │ │npm audit │
│ (patterns) │ │(secrets)│ │ (heur.) │ │ (CVEs) │
└──────┬──────┘ └────┬────┘ └────┬────┘ └────┬─────┘
└────────┬────┴─────┬────┴────────────┘
▼ ▼
existing findings
│
▼
Claude reasoner (sonnet-4-6, escalates to opus-4-7 for ambiguous)
│
▼
aggregator: dedupe → applyConfig → sort → cap
│
▼
verdict policy (REQUEST_CHANGES on CRITICAL/HIGH; COMMENT otherwise)
│
▼
post inline comments + summary review
```
## 仓库布局
```
action.yml ← GH Action manifest (Node20)
src/
runner.ts ← entry — bundled to dist/index.js by ncc
orchestrator.ts ← top-level pipeline (test-target)
config.ts ← parses .github/ai-review.yml
diff.ts ← unified-diff parser + token estimator
github/ ← octokit wrappers (pr-diff, post-inline, post-summary)
tools/ ← static-analyzer wrappers (semgrep, gitleaks, npm-audit, rbac)
claude/reasoner.ts ← @anthropic-ai/sdk wrapper
prompts/system.ts ← Claude system prompt (rule catalog as context)
rule-packs/SEC.*.md ← one markdown per rule (canonical source)
aggregator.ts ← dedupe + verdict policy
version.ts ← rule pack + analyzer version pins
tests/ ← jest, ≥95% coverage, msw/nock-style mocks
dist/index.js ← bundled action (committed — that is how GH Actions work)
docs/RULES.md + docs/INSTALL.md
```
## 开发
```
npm install
npm test # runs at ≥95% coverage
npm run build # ncc -> dist/index.js (commit the result)
```
编辑规则目录后,在`src/version.ts`中更新`RULE_PACK_VERSION`,并运行`npm run build`,以便Action提供新版本。
## 硬性规则
- **引用每一项发现** — `rule_id` + `citation_url`指向该规则的Markdown文档
- **可重现性** — 每条评论中包含`rule_pack_version` + `analyzer_versions`
- **自我抑制** — 内联注释`// ai-review-ignore: — 原因`
- **Token预算** — 硬性上限为50k输入token(礼貌跳过)
- **除了GitHub API + Anthropic API外,不进行网络调用**
- **裁决策略** — 对任何严重/高危问题提出更改请求;否则仅发表评论
- **提交`dist/`目录** — GitHub Actions直接使用打包后的JS文件
## 多仓库主页
- 组织:[`sfg-labs`](https://github.com/sfg-labs)
- 同级审查器:`sfg-labs/ai-reviewer-quality`、`sfg-labs/ai-reviewer-qa`
- 被所有23个标准化的服务/网络/基础设施仓库使用
## 构建方
[Faith & Gamble IT × Suwalka Motors JV](https://github.com/sfg-labs) — `sfg-labs`。
标签:AI代码审查, AI辅助, CI/CD安全, DevSecOps, DOE合作, GitHub Action, Llama, MITM代理, OWASP合规, PII保护, RBAC检查, SQL注入防护, TLS验证, 上游代理, 云安全监控, 依赖漏洞, 加密安全, 安全审查, 密钥泄露检测, 自动化攻击, 静态分析