Frag Gap (CVE-2026-53362) es una vulnerabilidad en el kernel Linux que afecta a la ruta de corking de UDP sobre IPv6 cuando CONFIG_IPV6 está habilitado. El fallo permite una escritura fuera de límites de 15 bytes en la estructura skb_shared_info mediante dos llamadas a splice(). El error se origina por un cálculo contable incorrecto introducido en el commit 773ba4fe9104 y se volvió explotable tras el commit ce650a166335. La función __ip6_append_data() contabiliza los bytes que cruzan una frontera de fragmento (fraggap) como datos lineales que deberá gestionar el siguiente skb, pero en la rama paged los trata como datos externos y no reserva espacio para ellos en el área lineal. Al copiarlos mediante skb_put y un real linear copy, los últimos 15 bytes del skb anterior sobrescriben el inicio de skb_shared_info. Para reproducirlo se emplea un socket UDPv6 en loopback con cabecera de enrutamiento de 320 bytes y MTU de 1287, junto con dos cargas en una pipe de 919 y 20 bytes. Esto sitúa nr_frags a 1 y hace que frags[0] se lea como válido aunque apunte a una dirección residual del heap. La primitiva se eleva a un exploit completo reutilizando un descriptor de fragmento no inicializado, anexando una segunda página de pipe y provocando una liberación de página huérfana. Esa página se reasigna después como tabla PTE, lo que permite lecturas y escrituras en memoria física. El exploit reescribe core_pattern para ejecutar un binario auxiliar con privilegios de root. El fallo fue corregido en el commit 736b380e28d0. El código y un repositorio de prueba están disponibles en el enlace facilitado por el autor.
