Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en una fuente que produce un documento JSON en swift-corelibs-foundation (CVE-2022-1642)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-704 Conversión de tipos errónea
Fecha de publicación:
16/06/2022
Última modificación:
05/07/2022

Descripción

Un programa usando swift-corelibs-foundation es vulnerable a un ataque de denegación de servicio causado por una fuente potencialmente maliciosa que produce un documento JSON que contiene un desajuste de tipo. Esta vulnerabilidad está causada por la interacción entre un mecanismo de deserialización ofrecido por la biblioteca estándar de Swift, el protocolo Codable; y la clase JSONDecoder ofrecida por swift-corelibs-foundation, que puede de serializar tipos que adoptan el protocolo Codable basándose en el contenido de un documento JSON proporcionado. Cuando un tipo que adopta Codable solicita la inicialización de un campo con un valor entero, la clase JSONDecoder usa un contenedor de tipo con diferentes métodos de acceso para intentar y coaccionar un valor JSON correspondiente y producir un entero. En el caso de que el valor JSON fuera un literal numérico con una porción de punto flotante, JSONDecoder usó diferentes métodos de borrado de tipo durante la comprobación que durante el casting final del valor. La comprobación del casting produce un bloqueo determinista debido a este desajuste. La clase JSONDecoder se usa a menudo en marcos web populares basados en Swift para analizar el cuerpo de las peticiones HTTP y llevar a cabo una comprobación de tipo básica. Esto hace que el ataque sea de bajo esfuerzo: el envío de un documento JSON específicamente diseñado durante una petición a estos puntos finales causará su bloqueo. El ataque no presenta ningún riesgo de confidencialidad o integridad en sí mismo; el bloqueo es producido de forma determinista mediante una función de abortar que asegura que la ejecución no continúe ante esta violación de los supuestos. Sin embargo, los bloqueos no esperados pueden conllevar a violaciones de invariantes en los servicios, por lo que es posible que este ataque pueda ser usado para desencadenar condiciones de error que escalen el riesgo. Producir una denegación de servicio también puede ser el objetivo de un atacante en sí mismo. Este problema ha sido resuelto en Swift versión 5.6.2 para Linux y Windows. Este problema ha sido resuelto asegurando que sean invocados los mismos métodos tanto cuando es validado como durante el casting, para que no sea producido un desajuste de tipos. Las versiones de Swift para Linux y Windows no son intercambiables con la ABI. Para actualizar un servicio, su propietario debe actualizar a esta versión de la cadena de herramientas Swift, y luego recompilar y volver a desplegar su software. La nueva versión de Swift incluye un paquete swift-corelibs-foundation actualizado. Las versiones de Swift que son ejecutadas en sistemas operativos basados en Darwin no están afectadas

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:apple:swift:*:*:*:*:*:linux:*:* 5.6.2 (excluyendo)
cpe:2.3:a:apple:swift:*:*:*:*:*:windows:*:* 5.6.2 (excluyendo)