返回 Bug 清单
BUG-0307project-29高待处理security-injection
timingSafeEqual 长度不等直接抛 RangeError —— 校验失败的请求变成 500 而非 401
发现:2026-10-01验证:2026-10-09置信度:70%
症状
伪造/截断的 session token 打到 verifySessionToken 时服务端抛 RangeError 返回 500,而非安静地判无效返回 401;异常路径还可能被上层兜底逻辑放大
根因
Node crypto.timingSafeEqual 要求两个 Buffer 字节长度完全相同,长度不等时抛 RangeError——原实现把任意长度的签名直接传入,把'校验不通过'这一正常分支变成了运行时异常
修复方案
先比较 sig.length !== expected.length 直接 return null,再调用 timingSafeEqual;整个函数体包 try/catch 兜底返回 null
错误签名
timingSafeEqual RangeError Input buffers must have the same byte length verifySessionToken技术信息
来源项目
project-29
标签
project-29, mcp-reported