Skip to content

内置规则

codescan 内置 40+ 条规则,涵盖六个类别。使用 codescan --list-rules 查看完整列表(包括已加载的自定义规则)。

SECRET — 硬编码密钥

ID严重性描述
SECRET001error硬编码密码赋值
SECRET002error通用密钥 / API 密钥赋值
SECRET003errorAWS 访问密钥(AKIA...
SECRET004errorAWS 秘密密钥
SECRET005error通用 Bearer / Auth Token
SECRET006errorURL 中的 Basic Auth 凭证
SECRET007error私钥 PEM 头部
SECRET008errorGitHub 个人访问令牌
SECRET009errorSlack Webhook URL
SECRET010errorStripe 密钥
SECRET011errorStripe 可发布密钥
SECRET012warningTwilio 账户 SID
SECRET013warningTwilio Auth Token
SECRET014errorGoogle API 密钥
SECRET015errorSendGrid API 密钥
SECRET016errorJWT Token 字面量
SECRET017warning含凭证的数据库连接字符串
SECRET018warningSSH 私钥头部
SECRET019warningPGP 私钥头部
SECRET020warning通用 token = "..." 赋值
SECRET021warning通用 key = "..." 赋值
SECRET022warning通用 secret = "..." 赋值
SECRET023warningTelegram Bot Token
SECRET024error.npmrc 中的 npm Auth Token

EXPLOIT — 漏洞模式

ID严重性描述
EXPLOIT001error字符串拼接导致的 SQL 注入
EXPLOIT002error字符串拼接导致的 OS 命令注入
EXPLOIT003error../ 路径穿越
EXPLOIT004erroreval() 不受信任输入
EXPLOIT005errorPickle / 不安全反序列化
EXPLOIT006warningXML 外部实体(XXE)— FEATURE_EXTERNAL_GENERAL_ENTITIES
EXPLOIT007errorLoader 的 YAML load()(任意代码执行)
EXPLOIT008warning服务器端模板注入风险
EXPLOIT009errorinnerHTML / outerHTML 赋值(XSS)
EXPLOIT010errordocument.write() 不受信任输入(XSS)
EXPLOIT011warning带变量的 exec() / execSync()(命令注入)
EXPLOIT012warning带 shell 选项的 child_process.spawn
EXPLOIT013warning不安全的 subprocess.Popen(shell=True)
EXPLOIT014warningPython 2 中的 input()(代码执行)
EXPLOIT015warningopen() / 文件访问使用用户控制路径
EXPLOIT016warning正则拒绝服务(ReDoS)模式
EXPLOIT017warningassert 语句中的硬编码凭证
EXPLOIT018error通过 __proto__ 的原型污染
EXPLOIT019warningdangerouslySetInnerHTML(React XSS)
EXPLOIT020warning未转义用户输入导致的日志注入
EXPLOIT021error原型污染赋值模式
EXPLOIT022warning用户控制 URL 导致的未验证重定向
EXPLOIT023warningSSRF 风险 — 使用用户控制 URL 的 HTTP 请求
EXPLOIT024warning批量赋值 / 用户输入的对象展开

CRYPTO — 密码学问题

ID严重性描述
CRYPTO001warning使用 MD5
CRYPTO002warning使用 SHA-1
CRYPTO003error使用 DES / 3DES
CRYPTO004error使用 RC4
CRYPTO005errorECB 加密模式
CRYPTO006warning弱 RSA 密钥长度(< 2048 位)
CRYPTO007error硬编码加密密钥或 IV
CRYPTO008error安全敏感场景使用 Math.random()
CRYPTO009error安全敏感场景使用 random.random()
CRYPTO010errorTLS/SSL 证书验证被禁用
CRYPTO011warning使用 Blowfish 算法

UNICODE — Unicode 攻击

ID严重性描述
UNICODE001error双向控制字符(Trojan Source,CVE-2021-42574)
UNICODE002warning代码中的零宽字符
UNICODE003warning同形字符(西里尔文/希腊文外观相似字符)

INFRA — 基础设施 / 配置

ID严重性描述
INFRA001warning硬编码私有/RFC-1918 IP 地址
INFRA002warning带安全隐患的 TODO/FIXME/HACK/XXX 注释
INFRA003info遗留在代码中的调试/详细日志
INFRA004info明文 HTTP URL(非 localhost)

ENTROPY — 高熵字符串

ID严重性描述
ENTROPY001warning密钥关键字附近的高熵字符串(Shannon 熵 ≥ 4.5 bits/char)

禁用规则

bash
# CLI
codescan --skip-rules INFRA004,INFRA003 .

# codescan.toml
[rules]
disabled = ["INFRA004", "INFRA003"]

覆盖严重性

toml
# codescan.toml
[rules.severity_overrides]
CRYPTO001 = "error"
INFRA004  = "warning"

添加自定义规则

详见自定义规则,了解如何编写和加载自定义规则定义。