Se han identificado varias vulnerabilidades críticas en el núcleo de Linux que permiten a un usuario local elevar sus privilegios en el sistema. Se han preparado prototipos funcionales de exploits para todos los problemas considerados.
- La vulnerabilidad (CVE-2022-0995) en el subsistema de seguimiento de eventos watch_queue provoca la escritura de datos en áreas de memoria del núcleo fuera del búfer asignado. Un usuario sin privilegios podría llevar a cabo un ataque y ejecutar su propio código con privilegios de núcleo. La vulnerabilidad se presenta en la función watch_queue_set_size() y está relacionada con el intento de limpiar todos los punteros en la lista, incluso si no se había asignado memoria para ellos. El problema se manifiesta al compilar el núcleo con la opción 'CONFIG_WATCH_QUEUE=y', utilizada en la mayoría de las distribuciones de Linux.
La vulnerabilidad fue corregida en un cambio introducido en el núcleo el 11 de marzo. Puede seguir la publicación de actualizaciones de paquetes en las distribuciones en las siguientes páginas: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Un prototipo de exploit ya está disponible públicamente y permite obtener acceso root al ejecutarse en Ubuntu 21.10 con el núcleo 5.13.0-37.

- La vulnerabilidad (CVE-2022-27666) en los módulos del núcleo esp4 y esp6 con la implementación de transformaciones ESP (Encapsulating Security Payload) para IPsec, utilizadas al emplear IPv4 e IPv6. Esta vulnerabilidad permite a un usuario local con privilegios normales sobrescribir objetos en la memoria del núcleo y elevar sus privilegios en el sistema. El problema se debe a la falta de verificación del tamaño de memoria asignado y de los datos realmente recibidos, teniendo en cuenta que el tamaño máximo del mensaje podría exceder el tamaño máximo de memoria asignado para la estructura skb_page_frag_refill.
La vulnerabilidad fue corregida en el núcleo el 7 de marzo (arreglada en 5.17, 5.16.15, etc.). Puede seguir la publicación de actualizaciones de paquetes en las distribuciones en las siguientes páginas: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Un prototipo funcional de exploit, que permite a un usuario normal obtener acceso root en Ubuntu Desktop 21.10 con la configuración predeterminada, ya se ha publicado en GitHub. Se afirma que, con cambios menores, el exploit también será funcional en Fedora y Debian. Notablemente, el exploit fue preparado inicialmente para la competición pwn2own 2022, pero los desarrolladores del núcleo identificaron y corrigieron el error relacionado, por lo que se decidió revelar los detalles de la vulnerabilidad.
- Dos vulnerabilidades (CVE-2022-1015, CVE-2022-1016) en el subsistema netfilter del módulo nf_tables, que gestiona el filtrado de paquetes nftables. El primer problema permite a un usuario local no privilegiado sobrescribir la memoria fuera del búfer asignado en la pila. El desbordamiento ocurre al procesar expresiones nftables formateadas de cierta manera, que son tratadas durante la verificación de índices proporcionados por el usuario que tiene acceso a las reglas nftables.
La vulnerabilidad se debe a que los desarrolladores asumieron que el valor "enum nft_registers reg" era de un byte, mientras que al activar ciertas optimizaciones, el compilador, de acuerdo con la especificación C89, puede usar un valor de 32 bits. Debido a esta particularidad, el tamaño utilizado en la verificación y asignación de memoria no coincide con el tamaño real de los datos en la estructura, lo que lleva a la superposición de la cola de la estructura sobre los punteros en la pila.
El problema puede ser explotado para ejecutar su código a nivel de núcleo, pero para un ataque exitoso se requiere tener acceso a nftables, el cual se puede obtener en un espacio de nombres de red (network namespaces) separado con privilegios CLONE_NEWUSER o CLONE_NEWNET (por ejemplo, al poder ejecutar un contenedor aislado). La vulnerabilidad también está estrechamente relacionada con las optimizaciones aplicadas por el compilador, que, por ejemplo, se activan al compilar en modo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y". La explotación de la vulnerabilidad es posible a partir del núcleo de Linux 5.12.
La segunda vulnerabilidad en netfilter es causada por el acceso a una región de memoria ya liberada (use-after-free) en el manejador nft_do_chain y puede llevar a una filtración de áreas de memoria del núcleo no inicializadas, que se pueden leer mediante manipulaciones con expresiones nftables y utilizar, por ejemplo, para determinar las direcciones de los punteros al desarrollar exploits para otras vulnerabilidades. La explotación de la vulnerabilidad es posible a partir del núcleo de Linux 5.13.
Las vulnerabilidades han sido solucionadas en las actualizaciones correctivas del núcleo 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274 y 4.9.309. Puedes seguir la publicación de las actualizaciones de paquetes en las siguientes páginas: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. El investigador que descubrió los problemas ha declarado que está preparando exploits funcionales para ambas vulnerabilidades, que se espera publicar en unos días, después de que los distribuciones lancen las actualizaciones de paquetes con el núcleo.
Fuente: opennet.ru

