Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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-68121 — Repositorio de investigación para CVE-2026-68121, un use-after-free en PPPoE del kernel de Linux en pppoe_sendmsg() que permite escalada local de privilegios, con PoC, análisis de causa raíz y configuración de laboratorio. | Kitploit
Herramientas/GitHubGitHub/0xblackash/cve-2026-68121
Escalada de PrivilegiosForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónIngeniería InversaPapers e InvestigaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHub0xblackash/cve-2026-68121

CVE-2026-68121

Repositorio de investigación para CVE-2026-68121, un use-after-free en PPPoE del kernel de Linux en pppoe_sendmsg() que permite escalada local de privilegios, con PoC, análisis de causa raíz y configuración de laboratorio.

hace 8h 6mAún no revisado

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
Ver Repositorio

⚡ CVE-2026-68121 - PPPoEject

Linux Kernel PPPoE Use-After-Free → Escalada de Privilegios Local

Una vulnerabilidad de corrupción de memoria en el kernel de Linux en la ruta de transmisión PPPoE, causada por un puntero obsoleto a una cabecera sk_buff después de que un callback de cabecera de dispositivo reubique la cabecera del skb.


⚠️ Descargo de responsabilidad

Este repositorio está destinado únicamente a investigación de seguridad autorizada, análisis de vulnerabilidades del kernel, entornos CTF y pruebas defensivas.

No ejecute código de prueba de concepto contra sistemas sin autorización explícita.


📌 Descripción general de la vulnerabilidad

El registro CVE identifica la vulnerabilidad como un puntero de cabecera PPPoE obsoleto que puede volverse inválido cuando dev_hard_header() reubica la cabecera del skb.


🧬 Descripción de la vulnerabilidad

La vulnerabilidad existe en:

root@kitploit:~
drivers/net/ppp/pppoe.c

dentro de:

root@kitploit:~
pppoe_sendmsg()

La secuencia vulnerable es conceptualmente:

root@kitploit:~
pppoe_sendmsg()
      │
      ▼
Guardar puntero de cabecera PPPoE
      │
      ▼
dev_hard_header()
      │
      ▼
la cabecera del skb puede reubicarse
      │
      ▼
El puntero antiguo queda obsoleto
      │
      ▼
PPPoE escribe a través del puntero obsoleto
      │
      ▼
Use-After-Free
      │
      ▼
Corrupción de memoria del kernel

El código de red de Linux permite que los callbacks de cabecera de dispositivo reubiquen la cabecera del sk_buff. Por lo tanto, un puntero a la cabecera antigua no puede reutilizarse de forma segura después de que dev_hard_header() retorne.


🔬 Causa raíz

El problema central es una violación del tiempo de vida.

pppoe_sendmsg() obtiene un puntero a la cabecera PPPoE antes de invocar:

root@kitploit:~
dev_hard_header()

Sin embargo, ese callback puede provocar que la cabecera del skb se mueva.

Conceptualmente:

root@kitploit:~
Antes del callback:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       puntero obsoleto


Después de la expansión del skb:

cabecera antigua del skb ──X──► liberada

nueva cabecera del skb
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      ubicación válida

El puntero antiguo sigue referenciando la asignación liberada.

Cuando PPPoE posteriormente escribe la cabecera a través de ese puntero, el kernel realiza una escritura use-after-free.


🧠 Condición de activación

El disparador documentado implica una condición de carrera en torno a copy_from_user() y cambios en las operaciones de cabecera de un dispositivo team.

Una secuencia descrita es:

root@kitploit:~
PPPoE sendmsg()
      │
      ▼
copy_from_user() se bloquea
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
El dispositivo team cambia   Se añade el primer puerto
las operaciones de cabecera  no Ethernet
                      │
                      ▼
               Callback GRE delegado
                      │
                      ▼
               Expansión de la cabecera del skb
      │               │
      └───────────────┘
              │
              ▼
       puntero PPPoE obsoleto
              │
              ▼
       escritura use-after-free

El registro CVE señala que esto puede ocurrir cuando el primer puerto no Ethernet se añade a un dispositivo team vacío y el callback de cabecera GRE delegado expande la cabecera del skb.


💥 Impacto de seguridad

La vulnerabilidad puede provocar:

  • Use-after-free en el heap del kernel
  • Corrupción de memoria del kernel
  • Caída del kernel / denegación de servicio
  • Potencial divulgación de memoria del kernel
  • Potencial modificación arbitraria de memoria del kernel
  • Potencial ejecución de código en el kernel
  • Escalada de privilegios local

El vector CVSS publicado del CVE es:

root@kitploit:~
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

con una puntuación base de 7.8 Alta.


🔎 Superficie de ataque técnica

Los componentes relevantes son:

root@kitploit:~
PF_PPPOX / PPPoE socket
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 Callback de cabecera del dispositivo de red
          │
          ▼
 Potencial expansión de la cabecera del skb
          │
          ▼
 Puntero de cabecera PPPoE obsoleto
          │
          ▼
     Escritura UAF

Por lo tanto, el código vulnerable no es simplemente un analizador genérico de paquetes PPPoE; la condición crítica es la interacción entre la transmisión de sockets PPPoE y la reubicación dinámica de la cabecera del skb.


🩹 Corrección upstream

La corrección upstream se titula:

root@kitploit:~
pppoe: reload header pointer after dev_hard_header()

La corrección recarga la cabecera PPPoE a través del offset de cabecera de red del skb después de la creación de la cabecera del dispositivo.

La propiedad importante es:

root@kitploit:~
Antes:

puntero de cabecera
      │
      ▼
dev_hard_header()
      │
      ▼
el skb se mueve
      │
      ▼
puntero = obsoleto ❌


Después:

dev_hard_header()
      │
      ▼
el skb puede moverse
      │
      ▼
recargar cabecera usando el offset del skb
      │
      ▼
puntero = válido ✅

pskb_expand_head() actualiza el offset relevante del skb cuando la cabecera del skb se reubica, haciendo que la búsqueda basada en offset sea segura después de la reubicación.


📊 Vulnerable vs Parcheado


🧪 Entorno de investigación

Un laboratorio controlado puede estructurarse como:

root@kitploit:~
┌───────────────────────────────────────────────┐
│                 Linux VM                     │
│                                               │
│       ┌───────────────┐                       │
│       │ PPPoE Socket  │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │ pppoe_sendmsg │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     Team      │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     GRE       │                       │
│       └───────────────┘                       │
│                                               │
└───────────────────────────────────────────────┘

Herramientas útiles de depuración del kernel:

root@kitploit:~
gdb
pwndbg
gef
crash
objdump
readelf
pahole

Monitorizar mensajes del kernel:

root@kitploit:~
sudo dmesg -w

Inspeccionar el soporte PPPoE:

root@kitploit:~
lsmod | grep pppoe

Comprobar los módulos PPP disponibles:

root@kitploit:~
find /lib/modules/$(uname -r) -iname '*pppoe*'

🔎 Verificación del kernel

Comprobar el kernel en ejecución actualmente:

root@kitploit:~
uname -r

Comprobar la configuración relacionada con PPPoE:

root@kitploit:~
grep -E 'CONFIG_PPP|CONFIG_PPPOE' \
/boot/config-$(uname -r)

Las opciones relevantes típicas incluyen:

root@kitploit:~
CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 Flujo de trabajo de reproducción

Para investigación controlada del kernel:

root@kitploit:~
01. Compilar kernel vulnerable
          ↓
02. Arrancar VM aislada
          ↓
03. Habilitar soporte PPPoE
          ↓
04. Crear topología de red controlada
          ↓
05. Configurar interacción team/GRE
          ↓
06. Ejercitar PPPoE sendmsg()
          ↓
07. Monitorizar el tiempo de vida del skb
          ↓
08. Capturar diagnósticos del kernel
          ↓
09. Aplicar el parche upstream
          ↓
10. Repetir y comparar

El objetivo es reproducir la violación del tiempo de vida de la memoria de forma segura y comparar el comportamiento vulnerable y el parcheado.


📂 Estructura del repositorio

root@kitploit:~
CVE-2026-68121-PPPoEject/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── pppoe-sendmsg.md
│   ├── skb-lifetime.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ Mitigación

La mitigación recomendada es actualizar a un kernel de Linux que contenga la corrección upstream o un backport apropiado de la distribución.

Para Debian/Kali:

root@kitploit:~
sudo apt update
sudo apt full-upgrade

Luego reiniciar:

root@kitploit:~
sudo reboot

Verificar el kernel en ejecución:

root@kitploit:~
uname -r

Los backports de las distribuciones pueden usar números de versión diferentes, por lo que los administradores deberían verificar su paquete instalado contra el aviso de seguridad de la distribución. Debian actualmente enumera versiones corregidas que incluyen 6.1.187-1 para Bookworm y 6.12.101-1 para Trixie.


📦 Referencias de la corrección upstream

Los árboles estables de Linux contienen la corrección en múltiples ramas mantenidas. El registro CVE enumera los commits estables correspondientes e identifica el archivo fuente afectado como:

root@kitploit:~
drivers/net/ppp/pppoe.c

El historial vulnerable comienza con la implementación PPPoE del kernel de Linux y la serie de commits corregidos termina en la corrección upstream representada por 7a56e7c9b08e08fd55a1bcada24cf4fe3782b722 en los datos del CVE.


🧩 Lecciones de seguridad

01 — El tiempo de vida de los punteros importa

No se puede asumir que un puntero a un skb sea válido después de un callback capaz de reubicar la cabecera del skb.

02 — Los callbacks pueden invalidar suposiciones

Los callbacks de red pueden cambiar la disposición subyacente de la memoria.

03 — Usar offsets cuando la memoria puede moverse

El parche demuestra por qué un offset relativo al skb es más seguro que retener un puntero sin procesar a través de una operación que potencialmente reubica memoria.

04 — Las condiciones de carrera amplifican los bugs de memoria

El estado vulnerable depende de actividad concurrente en torno a la transmisión de paquetes y la configuración del dispositivo de red.

05 — Los UAF del kernel tienen alto impacto

Un puntero obsoleto en el código de red del kernel puede convertirse en una primitiva de corrupción de memoria con consecuencias para la confidencialidad, integridad y disponibilidad.


📚 Referencias

  • CVE: CVE-2026-68121
  • Nombre en clave: PPPoEject
  • Subsistema de Linux: PPPoE
  • Fuente: drivers/net/ppp/pppoe.c
  • Función principal: pppoe_sendmsg()
  • Corrección: pppoe: reload header pointer after dev_hard_header()
  • CVSS: 7.8 Alta
  • Debian Security Tracker: CVE-2026-68121
  • Referencias del Kernel de Linux / Estable: enumeradas en el registro CVE

⚡ PPPoEject

CVE-2026-68121

Linux Kernel · PPPoE · Use-After-Free · Kernel Security · LPE


Investigar • Analizar • Reproducir • Asegurar


0xBlackash

Descargar herramienta
CampoDetalles
CVECVE-2026-68121
Nombre en clavePPPoEject
ComponenteLinux Kernel
SubsistemaPPPoE / Networking
Archivo afectadodrivers/net/ppp/pppoe.c
Función principalpppoe_sendmsg()
Clase de bugUse-After-Free
ImpactoCorrupción de memoria del kernel
Impacto potencialEscalada de privilegios local
CVSS v3.17.8 — Alta
Vector de ataqueLocal
Complejidad del ataqueBaja
Privilegios requeridosBajos
Interacción del usuarioNinguna
EstadoParcheado
Propiedad de seguridadVulnerableParcheado
Puntero de cabecera guardado antes del callback✅—
La cabecera del skb puede moverse✅✅
Puntero actualizado después del callback❌✅
Desreferencia de puntero obsoletoPosiblePrevenido
Escritura use-after-freePosibleMitigado
Corrupción de memoria del kernelPosibleMitigado