Se ha descubierto una vulnerabilidad en la biblioteca OpenPGP.js (CVE-2025-47934) que permite a un atacante enviar un mensaje modificado que será percibido por el receptor como verificado (las funciones openpgp.verify y openpgp.decrypt devolverán un indicador de verificación exitosa de la firma digital, a pesar de que el contenido ha sido reemplazado y difiere de los datos para los cuales se creó la firma). La vulnerabilidad se ha corregido en las versiones OpenPGP.js 5.11.3 y 6.1.1. El problema solo se manifiesta en las ramas OpenPGP.js 5.x y 6.x, y no afecta a OpenPGP.js 4.x.
La biblioteca OpenPGP.js proporciona una implementación completa del protocolo OpenPGP en JavaScript, permitiendo realizar operaciones de cifrado en el navegador y trabajar con firmas digitales basadas en claves públicas. El proyecto es desarrollado por los creadores de Proton Mail y, además de facilitar el cifrado de extremo a extremo de mensajes en Proton Mail, se utiliza en proyectos como FlowCrypt, Mymail-Crypt, UDC, Encrypt.to, PGP Anywhere y Passbolt.
La vulnerabilidad afecta los procedimientos de verificación integrados en la firma de texto (openpgp.verify) y de los mensajes firmados y cifrados (openpgp.decrypt). Un atacante puede utilizar mensajes firmados existentes para crear nuevos mensajes, en la que la versión vulnerable de OpenPGP.js extraerá el contenido substituido al descomprimir, que difiere del contenido del mensaje firmado original. La vulnerabilidad no afecta a las firmas que se distribuyen por separado del texto (el problema solo se manifiesta al transferir la firma junto con el texto como un solo bloque de datos).
Para crear un mensaje falsificado, el atacante solo necesita tener un mensaje con una firma incorporada o separada, así como conocer los datos originales firmados en ese mensaje. El atacante puede modificar el mensaje de tal manera que la firma siga considerándose válida para la versión modificada. Asimismo, se pueden modificar mensajes cifrados con firma, de los cuales se devolverán los datos añadidos por el atacante al descomprimir.
Fuente: opennet.ru
