关于 security-auditor
security-auditor 是面向开发团队的代码库安全扫描技能,适用于发布准备和变更审查。它结合依赖项、机密信息和静态检查,并提供发现项排序与修复指引。
主要功能
- 01扫描依赖项漏洞
- 02检测机密信息和凭据
- 03开展 OWASP 静态检查
- 04执行语言专项漏洞检查
- 05生成统一安全报告
- 06提供分级和修复指引
适用场景
- 01部署前审计项目
- 02检查依赖项中的已知漏洞
- 03查找代码库中的机密信息
- 04审查拉取请求中的安全问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill security-auditor安装后在 Claude Code 中输入/security-auditor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.claude-plugin/plugin.jsonreferences/owasp-top-10-2024.mdscripts/detect-secrets.shfull-audit.showasp-check.py详细介绍
安全审计工具
为代码库提供全面的安全扫描。在漏洞演变为安全事件之前将其识别出来。重点提供可执行的发现结果和修复指导。
适用场景
适用于:
- 部署前安全审计
- 依赖项漏洞扫描
- 密钥/凭据泄露检测
- 代码级 SAST(静态应用安全测试)
- 面向利益相关方的安全态势报告
- OWASP Top 10 合规性检查
- PR 前安全审查
不适用于:
- 运行时安全(WAF、速率限制)——请使用基础设施工具
- 网络安全/防火墙规则——请使用云/DevOps 技能
- SOC2/HIPAA/PCI 合规性——需要法律/组织层面的流程
- 执行渗透测试——这是检测,不是利用漏洞
快速开始
完整安全审计
# Run comprehensive scan
./scripts/full-audit.sh /path/to/project
# Output: security-report.json + summary
快速检查
# Dependency vulnerabilities only
npm audit --json > deps-audit.json
# Secret detection only
./scripts/detect-secrets.sh /path/to/project
# OWASP check specific file
./scripts/owasp-check.py /path/to/file.js
核心扫描能力
1. 依赖项扫描
| 包管理器 | 命令 | 严重性级别 |
|---|---|---|
| npm | npm audit --json | critical、high、moderate、low |
| yarn | yarn audit --json | 与 npm 相同 |
| pip | pip-audit --format json | critical、high、medium、low |
| cargo | cargo audit --json | 相同 |
决策树:
Critical severity found?
├── YES → Block deployment, immediate fix required
│ └── Check if patch available → npm audit fix --force
├── NO → High severity?
├── YES → Fix within sprint, document if deferred
└── NO → Low/Moderate → Track, fix during maintenance
2. 密钥检测
高风险模式:
- API 密钥:
/[A-Za-z0-9_]{20,}/附近出现“key”“api”“secret” - AWS 凭据:
AKIA[0-9A-Z]{16} - 私钥:
-----BEGIN (RSA|EC|OPENSSH) PRIVATE KEY----- - JWT 令牌:
eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+ - 连接字符串:
://[^:]+:[^@]+@
熵分析:
- 长度超过 20 个字符的字符串,香农熵 > 4.5 = 可疑
- 源代码中的 Base64 编码数据块 = 需要调查
误报处理:
Secret-like pattern found?
├── In test file? → Lower severity, document
├── In example/docs? → Check if placeholder
├── High entropy + near "password"/"secret" → High confidence
└── In .env.example? → Acceptable if placeholder values
3. OWASP Top 10 静态分析
| # | 漏洞 | 检测模式 |
|---|---|---|
| A01 | 访问控制失效 | 路由缺少身份验证检查 |
| A02 | 加密机制失效 | 使用弱算法(MD5、SHA1 用于密码) |
| A03 | 注入 | 未参数化的查询、eval()、innerHTML |
| A04 | 不安全设计 | 硬编码凭据、缺少速率限制 |
| A05 | 安全配置错误 | 生产环境启用调试模式、默认凭据 |
| A06 | 易受攻击的组件 | 依赖项中存在已知 CVE |
| A07 | 身份验证失效 | 密码策略薄弱、会话问题 |
| A08 | 软件和数据完整性失效 | 未签名更新、不可信反序列化 |
| A09 | 安全日志和监控失效 | 日志中包含敏感数据、缺少审计记录 |
| A10 | SSRF | 将未经验证的 URL 输入传递给 fetch/request |
4. 特定语言检查
JavaScript/TypeScript:
eval()、new Function()- 代码注入innerHTML、outerHTML- XSS 攻击向量document.write()- 基于 DOM 的 XSSchild_process.exec()接收用户输入 - 命令注入- 未设置超时的正则表达式 - ReDoS 漏洞
Python:
pickle.loads()处理不可信数据 - 任意代码执行yaml.load()未设置Loader=SafeLoader- 代码注入subprocess.shell=True- 命令注入eval()、exec()- 代码注入- SQL 字符串拼接 - SQL 注入
SQL:
- 查询中使用字符串拼接 - SQL 注入
LIKE '%' + input + '%'- 通过通配符注入- 缺少参数化 - 严重漏洞
反模式
反模式:隐蔽即安全
表现形式:“没人会发现这个硬编码密码” 错误原因:源代码中的密钥最终总会泄露 应采取的做法:使用环境变量、密钥管理器,不要硬编码任何密钥
反模式:审计疲劳
表现形式:发现 500 个问题,全都标为“中等”,团队对此置之不理 错误原因:关键问题被大量噪声掩盖 应采取的做法:按可利用性排序,先处理严重/高危问题
反模式:不求甚解地修复
表现形式:未经审查就运行 npm audit fix --force
错误原因:可能引入破坏性变更,且没有解决根本原因
应采取的做法:审查每项修复,了解漏洞,并在修复后进行测试
反模式:一次性审计
表现:“我们去年做过安全审计” 为什么不对:每天都会出现新的 CVE,代码也在不断变化 替代方案:集成到 CI/CD 中,至少每周自动扫描一次
安全报告格式
{
"summary": {
"critical": 0,
"high": 2,
"medium": 5,
"low": 12,
"informational": 8
},
"findings": [
{
"id": "SEC-001",
"severity": "high",
"category": "A03:Injection",
"title": "SQL Injection in user search",
"location": "src/api/users.js:45",
"description": "User input concatenated directly into SQL query",
"evidence": "const query = `SELECT * FROM users WHERE name = '${input}'`",
"remediation": "Use parameterized queries: db.query('SELECT * FROM users WHERE name = $1', [input])",
"references": ["https://owasp.org/www-community/attacks/SQL_Injection"]
}
],
"recommendations": [
"Implement parameterized queries across all database access",
"Add input validation layer",
"Enable SQL query logging for monitoring"
]
}
CI/CD 集成
GitHub Actions 示例
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run security audit
run: |
npm audit --json > audit.json
./scripts/detect-secrets.sh . > secrets.json
./scripts/generate-report.py
- name: Fail on critical
run: |
if jq '.summary.critical > 0' report.json; then
echo "Critical vulnerabilities found!"
exit 1
fi
脚本(位于 scripts/ 文件夹中)
| 脚本 | 用途 |
|---|---|
full-audit.sh | 全面的安全扫描 |
detect-secrets.sh | 高熵字符串和模式检测 |
owasp-check.py | OWASP Top 10 静态分析 |
generate-report.py | 将发现的问题汇总为统一报告 |
专家与新手的做法
| 新手 | 专家 |
|---|---|
| 发布前只运行一次审计 | 集成到 CI/CD 中,每次提交都运行 |
| 只关注工具输出 | 理解漏洞的上下文 |
| 要么全部修复,要么一项不修 | 根据可利用性进行分级处理 |
| 只使用一个扫描器 | 组合使用多个工具 |
| 忽略误报 | 调整检测规则 |
成功指标
| 指标 | 目标 |
|---|---|
| 生产环境上线前的严重/高危问题 | 0 |
| 严重问题的平均修复时间 | < 24 小时 |
| 误报率 | < 10% |
| 扫描覆盖率 | 100% 的可部署代码 |
参考文件
references/owasp-top-10-2024.md- OWASP 详细指南references/secret-patterns.md- 全面的正则表达式模式references/remediation-playbook.md- 按漏洞类型分类的修复指南references/ci-cd-templates.md- 集成示例scripts/- 可运行的安全扫描脚本
检测内容:依赖项 CVE | 密钥泄露 | 注入漏洞 | OWASP 违规 | 安全配置错误
搭配使用:site-reliability-engineer(部署门禁)| code-review(PR 安全检查)
评论
支持 Markdown