| name | security-review |
| description | 审计代码变更中的安全漏洞。审查 diff/PR、加固代码、或涉及注入/XSS/SSRF/密钥/认证/反序列化/路径穿越等安全问题时使用。提供具体检查清单和报告格式;绝不擅自静默修复。 |
| paths | ["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py","**/*.go","**/*.rs","**/*.java","**/*.kt","**/*.swift","**/*.rb","**/*.php","**/*.sql","**/*.yaml","**/*.yml","**/*.toml","**/*.json","**/Dockerfile*","**/*.tf","**/*.tfvars"] |
| priority | high |
安全审查
针对变更集捕捉真实漏洞的聚焦检查清单。先对 diff(实际变更行及其调用的代码)应用,
仅当发现指向别处时才扩大范围。报告发现,不擅自改写代码(除非明确要求)。
威胁检查清单
- 注入 — 不可信输入流入 SQL、Shell、OS 命令、eval、模板引擎或 LDAP。
查找字符串拼接而非参数化查询/参数数组。
- XSS — 用户数据未经转义渲染为 HTML/JS/DOM。检查
innerHTML、
dangerouslySetInnerHTML、未转义的模板插值。
- 认证/授权 — 缺少认证、缺少所有权/权限检查、IDOR(按 id 操作对象却未验证调用方
是否拥有)、越权、信任客户端提供的角色。
- 密钥 — 硬编码的 API Key、Token、密码、私钥或连接串;密钥被记录或提交。
应从 env/密钥存储获取,决不写在源码中。
- 路径穿越/文件访问 — 用户控制的路径未经规范化/白名单校验就拼接
(
../ 逃逸、符号链接跟随)。
- SSRF — 向用户提供的 URL/主机发起服务端请求而无白名单校验;可达内部元数据端点。
- 反序列化/解析 — 不可信数据送到不安全反序列化器(pickle、原生 YAML loader、
Java/PHP 对象反序列化)。
- 密码学 — 弱/自动算法(MD5/SHA1 用于密码)、硬编码 IV、ECB 模式、缺少 TLS 验证、
可预测的 Token 随机数。
- 敏感数据暴露 — PII/密钥出现在日志、错误信息或 API 响应中;详细堆栈跟踪泄露给客户端。
- 依赖 — 新增包:是否可信、是否锁定版本、是否有已知 CVE?避免 typo-squatting。
- 资源与 DoS — 无界循环、无界请求/响应体大小、缺少超时、正则灾难性回溯(ReDoS)。
- 竞态条件/TOCTOU — 对文件、余额或认证状态的检查后操作,无锁保护。
方法
- 识别信任边界:不可信输入从哪里进入,到达哪个 sink(DB、Shell、文件系统、网络、HTML)?
- 追踪每个脏数据从源头到 sink;当值未经验证/编码/参数化即到达危险 sink 时存在漏洞。
- 优先用白名单而非黑名单;优先用库提供的转义和参数化而非手动消毒。
- 仅标记能用具体攻击路径论证的发现——不做推测性或风格噪音。
报告格式
每条发现:
[severity: high|medium|low] <标题>
location: path/to/file.ext:LINE
issue: <哪里错了以及触发条件>
impact: <攻击者获得了什么>
fix: <最小具体修复>
按严重度排序发现。审查后未发现值得处理的漏洞时明确说明,不填充低价值注释。