安全分析器
对代码库和基础设施进行全面的安全漏洞分析。扫描依赖项(npm, pip, gem, go, cargo)、容器(Docker, Kubernetes)、云IaC(Terraform, CloudFormation),并检测秘密暴露。从OSV.dev获取实时CVE数据,计算风险分数,并生成分阶段的补救计划与TDD验证测试。当用户提到安全扫描、漏洞、CVE、漏洞利用、安全审计、渗透测试、OWASP、加固、依赖审计、容器安全或想要提高安全姿态时使用。
快速开始
当用户请求安全扫描时:
- 运行环境发现:
python .claude/skills/security-analyzer/scripts/discover_env.py . - 将输出保存到
inventory.json - 运行漏洞扫描:
python .claude/skills/security-analyzer/scripts/fetch_vulns.py inventory.json - 将输出保存到
scan_results.json - 生成报告:
python .claude/skills/security-analyzer/scripts/generate_report.py scan_results.json inventory.json
工作流程
第1阶段:环境发现
扫描工作目录以查找:
- 依赖项:
package.json,requirements.txt,Gemfile,go.mod,Cargo.toml,pom.xml - 容器:
Dockerfile,docker-compose.yml,kubernetes/*.yaml - 云IaC:
terraform/*.tf,cloudformation/*.yaml,*.bicep - 秘密:
.env*文件(标记暴露风险,永不记录值)
运行发现脚本:
python .claude/skills/security-analyzer/scripts/discover_env.py /path/to/project > inventory.json
第2阶段:漏洞情报
使用漏洞扫描器获取当前威胁数据:
python .claude/skills/security-analyzer/scripts/fetch_vulns.py inventory.json > scan_results.json
| 来源 | 优先级 | 用途 |
|---|---|---|
| CISA KEV | 1 | 积极利用的漏洞(使用WebSearch) |
| NVD | 2 | CVE详情+CVSS分数(使用WebSearch) |
| GitHub Advisories | 3 | 特定于包的漏洞(使用WebSearch) |
| OSV.dev | 4 | 开源漏洞(脚本中的API) |
对于CISA KEV和额外的上下文,补充:
WebSearch: "CVE-XXXX-YYYY CISA KEV漏洞利用"
第3阶段:风险评分
扫描器使用以下方法计算风险分数:
风险 = (CVSS * 0.3) + (可利用性 * 0.3) + (关键性 * 0.2) + (暴露度 * 0.2)
可利用性:10=CISA KEV, 7=公开漏洞利用, 3=理论
关键性:10=身份验证/支付, 5=核心业务, 2=日志记录
暴露度:10=面向互联网, 5=内部, 2=隔离
第4阶段:分阶段补救
生成包含修复命令和验证测试的报告:
python .claude/skills/security-analyzer/scripts/generate_report.py scan_results.json inventory.json
每个发现包括:
- 漏洞详情+风险分数
- 实际修复代码/补丁(不仅仅是建议)
- 修复前测试(证明漏洞存在)
- 补救单元测试(测试修复代码)
- 修复后验证(证明漏洞已解决)
第5阶段:报告
输出两份报告:
security-report-technical.md— 工程师的完整详情security-report-executive.md— 领导层的摘要
查看references/report-templates.md了解输出结构。
TDD模式
对于每个漏洞,生成三种测试类型:
def test_vuln_exists():
"""修复前通过,修复后失败"""
assert is_vulnerable("组件") == True
def test_fix_works():
"""补救代码的单元测试"""
result = apply_fix(vulnerable_config)
assert result.is_secure()
def test_vuln_resolved():
"""修复前失败,修复后通过"""
assert is_vulnerable("组件") == False
按发现类型修复
| 发现 | 输出 |
|---|---|
| 依赖项CVE | 版本提升命令+锁文件更新 |
| 容器问题 | Dockerfile补丁 |
| IaC配置错误 | Terraform/K8s修复 |
| 代码漏洞 | 源代码补丁+测试 |
| 秘密暴露 | 轮换命令+.gitignore更新 |
示例交互
用户: “在此项目上运行安全扫描”
Claude:
- 发现47个npm依赖项,3个Dockerfiles,2个Terraform配置
- 从OSV.dev获取当前CVE数据
- 识别12个漏洞(2个严重,4个高,6个中等)
- 生成分阶段补救计划:
- 实际修复命令(
npm install lodash@4.17.21) - IaC配置错误的代码补丁
- 证明每个修复工作的TDD测试
- 实际修复命令(
- 输出技术和执行报告