Platform
php
Component
yansongda/pay
Opgelost in
3.7.21
3.7.20
CVE-2026-33661 is een kwetsbaarheid in yansongda/pay waarbij de signature verificatie wordt omzeild wanneer de host 'localhost' is. Dit maakt het mogelijk om valse WeChat Pay betalingsbevestigingen te versturen, waardoor applicaties orders als betaald kunnen markeren zonder daadwerkelijke betaling. De kwetsbaarheid treft versies ≤v3.7.9. Een fix is beschikbaar in versie 3.7.20.
CVE-2026-33661 in de 'pay' component heeft betrekking op applicaties die WeChat Pay gebruiken. Specifiek slaat de functie verifywechatsign() in src/Functions.php de RSA-handtekeningverificatie onvoorwaardelijk over wanneer de PSR-7-request 'localhost' als host rapporteert. Dit stelt een aanvaller in staat om verwerkte HTTP-requests naar het WeChat Pay callback-endpoint te sturen, waardoor de cruciale handtekeningcontrole wordt omzeild. Hierdoor kan een aanvaller valse WeChat Pay-betalingssuccesnotificaties vervalsen, wat ertoe kan leiden dat de applicatie bestellingen onjuist als betaald markeert, zonder dat er daadwerkelijk een betaling heeft plaatsgevonden. De CVSS heeft deze kwetsbaarheid beoordeeld met een score van 8,6, wat een hoog risico aangeeft. Aangetaste versies zijn eerder dan 3.7.20. Deze kwetsbaarheid kan leiden tot aanzienlijke financiële verliezen en een compromittering van de systeemintegriteit.
Een aanvaller heeft toegang nodig tot het netwerk waarop de kwetsbare applicatie draait en moet HTTP-requests kunnen verzenden. De aanval omvat het creëren van een kwaadaardige HTTP-request met een 'Host: localhost'-header. Deze request wordt verzonden naar het WeChat Pay callback-endpoint. Vanwege de fout in de functie verifywechatsign() wordt de RSA-handtekeningverificatie omzeild, waardoor de aanvaller de betalingsnotificatie kan vervalsen. De aanvaller kan de applicatie vervolgens manipuleren om de bestelling als betaald te markeren, zelfs als er geen betaling is gedaan. De aanvalcomplexiteit is relatief laag, omdat er geen geavanceerde technische vaardigheden of gespecialiseerde tools nodig zijn. De kans op uitbuiting is hoog, gezien de gemakkelijke identificatie en uitbuiting van de fout.
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
Exploit Status
EPSS
0.09% (26% percentiel)
CISA SSVC
CVSS-vector
De oplossing om CVE-2026-33661 te mitigeren is het upgraden naar versie 3.7.20 of hoger van de 'pay' component. Deze update corrigeert de gebrekkige logica in de functie verifywechatsign() die het mogelijk maakt om de handtekeningverificatie over te slaan wanneer de 'Host'-header 'localhost' is. Bovendien wordt aanbevolen om verdere validatie van de bron van WeChat Pay callback-requests te implementeren, naast de handtekeningverificatie, als een aanvullende beveiligingsmaatregel. Dit kan het verifiëren van het oorspronkelijke IP-adres of het gebruik van een whitelijst van toegestane IP-adressen omvatten. Het zo snel mogelijk toepassen van deze update is cruciaal om u te beschermen tegen potentiële aanvallen. Na de update wordt een grondige test aanbevolen om ervoor te zorgen dat de WeChat Pay-functionaliteit correct blijft werken.
Actualice la biblioteca `yansongda/pay` a la versión 3.7.20 o superior. Esto corrige la vulnerabilidad de omisión de la verificación de la firma en el callback de WeChat Pay cuando el encabezado Host es localhost.
Kwetsbaarheidsanalyses en kritieke waarschuwingen direct in uw inbox.
WeChat Pay is een populair mobiel betalingssysteem in China, geïntegreerd in de WeChat-applicatie.
Handtekeningverificatie (RSA) zorgt ervoor dat WeChat Pay-notificaties authentiek zijn en niet zijn gemanipuleerd.
Als u niet onmiddellijk kunt upgraden, implementeer dan aanvullende beveiligingsmaatregelen, zoals IP-bronvalidatie en transactiemonitoring.
Controleer uw code op de functie verifywechatsign() in src/Functions.php en controleer of de handtekeningverificatie wordt overgeslagen wanneer de 'Host'-header 'localhost' is.
Momenteel zijn er geen specifieke tools om deze kwetsbaarheid te detecteren, maar code-audits en penetratietests worden aanbevolen.
Upload je dependency-bestand en kom direct te weten of deze en andere CVEs jou raken.