代码安全审计Skill code-safety-audit

代码安全扫描工具,提供依赖漏洞扫描、密钥泄露检测和OWASP安全模式检测三大能力,帮助识别项目中的安全风险。

安全审计 0 次安装 2 次浏览 更新于 7/8/2026

name: code-safety-audit description: “扫描代码安全漏洞,检测依赖漏洞、密钥泄露和OWASP安全模式。当用户提到安全扫描、漏洞检测、依赖审计、密钥泄露、API key、OWASP、npm audit、pip-audit或SQL注入/XSS等关键词时触发。” license: MIT

代码安全审计

代码安全扫描工具,提供三大扫描能力:

  1. 依赖漏洞扫描 — 自动检测 npm / pip 依赖中的已知漏洞
  2. 密钥泄露检测 — 通过正则匹配 + 香农熵值分析发现硬编码的密钥、Token、密码
  3. OWASP 模式检测 — 识别 SQL 注入、XSS、命令注入、不安全反序列化等常见安全反模式

快速开始

# 扫描当前目录(全部检查项)
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 .

# 只显示 high 及以上严重级别
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 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... 格式

香农熵值分析:对代码中的字符串常量计算信息熵(阈值 > 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: 安全配置错误 Debug 模式开启、CORS 通配符、绑定 0.0.0.0
A08: 完整性失败 不安全反序列化 (pickle/yaml.load/marshal/unserialize)
A10: SSRF 用户输入直接用于 HTTP 请求

支持语言:Python、JavaScript/TypeScript、Java、PHP、Ruby、Go 等。

参数说明

参数 说明 默认值
TARGET 扫描目标目录 当前目录
--mode MODE 扫描模式:alldepssecretsowasp all
--format FORMAT 输出格式:textjson text
--output FILE 输出文件路径 stdout
--severity LEVEL 最低报告级别:lowmediumhighcritical low
--exclude-dir DIR 额外排除的目录(可重复使用) -
--max-file-kb SIZE 单文件最大扫描大小 (KB) 512
-h, --help 显示帮助 -

输出格式

文本输出(默认)

=== 安全扫描报告 ===
目标: /path/to/project
模块: deps, secrets, owasp

[严重] AWS Access Key ID
  文件: src/config.py:15
  代码: AWS_KEY = "AKIAIOSFODNN7EXAMPLE"

[高危] SQL 注入 (f-string)
  文件: src/db.py:42
  代码: cursor.execute(f"SELECT * FROM users WHERE id={user_id}")

--- 摘要 ---
严重: 1 | 高危: 1 | 中危: 0 | 低危: 0
总发现数: 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 项目)
  • 如缺少审计工具,该模块会跳过并给出提示,不影响其他模块运行