Vulnerabilidad en el subsistema del núcleo Linux Netfilter

En Netfilter, un subsistema del núcleo de Linux utilizado para filtrar y modificar paquetes de red, se ha identificado una vulnerabilidad (CVE-2021-22555) que permite a un usuario local obtener privilegios de root en el sistema, incluso dentro de un contenedor aislado. Se ha preparado un prototipo funcional de exploit para probarlo, eludiendo los mecanismos de protección KASLR, SMAP y SMEP. El investigador que descubrió la vulnerabilidad recibió una recompensa de 20 mil dólares por parte de Google por identificar un método de elusión de la aislación de contenedores de Kubernetes en el clúster kCTF.

El problema se manifiesta a partir del núcleo 2.6.19, lanzado hace 15 años, y es causado por un error en los manejadores IPT_SO_SET_REPLACE e IP6T_SO_SET_REPLACE, que conduce a un desbordamiento de búfer al enviar parámetros especialmente diseñados a través de la llamada setsockopt en modo compat. Bajo condiciones normales, la llamada compat_setsockopt() solo puede ser ejecutada por el usuario root, pero los permisos necesarios para realizar el ataque también pueden ser obtenidos por un usuario no privilegiado en sistemas con soporte habilitado para espacios de nombres de identificadores de usuario (user namespaces).

Un usuario puede crear un contenedor con un usuario root separado y explotar la vulnerabilidad desde allí. Por ejemplo, los "user namespaces" están habilitados por defecto en Ubuntu y Fedora, pero no están activados en Debian y RHEL. El parche que corrige la vulnerabilidad fue aceptado en el núcleo de Linux el 13 de abril. Las actualizaciones de paquetes ya han sido preparadas por los proyectos Debian, Arch Linux y Fedora. En Ubuntu, RHEL y SUSE, las actualizaciones están en preparación.

El problema surge en la función xt_compat_target_from_user() debido a un cálculo incorrecto del tamaño de la memoria al guardar estructuras del núcleo después de convertirlas de una representación de 32 bits a una de 64 bits. El error permite escribir cuatro bytes nulos en cualquier posición fuera del búfer asignado, limitado por un desplazamiento de 0x4C. Esta vulnerabilidad fue suficiente para crear un exploit que permite obtener derechos de root; a través de la limpieza del puntero m_list->next en la estructura msg_msg, se crearon condiciones para acceder a datos después de liberar memoria (use-after-free), que luego se utilizó para obtener información sobre direcciones y modificar otras estructuras mediante la manipulación de la llamada al sistema msgsnd().

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster