Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-68138 — Exploit de prueba de concepto para la escalada local de privilegios que aprovecha una condición de carrera en la tabla de tasas de qdisc de Linux, utilizando heap grooming con BPF y una fuga de pipe para obtener root. | Kitploit
Herramientas/GitHubGitHub/aramosf/cve-2026-68138
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubaramosf/cve-2026-68138

CVE-2026-68138

Exploit de prueba de concepto para la escalada local de privilegios que aprovecha una condición de carrera en la tabla de tasas de qdisc de Linux, utilizando heap grooming con BPF y una fuga de pipe para obtener root.

Ver Repositorio
33611hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-68138: condición de carrera en la tabla de tasas qdisc de Linux para escalar a root local

Exploit en vivo de CVE-2026-68138

Este repositorio contiene un exploit de prueba de concepto de escalada local de privilegios para CVE-2026-68138, una condición de carrera en el código de la tabla de tasas del control de tráfico de Linux. En el entorno QEMU probado, el PoC escala desde un proceso común con UID externo 1000 hasta una shell con UID 0 en el espacio de nombres de usuario inicial.

Advertencia

Este código corrompe intencionalmente el estado del heap del kernel. Úsalo únicamente en una VM aislada y desechable que sea tuya. Una condición de carrera fallida o una limpieza prematura pueden provocar un pánico en el invitado. No lo ejecutes en una estación de trabajo, servidor o sistema de terceros.

Resumen de la vulnerabilidad

qdisc_get_rtab() y qdisc_put_rtab() gestionan una lista simplemente enlazada global al proceso, qdisc_rtab_list, y un simple int refcnt no atómico. Históricamente, los llamadores mantenían el mutex RTNL, que serializaba el acceso a la lista y al contador de referencias.

El clasificador flower establece TCF_PROTO_OPS_DOIT_UNLOCKED. Una solicitud RTM_NEWTFILTER para una regla flower puede, por tanto, alcanzar una acción police y llamar a los helpers de la tabla de tasas qdisc sin RTNL:

tc_new_tfilter()
  -> fl_change()
     -> tcf_exts_validate_ex()
        -> tcf_action_init()
           -> tcf_police_init()
              -> qdisc_get_rtab()/qdisc_put_rtab()

Las solicitudes concurrentes que usan la misma tabla de tasas pueden provocar una condición de carrera en la lista global y su contador de referencias. El resultado es un use-after-free o un double-free de struct qdisc_rate_table, un objeto de 1056 bytes asignado desde kmalloc-2k en el kernel x86-64 probado.

Debido a que la lista es global y no por espacio de nombres de red, las solicitudes de espacios de nombres de red separados siguen provocando una condición de carrera sobre el mismo objeto.

Versiones afectadas y corregidas

El registro CNA de Linux identifica el commit de introducción 470502de5bdb, publicado en Linux 5.1.

LíneaEstadoCommit/versión
Linux anterior a 5.1No afectadoEl cambio de introducción está ausente
Linux 5.1 hasta 7.1.5Afectado a menos que esté presente un backport del proveedor470502de5bdb hasta el commit anterior a la corrección estable
Linux 7.1.yCorregido7.1.6, fb29e1b41052
Serie de desarrollo de Linux 7.2Afectado antes de rc5desde rc1 hasta rc4
MainlineCorregido7.2-rc5, f43ee0c0730d

Los kernels de las distribuciones suelen aplicar backports de las correcciones sin cambiar a la versión upstream mostrada arriba. Comprueba si alguno de los commits de corrección—o el cambio equivalente de spinlock en la tabla de tasas qdisc—está presente en la fuente exacta del kernel que usa el sistema.

El exploit se desarrolló y validó contra el commit vulnerable 92d3817649df2b0b6a008a686c8275c88d7ef594, el padre directo de la corrección de mainline. El control de kernel corregido usó f43ee0c0730d6191629b5ee1ceae27b1ebfdc047.

Estado de distribución en Ubuntu

A fecha de 2026-08-12, la búsqueda en el rastreador de CVEs de Ubuntu no devolvió una entrada para este CVE. Por lo tanto, la tabla siguiente es una inspección directa de la fuente, no una determinación del estado de seguridad de Canonical. Cada etiqueta de Ubuntu enlazada todavía tiene qdisc_rtab_list sin bloquear y carece del qdisc_rtab_lock correctivo.

Línea de UbuntuPaquete/etiqueta inspeccionadoResultado de la fuente
Ubuntu 22.04 GA5.15.0-187.197Código vulnerable presente; exploit completo reproducido en QEMU
Ubuntu 22.04 HWE6.8.0-136.136~22.04.1Código vulnerable presente; cadena de exploit no probada
Ubuntu 24.04 HWE7.0.0-28.28~24.04.1Código vulnerable presente; esta cadena de exploit no es compatible con su endurecimiento del asignador
Ubuntu 26.047.0.0-28.28Código vulnerable presente; esta cadena de exploit no es compatible con su endurecimiento del asignador

No se identificó ningún paquete de Ubuntu corregido en esa fecha de inspección. Los futuros paquetes de Ubuntu deberían comprobarse para ver si contienen un backport equivalente a las correcciones upstream enlazadas, en lugar de juzgarlos solo por su número de versión.

El exploit específico de la compilación de Ubuntu 22.04, el laboratorio QEMU, la suma de verificación exacta de la imagen y las condiciones están documentados en ubuntu/README.md. Se validó contra el kernel oficial 5.15.0-187-generic #197-Ubuntu con la contabilidad de memory-cgroup habilitada.

Condiciones requeridas por el PoC principal

El bug subyacente y esta cadena de exploit en particular tienen requisitos diferentes. El PoC se validó con:

  • x86-64 Linux y cuatro CPUs virtuales;
  • espacios de nombres de usuario y de red no privilegiados habilitados;
  • CONFIG_USER_NS=y y CONFIG_NET_NS=y;
  • CONFIG_NET_CLS=y, CONFIG_NET_CLS_FLOWER=y, CONFIG_NET_CLS_ACT=y y CONFIG_NET_ACT_POLICE=y;
  • filtros de socket BPF clásicos y soporte de BPF JIT;
  • CONFIG_TMPFS_XATTR=y para el heap spray simple_xattr;
  • CONFIG_MODULES=y y un /sbin/modprobe utilizable para el helper root final;
  • CONFIG_MEMCG=n, de modo que las asignaciones qdisc/BPF/pipe/xattr usadas por esta cadena compartan la caché kmalloc-2k esperada;
  • un límite de descriptores de archivo por proceso de al menos 4096; y
  • una VM desechable con aproximadamente 5 GiB de RAM.

CONFIG_SLAB_BUCKETS=y, la aleatorización de freelist y el endurecimiento de freelist estaban habilitados en el kernel de prueba que tuvo éxito. KASLR no se evade inherentemente con una dirección fija: el PoC obtiene los punteros page y ops necesarios de la fuga de pipe. El laboratorio suministrado usó nokaslr para simplificar la depuración.

Los kernels con contabilidad de memory-cgroup habilitada o con diferentes diseños de asignador/caché requieren una estrategia de recuperación diferente. El PoC se niega deliberadamente a afirmar portabilidad entre configuraciones arbitrarias de distribuciones.

La variante separada para Ubuntu implementa esa estrategia de recuperación diferente; sus requisitos son intencionadamente más reducidos y se enumeran en ubuntu/README.md.

Proceso de explotación

1. Disparar la condición de carrera en qdisc

Descargar herramienta