FKIE_CVE-2023-41037
Vulnerability from fkie_nvd - Published: 2023-08-29 17:15 - Updated: 2024-11-21 08:20
Severity ?
4.3 (Medium) - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
4.3 (Medium) - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
4.3 (Medium) - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
Summary
OpenPGP.js is a JavaScript implementation of the OpenPGP protocol. In affected versions OpenPGP Cleartext Signed Messages are cryptographically signed messages where the signed text is readable without special tools. These messages typically contain a "Hash: ..." header declaring the hash algorithm used to compute the signature digest. OpenPGP.js up to v5.9.0 ignored any data preceding the "Hash: ..." texts when verifying the signature. As a result, malicious parties could add arbitrary text to a third-party Cleartext Signed Message, to lead the victim to believe that the arbitrary text was signed. A user or application is vulnerable to said attack vector if it verifies the CleartextMessage by only checking the returned `verified` property, discarding the associated `data` information, and instead _visually trusting_ the contents of the original message. Since `verificationResult.data` would always contain the actual signed data, users and apps that check this information are not vulnerable. Similarly, given a CleartextMessage object, retrieving the data using `getText()` or the `text` field returns only the contents that are considered when verifying the signature. Finally, re-armoring a CleartextMessage object (using `armor()` will also result in a "sanitised" version, with the extraneous text being removed. This issue has been addressed in version 5.10.1 (current stable version) which will reject messages when calling `openpgp.readCleartextMessage()` and in version 4.10.11 (legacy version) which will will reject messages when calling `openpgp.cleartext.readArmored()`. Users are advised to upgrade. Users unable to upgrade should check the contents of `verificationResult.data` to see what data was actually signed, rather than visually trusting the contents of the armored message.
References
{
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:openpgpjs:openpgpjs:*:*:*:*:*:*:*:*",
"matchCriteriaId": "EE3685F7-C06B-487D-8D10-E192DC1D1589",
"versionEndExcluding": "4.10.11",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:openpgpjs:openpgpjs:*:*:*:*:*:*:*:*",
"matchCriteriaId": "FF849E0F-852A-48C8-8F9B-15DFE8DD0EBB",
"versionEndExcluding": "5.10.0",
"versionStartIncluding": "5.0.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "OpenPGP.js is a JavaScript implementation of the OpenPGP protocol. In affected versions OpenPGP Cleartext Signed Messages are cryptographically signed messages where the signed text is readable without special tools. These messages typically contain a \"Hash: ...\" header declaring the hash algorithm used to compute the signature digest. OpenPGP.js up to v5.9.0 ignored any data preceding the \"Hash: ...\" texts when verifying the signature. As a result, malicious parties could add arbitrary text to a third-party Cleartext Signed Message, to lead the victim to believe that the arbitrary text was signed. A user or application is vulnerable to said attack vector if it verifies the CleartextMessage by only checking the returned `verified` property, discarding the associated `data` information, and instead _visually trusting_ the contents of the original message. Since `verificationResult.data` would always contain the actual signed data, users and apps that check this information are not vulnerable. Similarly, given a CleartextMessage object, retrieving the data using `getText()` or the `text` field returns only the contents that are considered when verifying the signature. Finally, re-armoring a CleartextMessage object (using `armor()` will also result in a \"sanitised\" version, with the extraneous text being removed. This issue has been addressed in version 5.10.1 (current stable version) which will reject messages when calling `openpgp.readCleartextMessage()` and in version 4.10.11 (legacy version) which will will reject messages when calling `openpgp.cleartext.readArmored()`. Users are advised to upgrade. Users unable to upgrade should check the contents of `verificationResult.data` to see what data was actually signed, rather than visually trusting the contents of the armored message."
},
{
"lang": "es",
"value": "OpenPGP.js es una implementaci\u00f3n JavaScript del protocolo OpenPGP. En las versiones afectadas, los Mensajes Firmados en Texto Claro de OpenPGP son mensajes firmados criptogr\u00e1ficamente donde el texto firmado es legible sin herramientas especiales. Estos mensajes suelen contener una cabecera \u0027Hash: ...\u0027 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 \u0027Hash: ...\u0027 al verificar la firma. Como resultado, partes maliciosas podr\u00edan a\u00f1adir texto arbitrario a un Mensaje Firmado en Texto Claro de terceros, para hacer creer a la v\u00edctima que el texto arbitrario estaba firmado. Un usuario o aplicaci\u00f3n es vulnerable a dicho vector de ataque si verifica el CleartextMessage comprobando \u00fanicamente la propiedad `verified` devuelta, descartando la informaci\u00f3n `data` asociada, y en su lugar _confiando visualmente_ en el contenido del mensaje original. Dado que `verificationResult.data` siempre contendr\u00eda los datos firmados reales, los usuarios y las aplicaciones que comprueban esta informaci\u00f3n no son vulnerables. De manera similar, dado un objeto CleartextMessage, la recuperaci\u00f3n de los datos utilizando `getText()` o el campo `text` devuelve solo el contenido que se considera al verificar la firma. Finalmente, volver a \u0027armar\u0027 un objeto CleartextMessage (utilizando `armor()`) tambi\u00e9n resultar\u00e1 en una versi\u00f3n \u0027sanitizada\u0027, con el texto extra\u00f1o eliminado. Este problema se ha solucionado en la versi\u00f3n 5.10.1 (versi\u00f3n estable actual) que rechazar\u00e1 los mensajes al llamar a `openpgp.readCleartextMessage()` y en la versi\u00f3n 4.10.11 (versi\u00f3n heredada) que rechazar\u00e1 los mensajes al llamar a `openpgp.cleartext.readArmored()`. Se aconseja a los usuarios que actualicen. Los usuarios que no puedan actualizar deber\u00edan comprobar el contenido de `verificationResult.data` para ver qu\u00e9 datos fueron realmente firmados, en lugar de confiar visualmente en el contenido del mensaje \u0027armado\u0027."
}
],
"id": "CVE-2023-41037",
"lastModified": "2024-11-21T08:20:25.840",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 4.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 1.4,
"source": "security-advisories@github.com",
"type": "Secondary"
},
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 4.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 1.4,
"source": "nvd@nist.gov",
"type": "Primary"
}
]
},
"published": "2023-08-29T17:15:13.003",
"references": [
{
"source": "security-advisories@github.com",
"tags": [
"Patch"
],
"url": "https://github.com/openpgpjs/openpgpjs/commit/6b43e02a254853f5ff508ebd1b07541f78b7c566"
},
{
"source": "security-advisories@github.com",
"tags": [
"Exploit",
"Vendor Advisory"
],
"url": "https://github.com/openpgpjs/openpgpjs/security/advisories/GHSA-ch3c-v47x-4pgp"
},
{
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Patch"
],
"url": "https://github.com/openpgpjs/openpgpjs/commit/6b43e02a254853f5ff508ebd1b07541f78b7c566"
},
{
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Exploit",
"Vendor Advisory"
],
"url": "https://github.com/openpgpjs/openpgpjs/security/advisories/GHSA-ch3c-v47x-4pgp"
}
],
"sourceIdentifier": "security-advisories@github.com",
"vulnStatus": "Modified",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-347"
}
],
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…