SuperAPI AI 工具集

code-vuln-audit

安全与审计

查看项目

更新于 10-16 02:10

技能介绍

用途

code-vuln-audit 是一款代码安全扫描工具,用于在项目中自动发现三类安全问题:依赖漏洞、密钥泄露和 OWASP 常见安全反模式。它适合在开发、代码审查或提交前对代码库进行快速安全自查。

主要能力

工具包含三个核心扫描模块:

1. 依赖漏洞扫描(deps)

自动检测项目类型并调用相应工具:

项目类型 检测文件 使用工具
Node.js package.json + package-lock.json npm audit
Python requirements.txt / pyproject.toml / Pipfile pip-audit

若未安装对应的审计工具,会显示提示信息而非报错。

2. 密钥泄露检测(secrets)

通过两种方式检测:

正则匹配,覆盖常见密钥格式:

密钥类型 示例模式
AWS Access Key 以 AKIA 开头的 20 位字符串
GitHub Token 以 ghp_ 或 github_pat_ 开头
Slack Token 以 xoxb- 或 xoxp- 开头
Stripe Key 以 sk_live_ 或 pk_live_ 开头
私钥文件 -----BEGIN PRIVATE KEY-----
通用 API Key 形如 api_key = "..."
URL 中的凭据 https://user:pass@host
JWT Token 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 等。

使用方式

快速开始命令:

# 扫描当前目录(全部检查)
python3 scripts/security_scan.py .

# 仅扫描依赖
python3 scripts/security_scan.py --mode deps .

# 仅检测密钥泄露
python3 scripts/security_scan.py --mode secrets /path/to/project

# 仅检测 OWASP 安全模式
python3 scripts/security_scan.py --mode owasp .

# 以 JSON 格式输出报告
python3 scripts/security_scan.py --format json --output report.json .

# 仅显示高严重级别及以上的发现
python3 scripts/security_scan.py --severity high .

参数说明:

参数 说明 默认值
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 扫描器内部错误

适用场景

  • 在开发或代码审查阶段对项目进行快速安全自查。
  • 检查依赖中是否存在已知漏洞。
  • 排查代码中硬编码的密钥、令牌和密码。
  • 识别 SQL 注入、XSS、命令注入、不安全反序列化等常见安全反模式。

限制与前提

  • 需要 Python 3.7+(仅使用标准库)。
  • 依赖扫描需要相应工具:npm(用于 Node.js 项目)、pip-audit(用于 Python 项目)。
  • 若缺少审计工具,该模块会被跳过并给出提示,其他模块继续正常运行。
  • 其他功能、收费、价格、平台或效果信息暂未提供。