Un error crítico en la máscara de red afecta a miles de programas

Un error crítico en la máscara de red afecta a miles de programas

Javier Jiménez

En muchas ocasiones surgen problemas que pueden comprometer la seguridad de nuestros equipos. Es algo que afecta a todo tipo de sistemas operativos y debemos corregir. En este artículo nos hacemos eco de un error en la máscara de red, considerado como crítico, que pone en peligro miles de programas. Vamos a explicar en qué consiste este problema de seguridad.

Un error crítico en la máscara de red npm afecta a miles de aplicaciones

La máscara de red se utiliza con frecuencia en cientos de miles de aplicaciones para analizar direcciones IPv4 y bloques CIDR o compararlos. Por tanto, en caso de que haya algún tipo de problema, alguna vulnerabilidad, podría poner en riesgo a muchos usuarios. Este componente cuenta además con millones de descargas semanales.

El error está presente en la biblioteca npm y significa que cuando se analiza una dirección IP con un cero a la izquierda, la máscara de red ve una IP diferente debido a validaciones incorrectas. Este descubrimiento ha sido por parte de Victor Viale, Sick Codes, Nick Sahler, Kelly Kaoudis y John Jackson. Han revelado un fallo en la popular biblioteca de máscaras de red.

La vulnerabilidad ha sido rastreada como CVE-2021-28918. Afecta a cómo la máscara de red maneja las direcciones IP de formato mixto, o más específicamente cuando una dirección IPv4 decimal contiene un cero inicial.

Hay que tener en cuenta que una dirección IP se puede representar en diferentes formatos, incluidos hexadecimal y entero, aunque las direcciones IPv4 más comunes se expresan en formato decimal. Supongamos que se recibe una dirección IP en formato decimal, 127.0.0.1, que se entiende ampliamente como la dirección de bucle invertido local o localhost.

El problema es cuando aparece un 0 a la izquierda. En ese caso interpreta la dirección IP como otra totalmente distinta. Podemos probar en el navegador, con Chrome por ejemplo, a poner la IP 127.0.0.1. Si ponemos un 0 a la izquierda lo interpreta como una IP en formato octal y al intentar entrar cambia a su equivalente en decimal 87.0.0.1.

En el caso de la máscara de red npm, esos ceros a la izquierda simplemente se eliminarían y descartarían. Según indican los investigadores de seguridad, la máscara de red ignora esto. Siempre considerará las partes como decimales, lo que significa que si intentamos validar que una IP pertenece a un rango, será incorrecto para las representaciones de direcciones IPv4 basadas en octales.

Qué hacer para navegar con seguridad

Este problema afecta a la seguridad

Ahora bien, ¿Cómo afecta todo esto a la seguridad? De primeras este error podría parecer poco importante, pero si un atacante pudiera influir en la entrada de la dirección IP analizada por la aplicación, el error puede dar lugar a varias vulnerabilidades. Aquí podemos incluir omisiones de la falsificación de solicitudes del lado del servidor (SSRF) hasta el control remoto.

Un atacante podría, por ejemplo, crear una IP con algunos o todos los octetos en base 8, en la antigua representación de JavaScript con prefijo 0. Este error se podría aprovechar para la inclusión remota de archivos en caso de que un atacante cree una dirección IP que parezca privada para la máscara de red.

Hay que tener en cuenta que para este error CVE-2021-28918 se ha lanzado la versión 2.0.0 de netmask para poder corregirlo. Una vez más podemos ver la importancia de mantener siempre nuestros sistemas y dispositivos correctamente actualizados. Solo así podemos evitar problemas de seguridad.