CVE-2026-33661Pay SDK是一个用于中文支付服务的开源扩展包。在3.7.20版本之前,`verify_wechat_sign()`函数存在逻辑缺陷,当PSR-7请求Host为localhost时会跳过签名验证。攻击者可利用此漏洞伪造微信支付回调通知,绕过RSA签名检查,导致应用将未支付订单标记为已支付。
该漏洞根因位于`src/Functions.php`文件中的`verify_wechat_sign()`函数实现逻辑。在处理微信支付回调通知时,该函数包含一个不当的开发环境判断逻辑:如果PSR-7请求对象报告的Host名为"localhost",函数默认认为处于开发环境,从而直接返回验证通过,完全跳过了对回调数据完整性和来源真实性的RSA签名校验。攻击者利用这一逻辑缺陷,无需知晓商户的API密钥或私钥,只需向服务器的支付回调接口发送特制的HTTP POST请求,并将Header中的Host字段强制设为"localhost"。由于绕过了签名检查,服务器会误认为该请求来自微信官方支付网关,进而执行订单更新逻辑,导致攻击者能够以零成本伪造支付成功的交易记录,造成严重的资损风险。