Se ha publicado un exploit para la séptima vulnerabilidad (1, 2-3, 4, 5, 6) en el kernel de Linux, que permite a un usuario local no privilegiado obtener derechos de root, sobrescribiendo datos en la caché de páginas. El identificador CVE aún no ha sido asignado, y además del código del exploit, no hay información adicional sobre el problema por el momento. La solución está disponible solo en forma de parche, que fue publicado el 20 de mayo y fue aceptado en la rama principal del kernel de Linux el 21 de mayo (las versiones corregidas del kernel aún no están disponibles).
La vulnerabilidad está presente en la implementación de la tecnología GRO (Generic Receive Offload), utilizada para acelerar el procesamiento de paquetes segmentados. La vulnerabilidad es causada por un error en la implementación del mecanismo zerocopy en la función skb_gro_receive(), que realiza modificaciones directas en los datos de la caché de páginas para evitar el almacenamiento en búfer innecesario. Con la bandera SKBFL_MANAGED_FRAG_REFS activada, se omitía el guardado de la referencia a las páginas de memoria liberadas en el campo shinfo->frags, después de lo cual este campo se adjuntaba a otro skb sin modificar el contador de referencias, lo que llevaba a acceder a la memoria después de su liberación (use-after-free). Se pudo explotar el problema para sobrescribir datos en la caché de páginas, gracias a la manipulación del puntero al búfer io_uring.
El ataque es posible en sistemas con el subsistema io_uring habilitado (io_uring_disabled=0). Para que el exploit funcione, debe haber un archivo ejecutable de lectura con la bandera SUID-root. El mecanismo de explotación consiste en que el atacante logra colocar la base de usuarios en la caché de páginas, después de lo cual inserta en la caché la línea "hax::0:0::/root:/bin/sh". A continuación, se ejecuta el comando "su hax", que obtiene una copia modificada de la base de usuarios en lugar de la original del almacenamiento, con el inicio de sesión ficticio "hax", al que se le han otorgado derechos de root y una contraseña vacía. El funcionamiento del exploit ha sido probado en Ubuntu 24.04.
Fuente: opennet.ru
