Se ha publicado un exploit para GRO Frag — una vulnerabilidad local de escalamiento de privilegios en el núcleo de Linux relacionada con el manejo de GRO y skb de cero-copia en la pila de red. No se indica la fecha exacta de la primera detección en los materiales públicos.A partir de las huellas públicas, se pueden fijar dos fechas: la corrección fue discutida en la lista de correo netdev el 20 de mayo de 2026, donde esta vulnerabilidad ya se describía como susceptible de sobrescribir el caché de páginas, y se publicó un PoC público en GitHub Gist el 22 de mayo de 2026..
Como medida temporal antes de instalar un núcleo corregido, se puede limitar el vector de ataque a través de sysctl: kernel.io_uring_disabled=1. Este modo prohíbe la creación de nuevas instancias de io_uring por procesos no privilegiados, a menos que estén incluidos en el grupo permitido io_uring_group; con un valor de grupo de -1, el acceso se conserva solo para procesos con CAP_SYS_ADMIN. Esto es una mitigación, no una solución completa para la vulnerabilidad.
El problema radica en la función skb_gro_receive(): al combinar paquetes GRO, el núcleo podría trasladar fragmentos de skb de cero-copia a otro skb sin verificar correctamente el estado de cero-copia y la señal SKBFL_MANAGED_FRAG_REFS. Como resultado, las páginas de memoria a las que el skb original no mantenía referencias separadas podrían liberarse incorrectamente, lo que llevaba a un use-after-free. El parche indica claramente que tal situación puede provocar UAF, además de que la variante encontrada era susceptible de sobrescribir el caché de páginas.
El PoC publicado describe la vulnerabilidad como LPE a través de UAF de fragmentos gestionados por GRO utilizando io_uring SEND_ZC y la interfaz de red virtual veth. En los comentarios del código se indica que los núcleos afectados son Linux 6.0+, la explotación es posible por un usuario no privilegiado, pero requiere un io_uring disponible; como corrección se menciona commit 4db79a322db8 con el cambio "net: gro: no fusionar skbs de zcopy".
En cuanto a las consecuencias, GRO Frag se clasifica en la misma categoría peligrosa de errores que Copy Fail y Dirty Frag: un atacante con acceso local no privilegiado logra modificar datos en el caché de páginas, es decir, en memoria, sin modificar necesariamente el archivo en disco. Estos errores son particularmente desagradables porque afectan la frontera entre el archivo de "solo lectura" y el contenido real, que ve el núcleo y los procesos en accesos posteriores. Elastic describió anteriormente esta clase como un camino práctico para obtener root a través de la corrupción del caché de páginas.
En el momento de la publicación, no se había asignado un identificador CVE separado para GRO Frag, según los informes disponibles. Como medidas temporales, se recomienda a los administradores que actualicen el núcleo a una versión que contenga la corrección, así como adoptar medidas generales de mitigación de riesgos para esta LPE: limitar los espacios de nombres de usuario no privilegiados donde sea posible, controlar el uso de io_uring y monitorizar acciones sospechosas relacionadas con la escalada local de privilegios. Para ataques relacionados como Copy Fail/DirtyFrag, Elastic también sugiere combinar el parcheo con la detección de primitivas de explotación de bajo nivel de la vulnerabilidad.
Las primitivas de explotación de bajo nivel no son el "hackeo listo para usar", sino técnicas técnicas básicas que forman el exploit.
En el contexto de GRO Frag, esto puede significar no detectar el hecho ya consumado de que "el usuario se ha convertido en root", sino intentar notar acciones sospechosas específicas que el exploit utiliza en el camino hacia la elevación de privilegios.
Fuente: linux.org.ru
