Plataforma
php
Componente
yansongda/pay
Corrigido em
3.7.21
3.7.20
A vulnerabilidade CVE-2026-33661 permite o bypass da verificação de assinatura na biblioteca yansongda/pay. Ao enviar requisições HTTP com o cabeçalho Host: localhost para o endpoint de callback do WeChat Pay, a verificação RSA é ignorada. Isso possibilita a falsificação de notificações de pagamento bem-sucedido, marcando pedidos como pagos sem a devida confirmação. Afeta versões ≤v3.7.9. A correção foi implementada na versão 3.7.20.
A vulnerabilidade CVE-2026-33661 no componente 'pay' afeta aplicações que utilizam WeChat Pay. Especificamente, a função verifywechatsign() em src/Functions.php ignora a verificação da assinatura RSA de forma incondicional quando o cabeçalho 'Host' da solicitação PSR-7 indica 'localhost'. Isso permite que um atacante envie solicitações HTTP maliciosas para o endpoint de callback do WeChat Pay, contornando a verificação crucial da assinatura. Como resultado, um atacante poderia falsificar notificações de sucesso de pagamento do WeChat Pay, o que poderia levar a aplicação a marcar pedidos como pagos, mesmo que não tenha sido realizado um pagamento real. O CVSS avaliou esta vulnerabilidade com uma pontuação de 8.6, indicando um risco alto. As versões afetadas são anteriores a 3.7.20. Esta vulnerabilidade pode resultar em perdas financeiras significativas e comprometer a integridade do sistema.
Um atacante precisa de acesso à rede onde a aplicação vulnerável é executada e deve ser capaz de enviar solicitações HTTP. O ataque envolve a criação de uma solicitação HTTP maliciosa que contenha um cabeçalho 'Host: localhost'. Esta solicitação é enviada para o endpoint de callback do WeChat Pay. Devido ao erro na função verifywechatsign(), a verificação da assinatura RSA é ignorada, permitindo que o atacante falsifique a notificação de pagamento. O atacante pode então manipular a aplicação para que marque o pedido como pago, mesmo que não tenha sido realizado nenhum pagamento real. A complexidade do ataque é relativamente baixa, pois não requer conhecimentos técnicos avançados nem ferramentas especializadas. A probabilidade de exploração é alta, dado que o erro é fácil de identificar e explorar.
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
Status do Exploit
EPSS
0.09% (percentil 26%)
CISA SSVC
Vetor CVSS
A solução para mitigar CVE-2026-33661 é atualizar para a versão 3.7.20 ou posterior do componente 'pay'. Esta atualização corrige a lógica defeituosa na função verifywechatsign() que permite a omissão da verificação da assinatura quando o cabeçalho 'Host' é 'localhost'. Além disso, recomenda-se implementar uma validação adicional da origem das solicitações de callback do WeChat Pay, além da verificação da assinatura, como uma medida de segurança complementar. Isso pode incluir a verificação do endereço IP de origem ou o uso de uma lista de permissões de endereços IP. Aplicar esta atualização o mais rápido possível é crucial para se proteger contra possíveis ataques. Recomenda-se realizar testes exaustivos após a atualização para garantir que a funcionalidade do WeChat Pay continue a funcionar corretamente.
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.
Análise de vulnerabilidades e alertas críticos diretamente no seu e-mail.
WeChat Pay é um sistema de pagamento móvel popular na China, integrado no aplicativo WeChat.
A verificação da assinatura RSA garante que as notificações de pagamento do WeChat Pay são autênticas e não foram adulteradas.
Se não puder atualizar imediatamente, implemente medidas de segurança adicionais, como a validação do IP de origem e o monitoramento das transações.
Revise seu código em busca da função verifywechatsign() em src/Functions.php e verifique se a verificação da assinatura é ignorada quando o cabeçalho 'Host' é 'localhost'.
Atualmente, não existem ferramentas específicas para detectar esta vulnerabilidade, mas recomenda-se realizar auditorias de código e testes de penetração.
Envie seu arquivo de dependências e descubra na hora se esta e outras CVEs te atingem.