关于 code-vuln-audit
一款 Python 命令行安全扫描工具,可检查项目依赖、泄露的秘密信息和 OWASP 相关代码模式,适用于审查代码库的开发者,并支持按严重级别筛选文本或 JSON 结果。
主要功能
- 01审计 npm 和 Python 依赖
- 02通过模式匹配与熵检测秘密信息
- 03查找 OWASP 相关代码模式
- 04选择扫描模块和严重级别阈值
- 05生成文本或 JSON 报告
适用场景
- 01发布前检查项目依赖
- 02查找代码库中提交的凭据
- 03审查注入风险及不安全代码模式
- 04生成机器可读的安全发现结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zebbern/ claude-code-guide --skill code-vuln-audit安装后在 Claude Code 中输入/code-vuln-audit确认已加载。
附带文件LICENSEscripts/security_scan.py
详细介绍
code-vuln-audit
一款代码安全扫描工具,具备三项核心扫描能力:
- 依赖漏洞扫描 — 自动检测 npm / pip 依赖中的已知漏洞
- 机密泄露检测 — 通过正则匹配 + Shannon 熵分析,发现硬编码的机密信息、令牌和密码
- OWASP 模式检测 — 识别常见的安全反模式,例如 SQL 注入、XSS、命令注入和不安全反序列化
快速开始
# Scan the current directory (all checks)
python3 scripts/security_scan.py .
# Scan dependencies only
python3 scripts/security_scan.py --mode deps .
# Detect secret leaks only
python3 scripts/security_scan.py --mode secrets /path/to/project
# Detect OWASP security patterns only
python3 scripts/security_scan.py --mode owasp .
# Output report in JSON format
python3 scripts/security_scan.py --format json --output report.json .
# Only show findings at high severity and above
python3 scripts/security_scan.py --severity high .
扫描模块详情
1. 依赖漏洞扫描(deps)
自动检测项目类型并调用相应工具:
| 项目类型 | 检测文件 | 使用的工具 |
|---|---|---|
| Node.js | package.json + package-lock.json | npm audit |
| Python | requirements.txt / pyproject.toml / Pipfile | pip-audit |
如果未安装相应的审计工具,会显示提示信息,而不是报错。
2. 机密泄露检测(secrets)
通过两种方式进行检测:
正则匹配:涵盖常见的机密信息格式
| 机密信息类型 | 示例模式 |
|---|---|
| AWS 访问密钥 | 以 AKIA 开头的 20 个字符字符串 |
| GitHub 令牌 | 以 ghp_ 或 github_pat_ 开头 |
| Slack 令牌 | 以 xoxb- 或 xoxp- 开头 |
| Stripe 密钥 | 以 sk_live_ 或 pk_live_ 开头 |
| 私钥文件 | -----BEGIN PRIVATE KEY----- |
| 通用 API 密钥 | 类似 api_key = "..." 的格式 |
| URL 中的凭据 | https://user:pass@host |
| JWT 令牌 | eyJ... 格式 |
Shannon 熵分析:计算代码中字符串常量的信息熵(阈值 > 4.5 且长度 >= 20),以发现非标准格式的机密信息。
3. OWASP 模式检测(owasp)
涵盖 OWASP Top 10 中可通过静态分析检测的安全模式:
| OWASP 类别 | 检测模式 |
|---|---|
| A02:加密失效 | 弱哈希(MD5/SHA1)、弱加密算法(DES/RC4) |
| A03:注入 | SQL 注入、命令注入(os.system / subprocess shell / eval / exec)、XSS(innerHTML / document.write / dangerouslySetInnerHTML / v-html) |
| A04:不安全设计 | 路径遍历 |
| A05:安全配置错误 | 启用调试模式、CORS 通配符、绑定到 0.0.0.0 |
| A08:完整性失效 | 不安全反序列化(pickle / yaml.load / marshal / unserialize) |
| A10:SSRF | 用户输入直接传入 HTTP 请求 |
支持的语言:Python、JavaScript/TypeScript、Java、PHP、Ruby、Go 等。
参数
| 参数 | 说明 | 默认值 |
|---|---|---|
TARGET | 要扫描的目录 | 当前目录 |
--mode MODE | 扫描模式:all、deps、secrets、owasp | all |
--format FORMAT | 输出格式:text、json | text |
--output FILE | 输出文件路径 | stdout |
--severity LEVEL | 最低报告级别:low、medium、high、critical | low |
--exclude-dir DIR | 要排除的其他目录(可重复指定) | - |
--max-file-kb SIZE | 要扫描的最大文件大小,单位为 KB | 512 |
-h, --help | 显示帮助信息 | - |
输出格式
文本输出(默认)
=== Security Scan Report ===
Target: /path/to/project
Modules: deps, secrets, owasp
[CRITICAL] AWS Access Key ID
File: src/config.py:15
Code: AWS_KEY = "AKIAIOSFODNN7EXAMPLE"
[HIGH] SQL Injection (f-string)
File: src/db.py:42
Code: cursor.execute(f"SELECT * FROM users WHERE id={user_id}")
--- Summary ---
Critical: 1 | High: 1 | Medium: 0 | Low: 0
Total findings: 2
JSON 输出
{
"target": "/path/to/project",
"scan_time": "2026-04-14T10:30:00",
"findings": [
{
"scanner": "secrets",
"name": "AWS Access Key ID",
"severity": "critical",
"file": "src/config.py",
"line": 15,
"snippet": "AWS_KEY = \"AKIAIOSFODNN7EXAMPLE\"",
"category": "secret-pattern"
}
],
"summary": {"critical": 1, "high": 0, "medium": 0, "low": 0, "total": 1}
}
退出代码
| 退出代码 | 含义 |
|---|---|
0 | 未发现问题 |
1 | 发现问题(至少存在一项安全问题) |
2 | 扫描器内部错误 |
前置条件
- Python 3.7+(仅使用标准库)
- 依赖扫描需要安装相应工具:
npm(用于 Node.js 项目)、pip-audit(用于 Python 项目) - 如果缺少审计工具,将跳过相应模块并显示提示 — 其他模块仍会正常运行
评论
支持 Markdown