Publican PoC Exploit para una vulnerabilidad en el kernel de Linux

Para la vulnerabilidad identificada como CVE-2023-0179 con puntaje CVSS 7.8, se ha detallado un exploit de escalamiento de privilegios locales (LPE), publicada por el investigador TurtleARM.

La vulnerabilidad se ha descrito como un desbordamiento de búfer en el subsistema Netfilter en el kernel de Linux. Este problema podría permitir la fuga de direcciones tanto del stack y heap. Al ejecutar un programa especialmente diseñado, un atacante autenticado podría aprovechar esta falla para obtener privilegios elevados como root.

Netfilter es un framework del kernel de Linux que permite implementar varias operaciones relacionadas con la red en forma de controladores personalizados. Entre las funciones y operaciones que ofrece, tenemos: el filtrado de paquetes, rastreo de conexiones (Connection Tracking), la traducción de direcciones y puertos (NATP), que brindan la funcionalidad requerida para dirigir paquetes a través de una red y prohibir que los paquetes lleguen a ubicaciones confidenciales dentro de una red.

El equipo de seguridad de Ubuntu descubrió que el subsistema netfilter en el kernel de Linux no manejaba correctamente los encabezados de VLAN en algunas situaciones, por lo que un atacante local podría aprovechar esta falla para causar una denegación de servicio (DoS) o posiblemente ejecutar código arbitrario.

La falla consiste en un desbordamiento de búfer de stack, debido a una vulnerabilidad de subdesbordamiento de enteros dentro de la función nft_payload_copy_vlan, que se invoca con expresiones nft_payload siempre que haya una etiqueta VLAN presente en el skb actual.

Esta vulnerabilidad afecta a todas las versiones de Linux desde la 5.5 hasta la 6.2-rc3. La prueba de concepto (PoC) Needle exploit en funcionamiento, se ha probado con éxito contra el kernel de Linux 6.1.6 sin parches. El exploit crea una nueva cuenta de usuario needle:needle con UID 0, es decir que consta de todos los privilegios de root.

Mitigación

Si no es necesario, desactive la posibilidad de que los usuarios sin privilegios creen espacios de nombres. Para hacer esto temporalmente, ejecute el siguiente comando:

  • sudo sysctl -w kernel.unprivileged_userns_clone=0

Para deshabilitar entre reinicios, ejecutar los siguientes comandos:

  • echo kernel.unprivileged_userns_clone=0 | \
  • sudo tee /etc/sysctl.d/99-disable-unpriv-userns.conf

Recomendaciones

  • Actualizar los servidores Linux y aplicar los parches para las distribuciones tan pronto como estén disponibles.
  • Permitir que solo los usuarios de confianza accedan a los sistemas locales y siempre supervisen los sistemas afectados.

Referencias