平台
php
组件
yansongda/pay
修复版本
3.7.21
3.7.20
CVE-2026-33661 描述了 yansongda/pay 中的一个漏洞,该漏洞导致在 PSR-7 请求报告 localhost 作为主机时,无条件跳过所有签名验证。攻击者可以通过发送带有 Host: localhost 标头的伪造 HTTP 请求来绕过 RSA 签名检查。受影响版本为 v3.7.9 及更早版本。该问题已在 3.7.20 版本中得到修复,建议用户尽快升级。
CVE-2026-33661 漏洞影响 'pay' 组件,并影响使用微信支付的应用。 具体来说,src/Functions.php 中的 verifywechatsign() 函数在 PSR-7 请求报告主机为 'localhost' 时,会无条件跳过 RSA 签名验证。 这使得攻击者能够向微信支付回调端点发送恶意的 HTTP 请求,从而绕过关键的签名检查。 因此,攻击者可能会伪造虚假的微信支付成功通知,导致应用程序将订单错误地标记为已支付,即使实际上并未发生支付。 CVSS 已将此漏洞评分为 8.6 分,表明风险较高。 受影响的版本低于 3.7.20。 此漏洞可能导致重大的经济损失和系统完整性受损。
攻击者需要访问运行易受攻击应用程序的网络,并且需要能够发送 HTTP 请求。 攻击包括创建包含 'Host: localhost' 标头的恶意 HTTP 请求。 此请求发送到微信支付回调端点。 由于 verifywechatsign() 函数中的缺陷,会绕过 RSA 签名验证,从而使攻击者能够伪造支付通知。 然后,攻击者可以操纵应用程序将订单标记为已支付,即使没有发生任何实际支付。 攻击的复杂性相对较低,因为它不需要高级技术技能或专用工具。 漏洞被利用的可能性很高,因为很容易识别和利用该缺陷。
Applications that integrate WeChat Pay using the yansongda/pay library, particularly those deployed on shared hosting environments or with minimal input validation, are at significant risk. Legacy systems using older versions of the library and lacking robust security practices are also highly vulnerable.
• php: Examine application code for usage of yansongda/pay and check version. Search for code that unconditionally skips signature verification based on the Host header.
// Example: Check for vulnerable code in Functions.php
grep -r "verify_wechat_sign(R" /path/to/your/application• generic web: Monitor access logs for requests to WeChat Pay callback endpoints with a Host: localhost header.
# Example: grep for suspicious host headers in access logs
grep "Host: localhost" /var/log/apache2/access.logdisclosure
漏洞利用状态
EPSS
0.09% (26% 百分位)
CISA SSVC
减轻 CVE-2026-33661 的解决方案是将 'pay' 组件升级到 3.7.20 或更高版本。 此更新更正了 verifywechatsign() 函数中的有缺陷的逻辑,该逻辑允许在主机标头为 'localhost' 时跳过签名验证。 此外,建议在签名验证之外,实施对微信支付回调请求来源的进一步验证,作为补充安全措施。 这可能包括验证原始 IP 地址或使用允许的 IP 地址白名单。 及时应用此更新对于防止潜在攻击至关重要。 升级后建议进行彻底的测试,以确保微信支付功能继续正常运行。
将 Pay 库更新到 3.7.20 或更高版本。此版本修复了在 Host 标头中使用 'localhost' 时绕过签名验证的漏洞。更新确保正确验证微信支付付款通知。
漏洞分析和关键警报直接发送到您的邮箱。
微信支付是中国流行的移动支付系统,集成在微信应用程序中。
签名验证 (RSA) 确保微信支付通知是真实的,并且没有被篡改。
如果您无法立即升级,请实施额外的安全措施,例如 IP 源验证和交易监控。
检查您的代码中 src/Functions.php 中的 verifywechatsign() 函数,并检查当 'Host' 标头为 'localhost' 时是否跳过签名验证。
目前没有用于检测此漏洞的特定工具,但建议进行代码审计和渗透测试。
CVSS 向量