noreplywmsplaybook-pixel/prbl-scanner
GitHub: noreplywmsplaybook-pixel/prbl-scanner
一款开源的 AI 生成代码漏洞扫描器,专攻 LLM 系统性产生且传统扫描器难以覆盖的安全缺陷。
Stars: 0 | Forks: 0
# prbl-scanner
针对 AI 生成代码的开源漏洞扫描器。
Prbl 能够发现 AI 编码工具系统性产生的安全漏洞——这些模式的存在是因为 LLM 的训练方式,而非开发者的失误。
## 检测内容
- **PRBL-C001** — 硬编码凭证和兜底密钥
`CWE-798 · OWASP A07 · 第 7 大最严重的 Web 安全风险`
检测直接硬编码在源代码中的 API key、密码和 token。同时捕获 AI 特有的兜底模式:
`process.env.SECRET || 'default_value'`,在缺少环境变量的部署中,该兜底值会成为实际的生效密钥。
- **PRBL-R001** — 安全上下文中的弱随机性
`CWE-338 · OWASP A04 · 第 4 大最严重的 Web 安全风险`
标记用于生成 token、session ID、密码或 OTP 时的 Math.random()、random.random() 及相关函数。这些函数在密码学上是不安全的——它们的输出是可预测的。
- **PRBL-R002** — 对安全关键值进行不安全的相等比较
`CWE-208 · OWASP A02 · 第 2 大最严重的 Web 安全风险`
检测使用 == 或 === 而非常数时间比较函数进行比较的 HMAC 摘要、webhook 签名和验证 token。字符串相等比较会在遇到第一个不同的字节时发生短路,从而允许计时攻击按字节逐个重构出预期值。
- **PRBL-R003** — AES-GCM 解密缺少认证标签长度强制
`CWE-345 · OWASP A02 · 第 2 大最严重的 Web 安全风险`
检测使用 AES-GCM 模式(`aes-128-gcm`、`aes-192-gcm`、`aes-256-gcm`)的 `crypto.createDecipheriv()`,且在其后的 20 行内未调用 `setAuthTagLength()` 的情况。
如果没有显式的标签长度强制,攻击者可以提供被截断的
认证标签(例如 4 字节而不是 16 字节),从而削弱 GCM 完整性验证
并实现身份验证绕过。仅适用于 JavaScript/TypeScript。
- **PRBL-I001** — 包含多行模式的 SQL injection
`CWE-89 · OWASP A05 · 第 5 大最严重的 Web 安全风险`
检测被拼接到或内插到 SQL 查询中的用户输入,
包括大多数扫描器会遗漏的多行查询构建模式。
- **PRBL-I002** — Command injection
`CWE-78 · OWASP A05 · 第 5 大最严重的 Web 安全风险`
检测通过 exec、spawn、system、
popen、subprocess.run 和 shell=True 传递给 shell 命令的用户输入。
- **PRBL-I003** — 代码注入 (eval/exec)
`CWE-94/95 · OWASP A05 · 第 5 大最严重的 Web 安全风险`
检测传递给 eval()、exec()、new Function() 或
compile() 的用户输入。赋予攻击者在服务器上执行任意代码的权限。
- **PRBL-A002** — 未验证签名的 JWT 解码
`CWE-347 · OWASP A07 · 第 7 大最严重的 Web 安全风险`
检测在 JavaScript(jsonwebtoken 库)中使用 `jwt.decode()` 但在同一文件中未使用
`jwt.verify()` 的情况,以及 Python pyjwt 的不安全形式:
`verify_signature=False`、`algorithms=['none']` 和单参数解码
(无 key)。完全绕过身份验证——攻击者可以伪造任何 JWT
payload,并绕过任何依赖 decode 而非 verify 的身份检查。
- **PRBL-C003** — 禁用 TLS/证书验证
`CWE-295 · OWASP A02 · 第 2 大最严重的 Web 安全风险`
检测 `rejectUnauthorized: false` (JS/TS)、`NODE_TLS_REJECT_UNAUTHORIZED=0`、
`verify=False`、`ssl._create_unverified_context()` 和 `ssl.CERT_NONE` (Python)。
允许针对通过该客户端的所有连接进行中间人攻击。
当在周围行中检测到仅用于开发的条件守卫
(`if DEBUG:`、`NODE_ENV === 'development'`)时,严重性会自动降级为 LOW。
- **PRBL-A001** — 缺少访问控制(包括 serverless handler)
`CWE-862 · OWASP A01 · 第 1 大最严重的 Web 安全风险`
检测执行敏感
操作(数据库访问、支付处理、用户数据)但没有
可见身份验证或授权检查的路由 handler 和 serverless 函数。
- **PRBL-P001** — 幻觉包引用
`新兴风险 — 无 CWE · OWASP A03 · 供应链故障`
检测在 PyPI 或 npm 上不存在的包的导入。AI
模型会编造听起来似是而非的包名。攻击者
如果使用恶意 payload 注册该名称,就会在
每台运行安装的机器上获得代码执行权限。
## 安全标准映射
每一条 Prbl 规则都映射到既定的安全标准。当开发者
询问 AI 工具“这个发现有多严重?”时——CWE 和 OWASP
分类为其提供了准确回答的完整上下文。
| 规则 | 名称 | CWE | OWASP 2025 | OWASP 排名 |
|------|------|-----|------------|------------|
| PRBL-C001 | 硬编码凭证 | CWE-798 | A07 — 身份验证失败 | #7 |
| PRBL-R001 | 弱随机性 | CWE-338 | A02 — 密码学失败 | #2 |
| PRBL-R002 | 不安全的相等比较 | CWE-208 | A02 — 密码学失败 | #2 |
| PRBL-R003 | AES-GCM 缺少认证标签长度 | CWE-345 | A02 — 密码学失败 | #2 |
| PRBL-I001 | SQL 注入 | CWE-89 | A05 — 注入 | #5 |
| PRBL-I002 | 命令注入 | CWE-78 | A05 — 注入 | #5 |
| PRBL-I003 | 代码注入 | CWE-94/95 | A05 — 注入 | #5 |
| PRBL-I005 | 原型污染(受污染的括号赋值) | CWE-1321 | A03 — 注入 | #3 |
| PRBL-A001 | 缺少访问控制 | CWE-862 | A01 — 访问控制失效 | #1 |
| PRBL-A002 | 未验证签名的 JWT | CWE-347 | A07 — 身份验证失败 | #7 |
| PRBL-C003 | 禁用 TLS 证书验证 | CWE-295 | A02 — 密码学失败 | #2 |
| PRBL-P001 | 幻觉包 | 新兴风险 — 无 CWE | A03 — 供应链故障 | #3 |
### 为什么 PRBL-P001 没有 CWE
幻觉包引用是 AI 编码工具创造的一种新的漏洞类别。标准
CWE 扫描器从定义上就无法检测到它——
没有对应的 CWE 条目,因为这种失败模式在 LLM 大规模生成代码之前并不存在。Prbl 是唯一
能捕获它的扫描器。
PRBL-P001 映射到 OWASP A03(供应链故障),因为恶意
行为者可以在 PyPI 或 npm 上注册该幻觉包名——从而将每个使用该 AI 生成导入的项目变成非自愿的恶意软件分发点。
## 为什么开源
扫描代码的安全工具应该是可审计的。
这些是 Prbl 使用的确切规则。没有任何隐藏。
## 安装
pip install prbl-scanner
## 用法
prbl-scanner scan ./myproject
## JSON 输出
每一条发现都包含用于下游工具链的 CWE 和 OWASP 字段:
```
{
"rule_id": "PRBL-C001",
"title": "Hardcoded credential: Stripe live secret key",
"cwe": "CWE-798",
"owasp_category": "A07 — Authentication Failures",
"owasp_rank": 7,
"severity": "HIGH",
"file": "auth/stripe.py",
"line": 14,
"detail": "...",
"fix": "..."
}
```
## 验证依据
涵盖 Django、FastAPI、Express、NestJS
和全栈代码库的 74 个公开仓库。6.25% 的误报率。
## 许可证
MIT
标签:AI代码分析, 代码安全审计, 加密, 动态分析, 安全检测工具, 数据可视化, 漏洞扫描器, 逆向工具, 错误基检测, 静态代码分析