Vulnerabilidad en JSON5 (CVE-2022-46175)
Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
24/12/2022
Última modificación:
26/11/2023
Descripción
JSON5 es una extensión del popular formato de archivo JSON que pretende ser más fácil de escribir y mantener a mano (por ejemplo, para archivos de configuración). El método `parse` de la librería JSON5 anterior a las versiones 1.0.1 y 2.2.1 incluida no restringe el análisis de claves denominadas `__proto__`, lo que permite que cadenas especialmente manipuladas contaminen el prototipo del objeto resultante. Esta vulnerabilidad contamina el prototipo del objeto devuelto por `JSON5.parse` y no el prototipo de objeto global, que es la definición comúnmente entendida de contaminación de prototipo. Sin embargo, contaminar el prototipo de un único objeto puede tener un impacto significativo en la seguridad de una aplicación si el objeto se utiliza posteriormente en operaciones confiables. Esta vulnerabilidad podría permitir a un atacante establecer claves arbitrarias e inesperadas en el objeto devuelto por `JSON5.parse`. El impacto real dependerá de cómo las aplicaciones utilicen el objeto devuelto y de cómo filtren las claves no deseadas, pero podría incluir Denegación de Servicio (DoS), Cross-Site Scripting (XSS), elevación de privilegios y, en casos extremos, ejecución remota de código. `JSON5.parse` debería restringir el análisis de claves `__proto__` al analizar cadenas JSON en objetos. Como punto de referencia, el método `JSON.parse` incluido en JavaScript ignora las claves `__proto__`. Simplemente cambiar `JSON5.parse` por `JSON.parse` en los ejemplos anteriores mitiga esta vulnerabilidad. Esta vulnerabilidad está parcheada en las versiones 1.0.2, 2.2.2 y posteriores de json5.
Impacto
Puntuación base 3.x
8.80
Gravedad 3.x
ALTA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:a:json5:json5:*:*:*:*:*:node.js:*:* | 1.0.2 (excluyendo) | |
| cpe:2.3:a:json5:json5:*:*:*:*:*:node.js:*:* | 2.0.0 (incluyendo) | 2.2.2 (excluyendo) |
| cpe:2.3:o:fedoraproject:fedora:37:*:*:*:*:*:*:* |
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/json5/json5/issues/199
- https://github.com/json5/json5/issues/295
- https://github.com/json5/json5/pull/298
- https://github.com/json5/json5/security/advisories/GHSA-9c47-m6qq-7p4h
- https://lists.debian.org/debian-lts-announce/2023/11/msg00021.html
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3S26TLPLVFAJTUN3VIXFDEBEXDYO22CE/



