CVE-2025-47934 in OpenPGP.js
Sumário
de VulDB • 21/05/2026
O OpenPGP.js é uma implementação em JavaScript do protocolo OpenPGP. A partir da versão 5.0.1 e até as versões anteriores a 5.11.3 e 6.1.1, uma mensagem modificada maliciosamente pode ser passada para `openpgp.verify` ou `openpgp.decrypt`, fazendo com que essas funções retornem um resultado de verificação de assinatura válido, embora retornem dados que não foram realmente assinados. Esta falha permite que verificações de assinatura de mensagens assinadas inline (não desanexadas) (usando `openpgp.verify`) e mensagens assinadas e criptografadas (usando `openpgp.decrypt` com `verificationKeys`) sejam falsificadas, já que ambas as funções retornam dados extraídos que podem não corresponder aos dados originalmente assinados. Verificações de assinatura desanexada não são afetadas, pois nenhum dado assinado é retornado nesse caso. Para falsificar uma mensagem, o atacante precisa de uma única assinatura de mensagem válida (inline ou desanexada), bem como dos dados em texto claro que foram legítimamente assinados, e pode então construir uma mensagem assinada inline ou uma mensagem assinada e criptografada com qualquer dado de sua escolha, que parecerá ter sido assinada legítimamente pelas versões afetadas do OpenPGP.js. Em outras palavras, qualquer mensagem assinada inline pode ser modificada para retornar qualquer outro dado (ainda indicando que a assinatura era válida), e o mesmo se aplica a mensagens assinadas e criptografadas se o atacante puder obter uma assinatura válida e criptografar uma nova mensagem (de sua escolha) junto com essa assinatura. O problema foi corrigido nas versões 5.11.3 e 6.1.1. Algumas soluções alternativas estão disponíveis. Ao verificar mensagens assinadas inline, extraia a mensagem e a(s) assinatura(s) da mensagem retornada por `openpgp.readMessage` e verifique a(s) assinatura(s) como uma assinatura desanexada, passando a assinatura e uma nova mensagem contendo apenas os dados (criada usando `openpgp.createMessage`) para `openpgp.verify`. Ao descriptografar e verificar mensagens assinadas e criptografadas, descriptografe e verifique a mensagem em duas etapas, chamando primeiro `openpgp.decrypt` sem `verificationKeys` e, em seguida, passando a(s) assinatura(s) retornada(s) e uma nova mensagem contendo os dados descriptografados (criada usando `openpgp.createMessage`) para `openpgp.verify`.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.