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代码分析, 代码安全审计, 加密, 动态分析, 安全检测工具, 数据可视化, 漏洞扫描器, 逆向工具, 错误基检测, 静态代码分析