CVE-2026-33661 json
WeChat Pay callback signature verification bypassed when Host header is localhost
published 2026-03-25 7 mo ago modified 2026-06-17 4 mo ago also GHSA-q938-ghwv-8gvc , EUVD-2026-16428
- cvss
- 8.6
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 44%
- public exploits
- 0
- none known
Summary
Pay is an open-source payment SDK extension package for various Chinese payment services. Prior to version 3.7.20, the `verify_wechat_sign()` function in `src/Functions.php` unconditionally skips all signature verification when the PSR-7 request reports `localhost` as the host. An attacker can exploit this by sending a crafted HTTP request to the WeChat Pay callback endpoint with a `Host: localhost` header, bypassing the RSA signature check entirely. This allows forging fake WeChat Pay payment success notifications, potentially causing applications to mark orders as paid without actual payment. Version 3.7.20 fixes the issue.
Patch / fix
- packagist yansongda/pay 3.7.20
- yansongda pay 3.7.20
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
0.52% chance of exploitation in the next 30 days, higher than 44% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/yansongda/pay/security/advisories/GHSA-q938-ghwv-8gvc referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 8.6 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| GitHub | 3.1 | 8.6 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| packagist | yansongda/pay | <3.7.20 |
3.7.20 |
Affected products
- yansongda pay
Classification
- Weakness
-
- CWE-290 Authentication Bypass by Spoofing
References
-
github.com
/yansongda/pay/commit/26987ebf789f1e7f0a85febb640986ab4289fd7f
web, patch
-
github.com
/yansongda/pay/security/advisories/GHSA-q938-ghwv-8gvc
exploit, web, vendor-advisory
-
github.com
/yansongda/pay/releases/tag/v3.7.20
web, release-notes
-
nvd.nist.gov
/vuln/detail/CVE-2026-33661
advisory
-
github.com
/yansongda/pay
package
Sources
- CVE List CVE-2026-33661
- GitHub Advisory GHSA-q938-ghwv-8gvc
- NVD CVE-2026-33661
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.