Vulnerabilidades K2

Contacto

Lunes, 09 Marzo 2020 10:01

Vulnerabilidad en PPP Daemon

El CERT de Entelgy Innotec Security avisa de la publicación de una vulnerabilidad en el software PPP Daemon.

Nivel de Criticidad: CRÍTICA

La vulnerabilidad es la siguiente:

  • CVE-2020-8597: El investigador de seguridad Ilja van Sprundel de la firma de seguridad IOActive ha hecho pública una vulnerabilidad crítica en el software “PPP Daemon” que se encuentra instalado en la gran mayoría de sistemas operativos basados en Linux. Este software es una implementación del protocolo "Point-to-Point Protocol” (PPP) que permite la comunicación y la transferencia de datos entre nodos, utilizado principalmente para establecer enlaces en internet como, por ejemplo, los que se obtienen mediante redes privadas virtuales (VPN).

Debido a un fallo en el procesamiento de paquetes en el protocolo EAP, dentro del protocolo Daemon "Point-to-Point" (pppd), un atacante remoto no autenticado puede causar un desbordamiento de búfer de pila, lo que puede permitir la ejecución de código en un sistema objetivo. La vulnerabilidad se debe a un error al validar el tamaño de la entrada antes de copiar los datos suministrados en la memoria. Como la validación del tamaño de los datos es incorrecta, se podrían copiar datos aleatorios en la memoria y causar daños que permitirían la ejecución de código no deseado.

El error está ubicado en la lógica del código de análisis de EAP (Extensible Authentication Protocol), concretamente en las funciones eap_request () y eap_response () en el fichero eap.c, que son llamadas por un controlador de entrada de red. Estas funciones toman un puntero y una longitud como entrada utilizando el primer byte como tipo. Si el tipo es EAPT_MD5CHAP (4), parece un campo incrustado de 1 byte de longitud. La lógica de este código tiene por objeto garantizar que la longitud incrustada sea menor que la longitud total del paquete. Después de esta verificación, intenta copiar los datos proporcionados (nombre de host) que se encuentran después del campo de longitud incrustado en un búfer de pila local. Esta verificación de límites es incorrecta y permite que se realice una copia de la memoria con una longitud arbitraria de datos.

Adicionalmente existe otro fallo que hace que la función eap_input () no verifique si EAP ha sido negociado durante la fase del Line Control Protocol (LCP). Esto permite que un atacante no autenticado envíe un paquete EAP incluso si ppp rechazó previamente la negociación de autenticación. El código pppd vulnerable en eap_input () seguirá procesando el paquete EAP y activará el desbordamiento de búfer de la pila. Estos datos no verificados con un tamaño desconocido se pueden usar para dañar la memoria del sistema de destino.

Hay que tener en cuenta que pppd a menudo se ejecuta con altos privilegios (system o root) y funciona junto con los controladores del kernel. Esto hace posible que un atacante ejecute potencialmente código con privilegios de system o root. 

La vulnerabilidad ha sido registrada con el CVE-2020-8597 y catalogada como crítica con un score de 9.8 (CVSSv3) según la base de datos del NIST. Esto es debido a que el fallo es explotable de forma remota, con una complejidad baja, no es necesaria autenticación y un ataque exitoso tendría un impacto alto en un sistema objetivo.

Recursos afectados

  • Debian
  • Ubuntu
  • SUSE Linux
  • Fedora
  • NetBSD
  • Red Hat Enterprise Linux

Además, existen aplicaciones y dispositivos que también usan el software pppd y por lo tanto, también son vulnerables. Hasta la fecha, se conocen los siguientes:

  • Cisco CallManager
  • TP-LINK products
  • OpenWRT Embedded OS
  • Synology (DiskStation Manager, VisualStation, Router Manager)
  • NetBSD

Solución a la vulnerabilidad

Los usuarios con sistemas o dispositivos afectados deberán aplicar los correspondientes parches en cuanto sean publicados por los respectivos fabricantes. Por el momento, las principales distribuciones de Linux como Ubuntu, Debian, OpenSUSE y Red Hat ya han publicado parches para solucionar la vulnerabilidad:

Adicionalmente, el investigador Ilja van Sprundel ha proporcionado el siguiente parche para solucionar el problema de verificación de límites fijos en el protocolo EAP: 

Cabe mencionar que el software pppd también se encuentra incluido en el proyecto lwIP (lightweight IP) que proporciona capacidades pppd en dispositivos pequeños. El instalador predeterminado y los paquetes de lwIP no son vulnerables a este desbordamiento de búfer. Sin embargo, en caso de haber utilizado el código fuente de lwIP y haberlo configurado específicamente para habilitar EAP en el momento de la compilación, es probable que el software sea vulnerable. La actualización recomendada para subsanar este problema en lwIP está disponible en el siguiente repositorio de Git:

Recomendaciones

El CERT de Entelgy Innotec Security recomienda encarecidamente a los usuarios y administradores de sistemas que apliquen los parches de seguridad en cuanto se encuentren disponibles, con el fin de evitar la exposición a ataques externos y la toma de control de los sistemas informáticos.

Referencias

S5 Box