
Kit educativo y defensivo para dos LPE de Linux por corrupción de page-cache (DirtyClone CVE-2026-43503, pedit COW CVE-2026-46331): endurecimiento, detección, verificación, seccomp + harness de validación. Solo detección y prevención — sin código de explotación. TLP:CLEAR.
Detecta, contiene y verifica defensas contra dos escaladas locales de privilegios por corrupción del caché de páginas (page cache) de Linux — DirtyClone (CVE-2026-43503) and pedit COW (CVE-2026-46331) — en hosts y contenedores.
Este es un kit de seguridad educativo y defensivo. Explica cómo funcionan ambas vulnerabilidades a nivel de llamadas al sistema (syscalls) e incluye herramientas de endurecimiento, detección, verificación y seccomp — además de un banco de pruebas de validación que demuestra que las herramientas funcionan en kernels reales. No contiene exploits, shellcode ni offsets de objetivo, por diseño.
Ambos CVE permiten que un usuario local sin privilegios se convierta en root corrompiendo el caché de páginas (la copia en RAM)
de un binario setuid-root como /usr/bin/su — sin tocar jamás el archivo en disco. Eso los hace
sigilosos: el monitoreo de integridad de archivos permanece en verde, la forensia de disco no encuentra nada y la
corrupción desaparece al reiniciar.
Parchear el kernel es la solución real. Pero durante la ventana de implementación — y como defensa en profundidad después — necesitas cerrar las vías de ataque, vigilar la cadena de ataque y verificar tu postura. Eso es lo que proporciona este kit, con cada control mapeado de vuelta a un paso documentado de la cadena de explotación para que puedas ver por qué funciona.
Ambos fallos son de la misma clase de defecto: el kernel escribe en un buffer que cree privado mientras ese buffer sigue respaldado por memoria de caché de páginas compartida y respaldada por archivos. Dos compuertas estructurales gobiernan cada variante de ambas cadenas:
Corregido upstream en versiones puntuales estables (DirtyClone ≥ 6.12.91 / 7.0.10; pedit COW 6.12.94 / 7.0.13) además de backports de los proveedores; mainline 7.1 es la versión final. Confirma tu kernel contra el rastreador de tu distribución — consulta docs/analysis.md §8.
Solo hosts Linux. Estos scripts leen y escriben estado real del kernel. Ejecuta el endurecimiento en un host que controles; ejecuta el banco de pruebas destructivo de validación en una VM desechable. Consulta Requisitos.
# 1. Previsualiza los cambios de contención del host (no escribe nada)
sudo ./kit/harden-pagecache-lpe.sh --dry-run
# 2. Aplica restricciones de userns + bloqueo de módulos vulnerables
sudo ./kit/harden-pagecache-lpe.sh
# 3. Verifica la postura — ejecuta la sonda funcional como un usuario SIN privilegios
sudo -u nobody ./kit/verify-pagecache-lpe.sh # exit: 0=PASS 1=WARN 2=FAIL
# 4. (Opcional) Observa la cadena de ataque en vivo con eBPF
sudo bpftrace ./kit/detect-pagecache-lpe.bt
Para contenedores, aplica la superposición seccomp
(kit/seccomp-pagecache-lpe.json):
docker run --security-opt seccomp=kit/seccomp-pagecache-lpe.json <image>
¿Nuevo aquí? Lee START-HERE.md — un recorrido guiado, estilo clase magistral, desde la
causa raíz hasta una ejecución de validación completa.
.
├── START-HERE.md Recorrido guiado — el punto de entrada recomendado
├── docs/ El "por qué": análisis y orientación para operadores
│ ├── analysis.md Análisis de causa raíz, cadenas de ataque, ingeniería de detección
│ ├── HARDENING-GUIDE.md Guía de contención para operadores (host → systemd → Docker → Kubernetes)
│ └── plain-language-summary.md Resumen más sencillo, en lenguaje claro, de ambos fallos
├── kit/ El "qué ejecutas": cuatro artefactos autónomos
│ ├── harden-pagecache-lpe.sh Aplica contención en el host (sysctl + bloqueos de módulos)
│ ├── verify-pagecache-lpe.sh Comprobación de postura de solo lectura (PASS/WARN/FAIL)
│ ├── detect-pagecache-lpe.bt Telemetría bpftrace/eBPF para la cadena de preparación
│ └── seccomp-pagecache-lpe.json Superposición seccomp para contenedores que deniega las syscalls de la cadena
└── testkit/ La "prueba": banco de pruebas de validación + informe SHOWCASE.md
harden, verify): un host Linux con bash, sysctl, modprobe
y unshare. Root para el endurecimiento; ejecuta la sonda de verificación como usuario no root.detect-pagecache-lpe.bt): root, bpftrace ≥ 0.16 y BTF del kernel
(/sys/kernel/btf/vmlinux). Algunas kprobes pueden estar inline en un kernel determinado — el encabezado del script
explica cómo adaptarse.testkit/): una VM Linux desechable — escribe configuración real y descarga
módulos del kernel. El lanzador de EC2 necesita la CLI de AWS v2 y jq; no se usa SSH (el transporte es AWS
SSM). Los usuarios de macOS pueden ejecutar la prueba de humo local con Docker, pero la validación completa requiere Linux.TLP:CLEAR — distribución pública y sin restricciones. Este repositorio es solo detección y prevención. Incluye deliberadamente:
…y excluye deliberadamente:
Los límites honestos de este enfoque — qué demuestra y qué no demuestra la validación — están documentados en
testkit/SHOWCASE.md §8. Úsalo solo en sistemas que poseas o que estés autorizado a
probar. El endurecimiento es contención, no una cura: parchea tu kernel.
START-HERE.md — el recorrido guiado (empieza aquí)docs/analysis.md — el análisis técnico completodocs/plain-language-summary.md — un
resumen más sencillo, en lenguaje claroLas incidencias y las solicitudes de extracción (pull requests) son bienvenidas — consulta CONTRIBUTING.md. Dado que los controles
se reflejan en varios archivos (la lista de módulos, los ajustes de userns, el mapa de bits de detección), por favor
lee los invariantes de sincronización de esa guía antes de cambiar la superficie de ataque.
Licenciado bajo la Apache License 2.0.
| Compuerta | Qué es | Fortaleza como control |
|---|
| 1. Ruta de capacidades | CAP_NET_ADMIN obtenida mediante espacios de nombres de usuario sin privilegios (unshare(CLONE_NEWUSER|CLONE_NEWNET)) | Punto de estrangulamiento robusto — todas las variantes deben pasar por aquí, conocidas y desconocidas. Ciérralo primero. |
| 2. Superficie de módulos | Módulos vulnerables: act_pedit, esp4/esp6, rxrpc, xt_TEE, nf_dup_ipv4/nf_dup_ipv6 | Defensa en profundidad — elimina solo las primitivas conocidas; un sumidero novedoso lo evadiría. |
| Componente | Rol |
|---|
docs/analysis.md | Fuente de verdad: causa raíz, cadenas de ataque conductuales, ingeniería de detección, endurecimiento, tabla comparativa. |
docs/HARDENING-GUIDE.md | Contención en capas para hosts, unidades systemd, Docker/Podman y Kubernetes. |
kit/ | Los cuatro entregables. Copia este directorio a un host para defenderlo. |
testkit/ | Validación reproducible en kernels reales (Docker local + EC2 desechable), y SHOWCASE.md — una evaluación honesta de qué demuestran y qué no demuestran las pruebas. |