下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/user_4bfc9f62--code-security-audit-v2.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_4bfc9f62/code-security-audit-v2。基于内置 78 条规则做静态安全扫描(SAST),检测 SQL注入 / 命令执行 / XSS / 硬编码密钥等 20 类漏洞;支持 8 种编程语言,自动识别语言,标注严重等级(严重/高危/中危/低危),输出修复方案与结构化报告。
阅读全文 (展开查看完整说明)
概述
能力说明
- 本技能对提交的代码做静态安全扫描,定位潜在漏洞并给修复建议。
- 实际内置 78 条规则 / 20 类漏洞 / 8 种语言;单行正则匹配,误报可控。
- 命令行入口
scripts/sec_check.py,同时用于本地与自动化流程。
使用方法
对话触发:让 K「检测这段代码安全 / 扫描代码漏洞 / 做一次安全审计」即可,K 自动调脚本出报告。
命令行直调:
python sec_check.py --code "你的代码" # 语言 auto 识别
python sec_check.py --file path/to/app.py --lang python # 指定语言
python sec_check.py --file path/app.js --json # JSON 输出
python sec_check.py --code "..." --lang auto退出码:0=未命中 1=仅中低危 2=存在严重/高危 3=参数错误。
语言别名自动归一化:py→python、js/ts/typescript→javascript、go/golang→go、rb→ruby、cpp/c++。未指定语言时用 detect_lang 启发式识别(按 import/func/package 等特征投票)。
支持语言(实测规则数)
| 语言 | 规则数 |
|---|---|
| Python | 29 |
| JavaScript(含 TS) | 18 |
| Java | 10 |
| Go | 7 |
| Ruby | 5 |
| C++ | 7 |
| C | 9 |
| Rust | 3 |
漏洞分类(20 类,共 78 条)
命令执行 18 · 弱加密 5 · 数据查询安全 8 · 随机数 6 · 脚本防护 5 · 信息保护 6 · 数据序列化 4 · 文件操作 3 · 请求校验 2 · 服务请求 3 · 实体解析 2 · 越权访问 1 · 缓冲区 5 · 竞态条件 1 · 内存管理 2 · 整数处理 1 · 重定向 2 · 查询注入 1 · 格式化 1 · 配置错误 2
使用案例(真实运行输出)
案例 1:Python 代码 · 命令执行 + 硬编码密码
命令:
python scripts/sec_check.py --code 'import os
def run(cmd):
os.system("ls " + cmd)
password = "admin123"'实际输出:
==============================================
代码安全审计报告
==============================================
语言: python | 代码 4 行 | 命中 2 处
等级分布: 严重 1 / 高危 1 / 中危 0 / 低危 0
【严重】
- [PY-COMM-001] 使用 os.system 执行系统命令 (第 3 行)
代码: os.system("ls " + cmd)
修复: 改用 subprocess.run(参数列表, shell=False),参数走白名单校验,禁止拼接用户输入
【高危】
- [PY-INFO-002] 硬编码密码 (第 4 行)
代码: password = "admin123"
修复: 凭据不入码;配置中心加密存储或环境变量注入
结论: 存在 1 处严重漏洞,必须修复后再上线案例 2:JavaScript 代码 · eval 任意代码执行
命令:
python scripts/sec_check.py --code 'const q = "SELECT * FROM users WHERE id = " + userId;
eval(userInput);' --lang js实际输出:
==============================================
代码安全审计报告
==============================================
语言: javascript | 代码 2 行 | 命中 1 处
等级分布: 严重 0 / 高危 1 / 中危 0 / 低危 0
【高危】
- [JS-COMM-001] 使用 eval 执行任意代码 (第 2 行)
代码: eval(userInput);
修复: 数据解析用 JSON.parse;动态逻辑改配置驱动
结论: 存在高危漏洞,优先修复案例 3:语言自动识别 · pickle 反序列化
不指定 --lang,由 detect_lang 启发式识别:
python scripts/sec_check.py --code 'import pickle
def load(data):
return pickle.loads(data)' --lang auto实际输出:
==============================================
代码安全审计报告
==============================================
语言: python | 代码 3 行 | 命中 1 处
等级分布: 严重 1 / 高危 0 / 中危 0 / 低危 0
【严重】
- [PY-DESER-001] pickle 反序列化(可执行任意代码) (第 3 行)
代码: return pickle.loads(data)
修复: 不可信数据改 JSON;必须用 pickle 时限制来源并加签名校验
结论: 存在 1 处严重漏洞,必须修复后再上线退出码可接 CI:0=未命中 1=仅中低危 2=存在严重/高危。
典型高危模式:os.system/eval/exec、subprocess shell=True、f-string 拼 SQL、innerHTML=、硬编码密钥(含 AWS AKIA)、verify=False、MD5/SHA1、crypto.createHash('md5')、eval(前端)等。
严重等级
| 等级 | 英文 | 退出码影响 |
|---|---|---|
| 严重 | CRITICAL | 有 CRITICAL 即退出码 2 |
| 高危 | HIGH | 有 HIGH 即退出码 2 |
| 中危 | MEDIUM | 退出码 1 |
| 低危 | LOW | 退出码 1 |
使用流程
编码完成 → 静态扫描 → 查看报告(定位行+修复) → 按建议改码 → 二次扫描回归(退出码0)报告输出
每个命中给出:规则 ID(如 PY-COMM-001)、漏洞类型、严重等级、命中行号、该行代码、修复建议。JSON 模式返回 {language, code_lines, total, by_severity, items[]}。
注意事项
- 静态分析(SAST),覆盖有限,无法检测运行时/复杂数据流漏洞,上线前建议结合人工 review 与动态测试。
- 规则可在
scripts/sec_rules.py增删(结构{id,langs,cat,sev,pat,icase?,title,fix}),改完重启生效。 - 部分正则含 Python 专属写法,前端镜像版个别规则可能被跳过——以后端脚本为权威结果。