Vulnerabilidad en openpgpjs (CVE-2023-41037)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
29/08/2023
Última modificación:
21/11/2024
Descripción
OpenPGP.js es una implementación JavaScript del protocolo OpenPGP. En las versiones afectadas, los Mensajes Firmados en Texto Claro de OpenPGP son mensajes firmados criptográficamente donde el texto firmado es legible sin herramientas especiales. Estos mensajes suelen contener una cabecera 'Hash: ...' que declara el algoritmo hash utilizado para calcular el resumen de la firma. OpenPGP.js hasta la v5.9.0 ignoraba cualquier dato que precediera a los textos 'Hash: ...' al verificar la firma. Como resultado, partes maliciosas podrían añadir texto arbitrario a un Mensaje Firmado en Texto Claro de terceros, para hacer creer a la víctima que el texto arbitrario estaba firmado. Un usuario o aplicación es vulnerable a dicho vector de ataque si verifica el CleartextMessage comprobando únicamente la propiedad `verified` devuelta, descartando la información `data` asociada, y en su lugar _confiando visualmente_ en el contenido del mensaje original. Dado que `verificationResult.data` siempre contendría los datos firmados reales, los usuarios y las aplicaciones que comprueban esta información no son vulnerables. De manera similar, dado un objeto CleartextMessage, la recuperación de los datos utilizando `getText()` o el campo `text` devuelve solo el contenido que se considera al verificar la firma. Finalmente, volver a 'armar' un objeto CleartextMessage (utilizando `armor()`) también resultará en una versión 'sanitizada', con el texto extraño eliminado. Este problema se ha solucionado en la versión 5.10.1 (versión estable actual) que rechazará los mensajes al llamar a `openpgp.readCleartextMessage()` y en la versión 4.10.11 (versión heredada) que rechazará los mensajes al llamar a `openpgp.cleartext.readArmored()`. Se aconseja a los usuarios que actualicen. Los usuarios que no puedan actualizar deberían comprobar el contenido de `verificationResult.data` para ver qué datos fueron realmente firmados, en lugar de confiar visualmente en el contenido del mensaje 'armado'.
Impacto
Puntuación base 3.x
4.30
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:a:openpgpjs:openpgpjs:*:*:*:*:*:*:*:* | 4.10.11 (excluyendo) | |
| cpe:2.3:a:openpgpjs:openpgpjs:*:*:*:*:*:*:*:* | 5.0.0 (incluyendo) | 5.10.0 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://github.com/openpgpjs/openpgpjs/commit/6b43e02a254853f5ff508ebd1b07541f78b7c566
- https://github.com/openpgpjs/openpgpjs/security/advisories/GHSA-ch3c-v47x-4pgp
- https://github.com/openpgpjs/openpgpjs/commit/6b43e02a254853f5ff508ebd1b07541f78b7c566
- https://github.com/openpgpjs/openpgpjs/security/advisories/GHSA-ch3c-v47x-4pgp



