zorak1103/secanalyst
GitHub: zorak1103/secanalyst
一款自动化执行 OWASP Top 10 审计并生成结构化报告与静态 PoC 的安全扫描插件。
Stars: 1 | Forks: 0
# secanalyst — Claude Code Security Scanner 插件
自动化 OWASP Top 10 安全审计工具,适用于软件项目。接受本地目录、GitHub URL 或 GitLab URL,并生成包含已验证发现、风险评分和静态概念验证利用代码的结构化报告。
## 功能
1. **克隆** 远程仓库(通过 `gh` 或 `glab`,浅层克隆、LF 安全)
2. **范围防护** — 文件数超过 10000 或大小超过 500 MB 时中止,保护上下文窗口
3. **扫描** 使用 Semgrep SAST、密钥检测 + OSV 扫描器依赖项 CVE
4. **分类筛选** 每个候选发现通过对抗性 **Challenger 代理**(≤ 3 轮)验证,筛除误报
5. **生成静态 PoC** 对确认发现编写静态利用代码,写入磁盘,永不执行
6. **写入报告** `audit//report.md`,包含风险评分、严重性表格、修复建议和争议附录
## 安装
需要支持插件的 Claude Code(≥ 2.0)。
### 从 GitHub 安装
```
/plugin marketplace add zorak1103/secanalyst
/plugin install secanalyst@secanalyst
```
### 从本地克隆安装
```
git clone https://github.com/zorak1103/secanalyst.git
/plugin marketplace add ./secanalyst
/plugin install secanalyst@secanalyst
```
之后如果命令不可用,请运行 `/reload-plugins`。
## 先决条件
以下 CLI 必须在运行扫描前存在于 `PATH` 中:
| 工具 | 用途 | 安装方式 |
|---|---|---|
| `gh` | 克隆 GitHub URL | https://cli.github.com |
| `glab` | 克隆 GitLab URL | https://gitlab.com/gitlab-org/cli |
| `semgrep` | 静态应用安全测试(SAST) | `pip install semgrep` |
| `osv-scanner` | 依赖项 CVE 扫描 | https://google.github.io/osv-scanner |
| `npm` | Node.js 依赖回退 | 随 Node.js 捆绑提供 |
| `pip-audit` | Python 依赖回退 | `pip install pip-audit` |
| `govulncheck` | Go 依赖回退 | `go install golang.org/x/vuln/cmd/govulncheck@latest` |
| `cargo audit` | Rust 依赖回退 | `cargo install cargo-audit` |
仅当扫描远程 URL 时需要 `gh` 和 `glab`,扫描本地路径时不需要。
### 减少权限提示(推荐)
将以下内容添加到 `~/.claude/settings.json` 的 `permissions.allow` 数组中:
```
"Bash(gh repo clone:*)",
"Bash(glab repo clone:*)",
"Bash(osv-scanner:*)",
"Bash(semgrep:*)",
"Bash(npm audit:*)",
"Bash(pip-audit:*)",
"Bash(govulncheck:*)",
"Bash(cargo audit:*)"
```
或运行 `/update-config` 并让 Claude 添加扫描工具权限。
## 用法
```
/secanalyst
```
| 目标类型 | 示例 |
|---|---|
| 本地目录 | `/secanalyst D:/projects/myapp` |
| GitHub URL | `/secanalyst https://github.com/OWASP/NodeGoat` |
| GitLab URL | `/secanalyst https://gitlab.com/owner/repo` |
## 输出
```
/audit//
├── report.md ← human-readable report with Risk Score
├── findings.json ← machine-readable findings + triage logs
├── exploits/
│ └── .py ← static PoC (NOT executed)
└── scan-metadata.json ← tool versions, scope stats, duration
```
### 风险评分
加权公式(0–10):
```
score = min(10, (Critical×10 + High×7 + Medium×4 + Low×1) / verified_count)
```
标签:**严重** ≥ 8 · **高** ≥ 6 · **中** ≥ 4 · **低** ≥ 2 · **极低** < 2
## 架构
三个协同工作的代理 —— 不会修改任何源文件:
| 代理 | 模型 | 角色 |
|---|---|---|
| `security-scanner` | Opus | 协调器:运行所有扫描阶段,分派子代理,写入报告 |
| `security-challenger` | Sonnet | 对抗性审核者 — 为每个发现提供反驳(只读) |
| `security-exploit` | Opus | 编写静态 PoC 利用文件 |
**`secanalyst` 技能**(`skills/secanalyst/SKILL.md`)包含可移植的 OWASP 知识库 — 不含 Claude 专属工具引用,可在其他 LLM 框架中复用。
参考文档位于 `skills/secanalyst/references/`,涵盖所有 OWASP A01–A10 类别以及硬编码密钥,每项包含 问题 / 预防 / 攻击场景 / 检测模式 章节。
## 覆盖的漏洞类别
| OWASP ID | 类别 |
|---|---|
| A01 | 失效的访问控制 |
| A02 | 加密失败 |
| A03 | 注入(SQL、OS 命令、代码执行) |
| A04 | 不安全的设计 |
| A05 | 安全配置错误 |
| A06 | 易受攻击或过时的组件 |
| A07 | 身份识别与认证失败 |
| A08 | 软件与数据完整性失败 |
| A09 | 安全日志与监控失败 |
| A10 | 服务器端请求伪造(SSRF) |
| — | 硬编码密钥 |
## 推荐测试目标
```
# 故意存在漏洞的小型 Node.js 应用
/secanalyst https://github.com/OWASP/NodeGoat
# 故意存在漏洞的 Python 应用
/secanalyst https://github.com/WebGoat/WebGoat
```
## 许可证
MIT — 参见 [LICENSE](LICENSE)。
标签:Claude Code 插件, GitHub 仓库扫描, GitLab 仓库扫描, osv-scanner, OWASP Top 10, PoC 漏洞验证, SAST, SecOps, secret detection, semgrep, 云安全架构, 代码安全扫描, 依赖漏洞扫描, 安全合规, 安全审计插件, 安全报告, 暗色界面, 盲注攻击, 网络代理, 自动化安全审计, 软件供应链安全, 远程方法调用, 静态利用, 静态应用安全测试, 风险评分