Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
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
linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense- — Neutralización de CVE activos del kernel de Linux de CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) mediante eBPF moderno, desarme de módulos y espacios de nombres de usuario de containerd. | Kitploit
Herramientas/GitHubGitHub/mc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-
Herramientas DefensivasSeguridad de ContenedoresAnálisis de VulnerabilidadesDevSecOpsRespuesta a Incidentes
GitHubmc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

Neutralización de CVE activos del kernel de Linux de CISA (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) mediante eBPF moderno, desarme de módulos y espacios de nombres de usuario de containerd.

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 →
Ver Repositorio
6hace 1 díaAún no revisado
Compartir

Defensa de Día Cero del Kernel de Linux sin Tiempo de Inactividad: Controles Compensatorios en Capas mediante Telemetría eBPF, Desarme de Módulos y Espacios de Nombres de Usuario

Cuando la Agencia de Seguridad de Ciberseguridad e Infraestructura (CISA) añade vulnerabilidades críticas del kernel de Linux a su catálogo de Vulnerabilidades Explotadas Conocidas (KEV), comienza a correr un reloj operativo urgente para los equipos de infraestructura y los líderes de SRE:

La Brecha del Parche Upstream:
La duración entre la weaponización pública de un día cero en estado salvaje y la disponibilidad de paquetes de kernel binarios firmados y probados de distribuciones empresariales (Ubuntu HWE, Debian, RHEL) típicamente abarca de 7 a 21 días.

En clústeres de Kubernetes en producción, esperar pasivamente los paquetes del proveedor expone los sistemas a explotación activa, mientras que las actualizaciones prematuras del kernel o los reinicios de emergencia conllevan riesgos de interrupciones operativas.

Este caso de estudio documenta un marco de controles compensatorios de defensa en profundidad diseñado para gestionar tres vulnerabilidades concurrentes del kernel de Linux (CVE-2025-39964, CVE-2026-53266, CVE-2025-39682) a través del espacio de usuario, el cargador del kernel y las capas de tiempo de ejecución sin requerir reinicios del host.


Matriz de Amenazas y Taxonomía de Defensa

Para garantizar la precisión operativa, las defensas se clasifican estrictamente por sus propiedades de seguridad (, y ):

Prevención
Detección en Tiempo de Ejecución
Contención
VulnerabilidadSubsistemaMecanismo de AtaqueSeveridadModo de DefensaMecanismo de Implementación
CVE-2026-53266Puente Netfilter (ebtables)Desbordamiento aritmético en reglas de reescritura de tabla ARP del puenteAlta (Corrupción de Memoria)Prevención (Desarme)Expulsión de RAM (modprobe -r) + anulación del cargador (/bin/true)
CVE-2025-39964Crypto Netlink (AF_ALG)Truncamiento de enteros en la asignación de sockets netlink de criptografíaAlta (LPE / Escape)Detección (eBPF) / Control de AccesoeBPF Moderno (sys_enter_socket, dominio 38) + SECCOMP
CVE-2025-39682TLS del Kernel (kTLS)Fallo en el procesamiento de registros de longitud cero en TCP ULPAlta (Pánico del Kernel / Heap)Detección (eBPF)eBPF Moderno (sys_enter_setsockopt, TCP_ULP 31 y SOL_TLS 282)

Arquitectura de Defensa en Profundidad por Capas

root@kitploit:~
flowchart TD
    subgraph Ring3 ["User Space / Container Pod (Ring 3)"]
        Workload["Container Workload / Untrusted Process"]
        Probe["Exploit Vectors: socket(AF_ALG) or setsockopt(TCP_ULP)"]
        Workload --> Probe
    end

    subgraph Ring0 ["Linux Kernel (Ring 0)"]
        SyscallTrap["Syscall Trap (sysenter)"]
        Probe --> SyscallTrap
        
        Tracepoint["Kernel Tracepoint: sys_enter"]
        SyscallTrap --> Tracepoint
        
        subgraph eBPFEngine ["Modern eBPF Detection (CO-RE Ring Buffer)"]
            Filter{"Syscall Gating:\n- domain == 38 (AF_ALG)\n- SOL_TCP + TCP_ULP\n- SOL_TLS (282)"}
            Tracepoint --> Filter
        end
        
        Disarmed["Modprobe Hook: /bin/true\n(ebtables evicted & blocked)"]
        UserNS["containerd v2.2.4 User Namespace Remap\nContainer UID 0 -> Host UID 4050714624\n(Bounded Credential Containment)"]
        
        Filter -- "Match (<1ms)" --> AlertRingBuf["Ring Buffer Emission"]
        Filter -- "Pass" --> KernelExec["Normal Execution Path"]
        KernelExec --> UserNS
    end

    subgraph SecurityPipeline ["Reactive Event Pipeline"]
        Falcosidekick["Falco Daemon & Sidekick (:2801)"]
        Forwarder["Event Forwarder Daemon (:9876)"]
        NATSBus["NATS Security Bus (sovereign.security.alert)"]
        
        AlertRingBuf --> Falcosidekick
        Falcosidekick --> Forwarder
        Forwarder --> NATSBus
    end

    subgraph Enforcement ["Automated Remediation & Audit"]
        Remediator["Dynamic Bouncer (CrowdSec / nftables Drop)"]
        AuditLedger["Cryptographically Tamper-Evident Hash Chain\n(SHA-256 Chaining & Cross-Node Replication)"]
        
        NATSBus --> Remediator
        NATSBus --> AuditLedger
    end

    classDef danger fill:#ffdddd,stroke:#ff0000,stroke-width:2px;
    classDef safe fill:#ddffdd,stroke:#00aa00,stroke-width:2px;
    classDef arch fill:#f0f4f8,stroke:#0066cc,stroke-width:1px;
    class Probe danger;
    class Disarmed,UserNS,AuditLedger safe;

Capa 1: Desarme de Módulos del Kernel (Preventivo)

1. El Matiz Operativo: Memoria Activa vs. Sondeo Futuro

Un error común con las anulaciones en /etc/modprobe.d/ es que install /bin/true solo bloquea los intentos posteriores de carga del módulo. Si la red de puente (Docker, CNI heredado) cargó ebtables antes en el ciclo de vida del host, el código vulnerable permanece activo en la RAM del kernel.

El desarme sin tiempo de inactividad requiere una secuencia de dos pasos:

  1. Expulsión: Descargar los módulos actualmente residentes de la memoria del kernel.
  2. Sellado: Configurar anulaciones del cargador /bin/true para evitar la recarga.

2. Implementación

root@kitploit:~
# Step A: Evict active ebtables modules from running kernel RAM
sudo modprobe -r ebtable_nat ebtable_filter ebtable_broute ebt_snat ebt_dnat ebt_arpreply ebtables 2>/dev/null || true

# Step B: Seal the loader via /etc/modprobe.d/blacklist-ebtables.conf
sudo tee /etc/modprobe.d/blacklist-ebtables.conf << 'EOF'
# Mitigation for CVE-2026-53266: Netfilter ARP table corruption
install ebtables /bin/true
install ebtable_nat /bin/true
install ebtable_broute /bin/true
install ebtable_filter /bin/true
install ebt_snat /bin/true
install ebt_dnat /bin/true
install ebt_arpreply /bin/true

blacklist ebtables
blacklist ebtable_nat
blacklist ebt_snat
blacklist ebt_arpreply
EOF

3. Verificación

root@kitploit:~
# Test explicit loading:
$ sudo modprobe ebt_snat
$ lsmod | grep ebt
# Output: (Empty - 0 modules resident in kernel memory)

Capa 2: Telemetría de Syscalls eBPF y Control de Acceso Conductual (Detección)

1. Detección vs. Prevención en Línea

  • Falco eBPF (EDR Asíncrono): Engancha sys_enter mediante búferes de anillo eBPF modernos, proporcionando alertas en menos de un milisegundo hacia SIEM/NATS. Está optimizado para visibilidad sin sobrecarga sin modificar el flujo de control del kernel.
  • Bloqueo en Línea (LSM Síncrono): Para entornos que requieren rechazo síncrono (-EACCES), una sonda eBPF LSM o un perfil SECCOMP pueden descartar la syscall antes de su ejecución.

2. Mecánica Corregida de Syscalls kTLS (Control de Acceso en Dos Fases)

Habilitar TLS del Kernel en una conexión TCP ocurre en dos fases distintas:

  1. Fase 1 (Vinculación): setsockopt(fd, SOL_TCP=6, TCP_ULP=31, "tls", 4) vincula el Protocolo de Capa Superior.
  2. Fase 2 (Configuración): setsockopt(fd, SOL_TLS=282, TLS_TX/TLS_RX, ...) inicializa las claves criptográficas.

Filtrar únicamente por SOL_TLS (282) omite la fase de vinculación del ULP. La regla evalúa ambas fases:

root@kitploit:~
# falco-rules-kernel-cve.yaml
customRules:
  rules-kernel-cve.yaml: |-
    - rule: Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)
      desc: Detects creation of Crypto API Netlink sockets used in local privilege escalation
      condition: evt.type = socket and evt.rawarg.domain = 38
      output: "Active Exploit Probe: AF_ALG socket requested (domain=%evt.rawarg.domain type=%evt.rawarg.type user=%user.name proc=%proc.name container=%container.id)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39964, crypto, container_escape]

    - rule: Detect Container Kernel TLS Activation (CVE-2025-39682)
      desc: Detects container workloads attaching kTLS TCP_ULP or configuring SOL_TLS
      condition: container.id != host and evt.type = setsockopt and 
                 ((evt.rawarg.level = 6 and evt.rawarg.optname = 31) or (evt.rawarg.level = 282))
      output: "Container kTLS Activation Detected (level=%evt.rawarg.level optname=%evt.rawarg.optname user=%user.name proc=%proc.name container=%container.name)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39682, ktls, tcp_ulp]

3. Estabilidad en Producción: Invariante del Filtro ABI de Linux 7.0

En kernels de Linux modernos (Linux 7.0+ HWE), el motor inspector del espacio de usuario de Falco (sinsp) encuentra desajustes en el análisis de registros en los parámetros de openat (sinsp_exception: could not parse param 2 (name)).

Para garantizar la estabilidad continua del DaemonSet sin bucles de fallos:

root@kitploit:~
falco:
  base_syscalls:
    custom_set: ['!openat']

4. (Opcional) Bloqueo Síncrono en Línea mediante SECCOMP

Si las cargas de trabajo dentro del contenedor deben tener estrictamente prohibido llamar a AF_ALG, aplique un perfil SECCOMP que devuelva SCMP_ACT_ERRNO:

root@kitploit:~
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}

Capa 3: Aislamiento de Espacios de Nombres de Usuario (Contención)

1. Escalada Acotada vs. Escritura Arbitraria en Ring-0

  • Escalada de Privilegios Acotada: La mayoría de los LPE de Netlink/socket explotan fallos lógicos del kernel para adquirir root dentro de la estructura de credenciales del proceso (current->cred).
  • La Defensa UserNS: En containerd v2.2.4 con Kubernetes CRI v1.30 (hostUsers: false), el root del contenedor (UID 0) se mapea a un rango de host sin privilegios (UID de host 4050714624). Las escaladas de credenciales acotadas permanecen restringidas dentro del espacio de nombres no root.
  • Límite Realista: Las vulnerabilidades de escritura arbitraria completa en ring-0 (control directo del puntero de instrucción del kernel o de las tablas de páginas) pueden eludir los límites de los espacios de nombres de usuario; tales amenazas requieren aislamiento a nivel de microVM o hipervisor (por ejemplo, Firecracker, Kata).

2. Configuración de la Carga de Trabajo

root@kitploit:~
apiVersion: v1
kind: Pod
metadata:
  name: hardened-workload
spec:
  runtimeClassName: runc
  hostUsers: false  # Remaps container root away from host root
  containers:
  - name: app
    image: app:latest

3. Verificación en el Host

root@kitploit:~
$ cat /proc/$(pgrep -f hardened-workload)/uid_map
         0 4050714624      65536

Capa 4: Encadenamiento de Auditoría Criptográficamente a Prueba de Manipulación

1. Prueba de Manipulación vs. WORM por Hardware

Los archivos de registro locales en un host comprometido teóricamente pueden modificarse si un atacante obtiene ejecución sin restricciones en ring-0. La inmutabilidad verdadera requiere medios físicos de escritura única o distribución criptográfica:

  1. Encadenamiento Secuencial SHA-256: Cada registro compromete el hash del registro anterior: $$\text{Hash}n = \mathcal{H}\left(n \parallel \text{Timestamp} \parallel \text{Topic} \parallel \text{Payload} \parallel \text{Hash}{n-1}\right)$$
  2. Replicación entre Nodos: Los registros se transmiten a través de NATS y se replican a un nodo de atestación independiente (192.0.2.52), evitando la reescritura unilateral de registros por parte de un único host comprometido.

2. Registro de Cadena de Ejemplo

root@kitploit:~
{
  "index": 386200,
  "timestamp": "2026-09-22T08:58:36.564478+00:00",
  "topic": "sovereign.security.alert",
  "prev_hash": "b2f6ef1e467cf8402da283f58e470ee64993a479a957a0914ec8c351be7fa83d",
  "hash": "cece8f9bd8839d3753232dd7e504c538a0f58fe0bcf2e260fbefb7d27e77b8cf",
  "data": {
    "output": "Active Exploit Probe: AF_ALG socket requested (domain=38 type=5 user=root ...)",
    "priority": "Warning",
    "rule": "Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)"
  }
}

Verificación Empírica y Telemetría

La validación se realizó utilizando una asignación sintética de socket AF_ALG en un contenedor de prueba sin privilegios:

root@kitploit:~
import socket
# Requests AF_ALG Netlink family (domain 38, SOCK_SEQPACKET 5)
s = socket.socket(38, socket.SOCK_SEQPACKET, 0)

Ciclo de Vida del Evento:

  1. Syscall del Kernel: socket(38, 5, 0) invoca sys_enter_socket.
  2. Evaluación eBPF (< 1ms): El tracepoint eBPF moderno evalúa domain == 38 y envía el evento al búfer de anillo.
  3. Despacho del Pipeline (2ms): Falco emite una alerta al webhook de Falcosidekick (:9876).
  4. Distribución NATS (4ms): El daemon Forwarder difunde el evento a sovereign.security.alert.
  5. Sellado del Libro Mayor (12ms): El daemon de auditoría añade el registro a la cadena criptográfica SHA-256.
  6. Validación Criptográfica:
    root@kitploit:~
    $ python3 fsm_audit_vault.py --verify
    # Verified 386,213 records. Zero tampering detected.
    

Estructura del Repositorio y Artefactos Desplegables

Este repositorio incluye configuraciones listas para producción para su despliegue inmediato:

root@kitploit:~
|-- etc/
|   \-- modprobe.d/
|       \-- blacklist-ebtables.conf     # Modprobe loader override
|-- helm/
|   |-- falco-rules-kernel-cve.yaml     # Falco modern eBPF rules (CO-RE)
|   \-- README.md                       # One-line Helm deployment guide
|-- k8s/
|   \-- pod-userns-hardened.yaml        # containerd v2.2.4 UserNS manifest
|-- scripts/
|   |-- evict-and-harden.sh             # Two-step module eviction & sealing
|   \-- verify-mitigation.sh            # Automated verification & CI test suite
|-- seccomp/
|   \-- seccomp-block-af-alg.json       # Inline SECCOMP blocking profile (EACCES)
|-- vault/
|   \-- audit_vault.py                  # Cryptographic SHA-256 hash-chain engine
|-- README.md
\-- LICENSE

Conclusiones para SRE y Arquitectos de Sistemas

  1. Los Controles Compensatorios Cierran la Brecha de Parches: Cuando los días cero activos del kernel son weaponizados, despliegue controles del cargador y de tiempo de ejecución de inmediato mientras espera la verificación de paquetes de la distribución upstream.
  2. La Expulsión Activa de Módulos es Obligatoria: Las anulaciones de modprobe solo afectan solicitudes futuras del cargador; siempre verifique la memoria en ejecución mediante lsmod y expulse explícitamente los módulos residentes (modprobe -r).
  3. Control de Acceso en Dos Fases para kTLS: Las reglas de seguridad para kTLS deben evaluar tanto la vinculación de TCP_ULP (SOL_TCP=6, optname=31) como la inicialización de opciones (SOL_TLS=282).
  4. Los Espacios de Nombres de Usuario Acotan la Escalada de Privilegios: Emparejar cargas de trabajo de Kubernetes con espacios de nombres de usuario de containerd (hostUsers: false) evita que la escalada de privilegios a nivel de contenedor reclame trivialmente el root de ring-0 del host.
  5. Desacoplar el EDR de la Aplicación en Línea: Utilice eBPF asíncrono (Falco) para observabilidad del clúster con baja sobrecarga, y LSM / SECCOMP síncronos cuando la terminación en cero microsegundos sea obligatoria.

Mantenido por el Equipo de Arquitectura de Sistemas y Seguridad Soberanos.
Probado en Producción en Linux HWE y Kubernetes CRI v1.30 (containerd v2.2+).

Descargar herramienta