
# Playbook de Ansible para detectar y remediar CVE-2026-31431 (Copy Fail) - Vulnerabilidad de escalada de privilegios local en el kernel de Linux
Copia Fallida Detección y Remediación
Una suite de roles y playbooks de Ansible para detectar y remediar CVE-2026-31431 (Copy Fail), una vulnerabilidad crítica de escalada de privilegios local en el módulo algif_aead del kernel de Linux.
🔗 GitHub: https://github.com/parmstro/cfDr
El nombre cfDr es un juego de palabras con "Copy Fail Doctor" - tu remedio de confianza para CVE-2026-31431.
CVE-2026-31431 (CVSS 7.8) es una falla lógica en la interfaz de sockets AEAD del kernel de Linux (AF_ALG) descubierta en 2026. La vulnerabilidad permite que cualquier usuario local sin privilegios escale privilegios a root en segundos.
algif_aead (interfaz criptográfica AF_ALG)Versiones del Kernel: Kernel de Linux >= 4.10 (publicado en 2017)
Distribuciones Afectadas:
Nota: Cualquier distribución de Linux con kernel 4.10 o más reciente es potencialmente vulnerable.
Esta vulnerabilidad es particularmente peligrosa porque:
Una vez que un atacante tiene cualquier forma de acceso local (SSH, shell web, escape de contenedor, etc.), puede:
Mientras se esperan los parches del kernel proporcionados por los proveedores, hay varias estrategias de mitigación disponibles. cfDr implementa todas ellas, con recomendaciones inteligentes basadas en la configuración de tu sistema.
No todas las remediaciones son iguales. Esto es lo que necesitas saber:
| Método | ¿Puede Root Evadirlo? | Cobertura | Soporte Enterprise Linux |
|---|---|---|---|
| Lista Negra de Módulos | ✅ Sí (vía insmod) | Previene la carga de modprobe | Todas las versiones |
| Política SELinux | ❌ NO (capa LSM) | Solo dominios configurados | Todas las versiones (predeterminado) |
| systemd seccomp | ❌ NO (filtro de syscalls) | Solo servicios configurados | Todas las versiones |
| eBPF LSM | ❌ NO (capa LSM) | Todo el sistema (si está configurado) | RHEL 9+, Fedora 34+ |
Recomendación predeterminada de cfDr: Nivel 3 (Lista Negra de Módulos + SELinux)
Esto proporciona dos capas de protección independientes:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘
Result: If either layer fails, the other still protects
### Por qué la lista negra de módulos por sí sola no es suficiente
Un atacante decidido con acceso root puede eludir la lista negra de módulos:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz
Sin embargo, esto es aceptable porque:
Para una protección completa e ineludible, necesitas:
Lista negra de módulos + al menos una de las siguientes:
cfDr utiliza banderas de bits para habilitar múltiples mitigaciones:
| Valor de Banderas | Mitigaciones Habilitadas | Caso de Uso |
|---|---|---|
| 1 | Solo lista negra de módulos | Protección mínima, sistemas sin SELinux |
| 2 | Solo SELinux | Entornos solo con SELinux |
| 3 | Lista negra de módulos + SELinux | Predeterminado RECOMENDADO |
| 5 | Lista negra de módulos + seccomp | Sin SELinux con endurecimiento de servicios |
| 7 | Lista negra de módulos + SELinux + seccomp | Protección mejorada |
| 15 | Todas las mitigaciones | Protección máxima (solo RHEL 9+) |
Calcular banderas: 1 (lista negra) + 2 (SELinux) + 4 (seccomp) + 8 (eBPF) = suma
Protección SELinux:
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t y unconfined_t cubren la gran mayoría de los escenarios de ataqueProtección seccomp de systemd:
httpd, nginx, postgresql, mariadb, redis, memcachedProtección eBPF LSM:
cfDr realiza una evaluación integral en múltiples dimensiones:
uname -r
- Determina si la versión del kernel >= 4.10 (rango vulnerable)
- Identifica la versión del kernel y la distribución
#### 2. Verificación de disponibilidad del módulo```bash
modinfo algif_aead
algif_aead existe en el kernel