用途:对后端代码库执行安全审计,重点排查可被外部攻击者利用的漏洞,按固定类别逐项检查。
主要能力与审计范围:
- SQL 与查询性能(慢查询导致 DoS):扫描 src/query-builders/ 及 src/controllers/、src/utils/ 中的原生 SQL,检查 CTE 物化(如 CTE 包装层上的 ORDER BY 是否在 LIMIT 前强制全量物化排序)、缺失 LIMIT 的无界结果、无终止保护的递归 CTE、顺序标量子查询引起的 N+1 执行、以及对照 Prisma schema 检查 WHERE/ORDER BY 列的缺失索引。每项需说明漏洞、具体利用步骤、影响(连接池耗尽、CPU 饱和、内存等)与建议修复。
- 连接池耗尽:检查 src/utils/connect.ts 与数据库配置,确认 Prisma 连接池是否显式配置、是否设置 statement_timeout、是否存在长期占用连接、并发请求是否可能耗尽连接池。
- 限流缺口:检查 src/index.ts 与 src/routes/ 下所有路由,确认是否全局限流、昂贵端点是否有更严格限制、限流是否可被绕过。
- 输入校验与注入:检查 src/controllers/ 与路由定义,确认用户输入是否校验、Prisma.raw() 是否拼接用户值、SQL 是否字符串拼接。
- 非 SQL 资源耗尽:响应体是否有界、外部 API 调用是否有超时、server.requestTimeout 是否合适、是否存在昂贵计算。
- 信息泄露:错误响应是否泄露堆栈/路径/数据库信息,/health 是否暴露敏感信息,是否存在可被攻击者启用的调试模式。
输出格式:按优先级列出 Finding,标注严重级别、位置 file:line、漏洞说明、利用场景、影响与建议修复;某类别无问题则说明已检查且无发现。
限制与备注:无官方安装或运行命令资料;已知历史漏洞(2026-03)为 buildKeysQuery(src/query-builders/keys.ts)递归 CTE 包装层的 ORDER BY 导致全量物化,可经连接池耗尽触发 DoS,修复方式为删除冗余 ORDER BY。