subkoks/blackterminal-security
GitHub: subkoks/blackterminal-security
为 AI 编程代理注入高级安全工程师思维的技能与审计代理包,覆盖 OWASP Top 10 和 CWE Top 25 等漏洞检测规范。
Stars: 0 | Forks: 0
BlackTerminal Security
发现漏洞。安全交付。
一个 skill + agent 包,赋予 AI 编程代理高级应用安全工程师的直觉。
停止交付典型的安全漏洞——开始交付生产级的安全代码。
## 为什么需要这个项目
AI 编程代理能编写出功能正常的代码,但它们总是不断交付同样典型的安全漏洞——SQL injection、XSS、IDOR、硬编码密钥、Server Actions 缺失身份验证、公开的 S3 存储桶、使用 `pull_request_target` 配合拉取分支代码。这些是过去十五年里一直占据 CVE 头条的安全缺陷。
**BlackTerminal Security 解决了这个问题。** 它是一套检测模式、漏洞分类、威胁建模规范以及一个专门的 auditor agent,旨在教会你的 AI 队友**像高级安全工程师一样思考**——寻找信任边界、将输入与 sink 匹配、检查每条状态变更路径上的权限、将每一个密钥都视为已泄露、默认采取失败封闭(fail closed)策略。
### 它能捕获的漏洞类型
- **Injection** — SQLi、NoSQLi、命令注入、代码注入、模板注入、XSS、LDAP、XPath
- **访问控制失效(Broken Access Control)** — IDOR、BOLA、BOPLA、身份验证缺失、批量赋值、Server Action 授权缺陷、`x-middleware-subrequest` 绕过类
- **加密失败** — MD5/SHA1、使用 `Math.random()` 生成 token、ECB 模式、硬编码密钥、JWT `alg: none`、HS256/RS256 混淆、使用 `===` 进行 HMAC 比较
- **SSRF** — 包括私有 IP / 云元数据 / `file://` / TOCTOU
- **路径穿越** — 无前缀检查的 `path.join`、使用原始输入的 `send_file`
- **不安全的反序列化** — `pickle.loads`、`yaml.load`、`ObjectInputStream`、`vm2`
- **硬编码密钥** — AWS、GitHub、Stripe、OpenAI、Anthropic、Slack、JWTs、私钥(超过 25 种模式)
- **云配置错误** — 公开的 S3、IAM `*:*`、`0.0.0.0/0:22`、IMDSv1、未启用加密
- **容器 / k8s** — `privileged: true`、`runAsUser: 0`、`hostNetwork`、挂载 `/var/run/docker.sock`、`image:latest`
- **CI/CD** — `pull_request_target` + 拉取分支代码、可变的 Action 标签(CVE-2025-30066 类)、通过 PR 标题进行 shell 注入
- **身份验证缺陷** — 存储在 localStorage 中的 JWT、无 MFA、登录缺失速率限制、可预测的重置 token
- **开放重定向** — `//evil.com` 绕过类
- **Markdown 数据泄露** — 由密钥构造的图片 URL(EchoLeak 类)
- **LLM 特有漏洞** — 输出至 eval、过度代理、系统 prompt 中包含密钥
## 包含哪些内容
| 组件 | 类型 | 作用 |
|-----------|------|-------------|
| **`blackterminal-security`** | Skill | 核心安全规范——当你的代理读取、写入或审查代码时自动加载。包含五项规范、威胁建模检查清单、检测速查表。 |
| **`security-audit`** | Skill | 斜杠命令审查。扫描文件/目录/PR/代码库以查找漏洞,返回按严重程度排序的报告并附带 CWE/OWASP 映射。 |
| **`security-auditor`** | Agent | 只读的高级安全工程师子代理。无法写入、编辑或删除。使用 OWASP Top 10 + CWE Top 25 + 威胁模型审查每一个文件。 |
| **`scan.sh`** | Script | 用于 pre-commit / CI 的快速离线正则表达式扫描。兼容 macOS bash 3.2。 |
### 参考文档
该 skill 附带八份深入的参考文档(约 50 页的专家级内容):
- **vulnerability-taxonomies.md** — OWASP Top 10 (2021)、API Top 10 (2023)、Mobile Top 10 (2024)、LLM Top 10 (2025)、CWE Top 25 (2024)、CISA KEV 常见漏洞类、DBIR 主要攻击向量
- **language-patterns.md** — JS/TS、Python、Go、Rust、Java/Spring、Ruby/Rails、PHP——包含漏洞代码与修复代码对,按 ORM 分类的 SQLi 参考
- **frontend-patterns.md** — React、Next.js(Server Actions、middleware、hydration)、Vue、Svelte、浏览器特定问题
- **infrastructure-patterns.md** — AWS、GCP、Azure、Docker、Kubernetes、Terraform、GitHub Actions、GitLab CI
- **secrets-patterns.md** — 针对超过 25 种密钥类型的正则表达式目录
- **case-studies.md** — Log4Shell、Spring4Shell、MOVEit、XZ 后门、Polyfill.io、Snowflake、Ivanti、regreSSHion、Next.js CVE-2025-29927、tj-actions 供应链、近期的 agent CVE
- **tooling.md** — Semgrep、CodeQL、Snyk、Trivy、Gitleaks、OSV、govulncheck、Brakeman、Checkov、kube-bench、MobSF
- **threat-modeling.md** — 完整的 10 问威胁建模规范
## 安装说明
此代码库是唯一的事实来源。`install.sh` 会将 skill 和 agent 软链接到所有受支持的编辑器中,因此在此处执行 `git pull` 即可到处更新它们——没有副本,没有版本偏移。
```
git clone https://github.com/subkoks/blackterminal-security.git
cd blackterminal-security
./install.sh # detect installed editors, symlink skills + agent
./install.sh --dry-run # preview actions
./install.sh --with-hooks # also install the pre-commit scan hook in this repo
./install.sh --uninstall # remove all symlinks
```
它将仅为机器上存在的编辑器进行配置连接:
| 目标平台 | 路径 |
|--------|------|
| Cursor(标准源) | `~/.cursor/skills/blackterminal-security`、`~/.cursor/skills/security-audit` |
| Claude Code(skills) | `~/.claude/skills/*` → Cursor 标准源 |
| Claude Code(agent) | `~/.claude/agents/security-auditor.md` |
| Windsurf | `~/.codeium/windsurf/skills/*` |
| `~/.agents` 镜像 | `~/.agents/skills/*` |
Codex / Copilot 直接使用 `SKILL.md` —— 只需将它们的指令文件指向此代码库即可。
### 手动安装 / 项目级别
```
mkdir -p .claude/skills .claude/agents
cp -r skills/blackterminal-security .claude/skills/
cp -r skills/security-audit .claude/skills/
cp agents/security-auditor.md .claude/agents/
```
## 工作原理
### 五大规范
安装后,当你的代理读取、写入或审查代码时,`blackterminal-security` skill 就会被激活。你的代理现在会像资深专家一样思考:
1. **寻找信任边界** —— 不受信任的数据进入受信任代码的每一个地方。
2. **将输入与 sink 匹配** —— 每一个 `(source, sink)` 对都是一个潜在的漏洞。
3. **对每条改变状态的路径进行身份验证** —— 身份验证 + 授权(检查所有权,而不仅仅是角色)+ 输入验证。
4. **假设密钥已经泄露** —— 将轮换作为默认计划,并为此做好准备。
5. **失败封闭、大声记录日志、缩小影响范围** —— 默认拒绝、脱敏错误信息、审计日志、网络/IAM 隔离。
### 10 问威胁模型
在宣布代码“安全”之前:
1. 信任边界——数据在哪里跨越?
2. AuthN/AuthZ——是否在服务端并检查了所有权?
3. 输入验证——是否在边界处使用了 schema?
4. 输出编码——上下文是否正确?
5. 密钥——存储安全并执行了轮换吗?
6. 失败模式——失败时是否采取封闭策略?
7. 影响范围——如果被攻破会波及什么?
8. 供应链——是否锁定版本并经过审计?
9. 日志记录——是否捕获了安全事件?PII 是否脱敏?
10. 重放保护——是否实现了幂等性、nonce、CSRF、速率限制?
如果任何一个回答是“我不知道”——该代码就**没有**通过审查。
### 审查模式
```
> /security-audit src/api/users.ts
> /security-audit https://github.com/owner/repo/pull/123
> /security-audit ./terraform/
> /security-audit "all server actions in this app"
```
`security-auditor` agent 将遍历目标,应用全部 20 个审查类别,并生成一份按严重程度排序的报告,包含:
- **文件:行号** —— 确切位置
- **类别** —— 漏洞类别
- **CWE / OWASP** —— 规范 ID
- **代码** —— 原样呈现的漏洞代码片段
- **漏洞利用场景** —— 具体而非泛泛而谈
- **修复方案** —— 补丁后的代码
- **参考** —— 指向 CWE、OWASP 和 BlackTerminal Security 参考的链接
### 快速离线扫描
```
./scripts/scan.sh ./src # exit 0 clean, 1 findings, 2 usage
```
将其用作 pre-commit 的门禁(`./install.sh --with_hooks`)或在 CI 中使用——参见 `.github/workflows/security-scan.yml`。
## 何时使用
如果你的代理符合以下情况,请安装此工具:
- 编写任何生产环境代码
- 审查 PR 或 diff
- 生成基础设施即代码(Terraform、Kubernetes、Dockerfiles)
- 修改 CI/CD 配置(GitHub Actions、GitLab CI)
- 重构身份验证 / 授权 / 支付代码
- 在任何代码路径中处理用户输入
- 编写 Server Actions、RPC handler、API endpoint
- 接触任何包含 `eval`、`exec`、`query`、`fetch`、`redirect`、文件路径或密钥的代码
如果你的代理只编写纯函数和单元测试,你可能不需要这个。**除此之外的其他人都需要。**
## 项目布局
```
blackterminal-security/
├── .claude-plugin/
│ └── plugin.json
├── .github/
│ └── workflows/
│ └── security-scan.yml
├── skills/
│ ├── blackterminal-security/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── vulnerability-taxonomies.md
│ │ ├── language-patterns.md
│ │ ├── frontend-patterns.md
│ │ ├── infrastructure-patterns.md
│ │ ├── secrets-patterns.md
│ │ ├── case-studies.md
│ │ ├── tooling.md
│ │ └── threat-modeling.md
│ └── security-audit/
│ └── SKILL.md
├── agents/
│ └── security-auditor.md
├── hooks/
│ └── pre-commit
├── scripts/
│ └── scan.sh
└── install.sh
```
## 兼容性
使用受 30 多种 AI 编程工具支持的标准 **SKILL.md / agent** 包格式。
| 工具 | Skills | 子 Agent | 备注 |
|------|--------|----------|-------|
| Claude Code | ✅ | ✅ | 全面支持 skill + agent |
| Cursor | ✅ | — | `~/.cursor/skills/` |
| Windsurf | ✅ | — | `~/.codeium/windsurf/skills/` |
| OpenAI Codex | ✅ | — | Skill 格式 |
| Gemini CLI | ✅ | — | Skill 格式 |
| Cline / Roo Code | ✅ | — | Skill 格式 |
| GitHub Copilot | ✅ | — | 通过 `.github/copilot-instructions.md` 引用 |
| Continue.dev | ✅ | — | Skill 格式 |
| Goose | ✅ | — | Skill 格式 |
## 它不能做什么
- **它不是 SAST 工具。** 它是一种*思考*技能。请将其与 Semgrep / CodeQL / Snyk / Trivy 搭配使用——该 skill 知道如何调用它们并整合输出。
- **它不是绝对的保证。** 安全是分层实现的。此 skill 能让你的代理表现得更好;但不能保证你的代码绝对无法攻破。
- **不能取代人工审查。** 在高风险流程(支付、身份验证、加密、IAM)中尤其如此。
- **它不是运行时防御。** 它捕获的是代码编写阶段的问题。WAF、沙箱和可观测性由其他层面的工具负责。
它是你技术栈中的一层。请将它与其他层级结合使用:CI 中的 SAST、依赖扫描、密钥扫描、容器扫描、IaC 扫描、DAST、运行时可观测性,以及针对高风险变更的人工安全审查。
## 权威参考
此 skill 综合了以下来源的指导:
- [OWASP Top 10 (2021)](https://owasp.org/Top10/)
- [OWASP API 安全 Top 10 (2023)](https://owasp.org/API-Security/editions/2023/en/0x11-t10/)
- [OWASP 移动应用 Top 10 (2024)](https://owasp.org/www-project-mobile-top-10/)
- [OWASP LLM Top 10 (2025)](https://genai.owasp.org/llm-top-10/)
- [CWE Top 25 (2024)](https://cwe.mitre.org/top25/archive/2024/2024_cwe_top25.html)
- [CISA 已知被利用漏洞](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [Verizon DBIR](https://www.verizon.com/business/resources/reports/dbir/)
- [NIST NVD](https://nvd.nist.gov/)
- [CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks/)
- [NSA/CISA Kubernetes 加固指南 v1.2](https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF)
- [GitHub Actions 安全加固](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions)
- [OWASP 速查表系列](https://cheatsheetseries.owasp.org/)
## 许可证
MIT。详见 [许可证](LICENSE)。
*BlackTerminal Security。发现漏洞。安全交付。*
标签:AI编程助手, DevSecOps, 上游代理, 代码安全审计, 安全开发生命周期, 应用安全, 错误基检测, 静态代码分析