
# 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 kernellsmod | grep algif_aead
- Determina si el módulo está actualmente cargado
- **Crítico**: Módulo cargado = explotable activamente
#### 4. Detección de socket activo```bash
lsof -U | grep AF_ALG
Lista Negra de Módulos:```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf
**Política de SELinux**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny
systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies
#### 6. Determinación de estado categórico
cfDr clasifica cada host en uno de estos estados:
| Estado | Condición | Acción requerida |
|--------|-----------|-----------------|
| **VULNERABLE - Módulo cargado** | Kernel >= 4.10, el módulo existe Y está cargado | **INMEDIATA** - Explotable activamente |
| **VULNERABLE - Módulo existe** | Kernel >= 4.10, el módulo existe, no está cargado | **ALTA** - Puede cargarse y explotarse |
| **MITIGADO - Módulo en lista negra** | Lista negra detectada | **BAJA** - Monitorear, aplicar capas adicionales |
| **PROTEGIDO - Defensa en profundidad** | Lista negra + SELinux/seccomp/eBPF | **NINGUNA** - Totalmente protegido |
| **NO VULNERABLE - Kernel antiguo** | Kernel < 4.10 | **NINGUNA** - Anterior a la vulnerabilidad |
| **NO VULNERABLE - Sin módulo** | El módulo algif_aead no está en el kernel | **NINGUNA** - Módulo no disponible |
### Salida de evaluación
Cada host recibe:
1. **Salida de consola**: Estado breve de una línea
2. **Archivo detallado**: `/root/cve-2026-31431-assessment-<hostname>.txt`
3. **Informe JSON**: `/tmp/cve-2026-31431-<hostname>.json`
Ejemplo de salida breve:```
webserver1.example.com: VULNERABLE - Module exists and can be loaded
dbserver2.example.com: PROTECTED - Defense-in-depth (Module Blacklist + SELinux)
appserver3.example.com: NOT VULNERABLE - Module not available
cfDr está construido como un rol moderno de Ansible con múltiples puntos de entrada de playbook:``` cfDr/ ├── roles/ │ └── cve_2026_31431/ # Main role │ ├── tasks/ │ │ ├── main.yml # Role orchestration │ │ ├── assessment.yml # Vulnerability detection │ │ ├── remediation_module_blacklist.yml │ │ ├── remediation_selinux.yml │ │ ├── remediation_seccomp.yml │ │ ├── remediation_ebpf.yml │ │ ├── reporting.yml # Status reporting │ │ └── inventory_update.yml # Inventory generation │ ├── templates/ # Config file templates │ ├── defaults/ # Default variables │ └── handlers/ # Service restarts, etc. ├── quickstart.yml # Simplest usage ├── sample_playbook.yml # Multiple examples └── cve_2026_31431_playbook.yml # Full-featured playbook
### Flujo de Ejecución
#### Modo de Evaluación (por defecto)```
1. Pre-flight checks
↓
2. Gather system facts
↓
3. Detect kernel version
↓
4. Check module availability
↓
5. Check current load status
↓
6. Check existing mitigations
↓
7. Determine vulnerability status
↓
8. Flag vulnerable hosts
↓
9. Generate reports
↓
10. Create summary
↓
11. [Optional] Generate inventory
apply_remediation=true)```1-8. [Same as Assessment Mode] ↓ 9. Apply Module Blacklist (if flag 1) • Unload module if loaded • Create blacklist config • Update initramfs/initrd • Verify blacklist works ↓ 10. Apply SELinux Policy (if flag 2) • Install policy packages • Compile policy module • Install policy • Verify policy active ↓ 11. Apply systemd seccomp (if flag 4) • Create drop-in files • Reload systemd • Restart services • Verify filters active ↓ 12. Apply eBPF LSM (if flag 8) • Compile eBPF program • Load into kernel • Verify program attached ↓ 13. Re-assess protection status ↓ 14. Generate reports ↓ 15. Create summary
### Detalles de la Remedición
#### Lista Negra de Módulos (Bandera 1)
**Qué hace**:
1. Descarga el módulo `algif_aead` si está cargado actualmente (`rmmod algif_aead`)
2. Crea `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf`: ```
blacklist algif_aead
install algif_aead /bin/true
update-initramfs -udracut -fmodprobeProtección: Inmediata, no requiere reinicio Persistencia: Sobrevive a reinicios y actualizaciones del kernel
Qué hace:
policycoreutilspolicycoreutils-python-utilsselinux-policy-develcheckpolicysemodule -i cve_2026_31431_af_alg_deny.ppDominios protegidos (por defecto):
user_t - Procesos de usuario regularesunconfined_t - Procesos no confinadoshttpd_t - Servidor web Apachepostgresql_t - Base de datos PostgreSQLmysqld_t - Base de datos MySQL/MariaDBProtección: Bloquea en la capa LSM, no se puede eludir Persistencia: La política sobrevive a reinicios
Qué hace:
/etc/systemd/system/<service>.service.d/90-cve-2026-31431-block-af-alg.confRestrictAddressFamilies=~AF_ALGServicios protegidos (por defecto):
httpd, nginx - Servidores webpostgresql, mariadb - Bases de datosredis, memcached - Servidores de cachéProtección: Bloquea la creación de sockets a nivel de syscall por servicio Persistencia: Sobrevive a reinicios y actualizaciones de servicios
Qué hace:
Requisitos:
CONFIG_BPF_LSM=yProtección: Política dinámica y programable a nivel de todo el sistema Persistencia: Requiere un servicio del sistema para recargarse al arrancar
cfDr puede generar archivos de inventario listos para usar que contienen solo hosts vulnerables:
Archivos generados:``` inventory_output/ ├── vulnerable_hosts.yml # YAML inventory ├── vulnerable_hosts.ini # INI inventory ├── group_vars_vulnerable_hosts.yml # Group variables └── host_vars/ ├── host1.yml # Per-host details └── host2.yml
**Qué incluye**:
- Resultados de la evaluación de vulnerabilidades
- Banderas de mitigación recomendadas (calculadas por host)
- Detalles del sistema (versión del kernel, estado de SELinux)
- Configuraciones de remediación listas para aplicar
**Recomendaciones inteligentes**:
- Bandera 3 (Lista negra de módulos + SELinux) si SELinux está habilitado
- Bandera 1 (Solo lista negra de módulos) si SELinux no está disponible
- Personalizable por host mediante `host_vars` generados
---
## Impacto en la Criptografía del Sistema
### Hallazgo Crítico: La Criptografía Estándar de RHEL NO se Ve Afectada
**Nivel de Confianza**: ⭐⭐⭐⭐⭐ **ALTO** - Consulte el [Informe de Validación de IPsec/XFRM](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md) para un análisis exhaustivo
**Buenas noticias para implementaciones de Enterprise Linux:** Según fuentes autorizadas como [CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/), [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches) y [HPCsec](https://www.hpcsec.com/2026/04/30/advisory-cve-2026-31431-copy-fail-local-privilege-escalation-via-af-alg-algif_aead/), **las mitigaciones de cfDr tienen un impacto mínimo o nulo** en la criptografía y los servicios estándar del sistema RHEL.
### Qué NO se Ve Afectado
Los siguientes sistemas criptográficos críticos de RHEL **no utilizan AF_ALG** y no se ven afectados en absoluto por nuestras remediaciones:
#### Servicios Principales del Sistema
| Servicio/Componente | Función | Estado |
|------------------|----------|--------|
| **dm-crypt / LUKS** | Cifrado de disco completo | ✅ Sin afectación |
| **IPsec / XFRM** | VPN y redes cifradas | ✅ Sin afectación ([validado](https://github.com/parmstro/cfdr/blob/HEAD/docs/IPSEC_VALIDATION.md)) |
| **kTLS** | Implementación de TLS en el kernel | ✅ Sin afectación |
| **SSH** | Conexiones seguras de shell | ✅ Sin afectación |
#### Bibliotecas Criptográficas
| Biblioteca | Uso | Estado |
|---------|-------|--------|
| **OpenSSL** (predeterminada) | SSL/TLS, certificados, criptografía general | ✅ Sin afectación |
| **GnuTLS** (predeterminada) | Implementación de TLS | ✅ Sin afectación |
| **NSS** | Servicios de Seguridad de Red de Mozilla | ✅ Sin afectación |
| **Keyring del kernel** | Gestión de claves del kernel | ✅ Sin afectación |
#### Infraestructura Crítica
- ✅ **SSL/TLS** - Todo el cifrado de servidores web sin afectación
- ✅ **HTTPS** - Tráfico web seguro sin afectación
- ✅ **Cifrado de correo electrónico** (S/MIME, PGP) - Sin afectación
- ✅ **Operaciones de certificados** - Sin afectación
- ✅ **Cifrado de bases de datos** - Sin afectación
- ✅ **Cifrado de copias de seguridad** - Sin afectación
### Por Qué los Servicios Estándar No Usan AF_ALG
Como se documenta en la [Documentación de Criptografía del Kernel de Linux](https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html), **AF_ALG es una interfaz de socket de espacio de usuario** para la criptografía del kernel introducida en Linux 2.6.38. Sin embargo, la mayoría de los servicios del sistema RHEL utilizan la API criptográfica del kernel **directamente** en lugar de pasar por la capa de sockets AF_ALG.
Según el [aviso de seguridad de CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/):
> "Las compilaciones de dm-crypt / LUKS, kTLS, IPsec, SSH y OpenSSL / GnuTLS predeterminadas no dependen de AF_ALG y no se ven afectadas por las limitaciones de AF_ALG."
La arquitectura es la siguiente:```
┌─────────────────────────────────────────────┐
│ Userspace Applications │
├─────────────────────────────────────────────┤
│ Standard Crypto Libraries │
│ (OpenSSL, GnuTLS, NSS) │
│ │ │
│ └─────> In-Kernel Crypto API ──────────┐ │
│ (Direct access) │ │
├──────────────────────────────────────────┼──┤
│ AF_ALG Socket Interface (RARELY USED) │ │
│ │ │ │
│ └─────> In-Kernel Crypto API ──────────┘ │
├─────────────────────────────────────────────┤
│ Kernel Crypto Subsystem │
│ (AES, SHA, AEAD algorithms) │
└─────────────────────────────────────────────┘
Standard services bypass AF_ALG entirely
Según el análisis de R-fx Networks:
"Para la mayoría de los entornos HPC, esto no romperá nada: AF_ALG es una puerta de entrada de espacio de usuario a la criptografía del kernel que casi nadie utiliza realmente."
Solo estas configuraciones extremadamente raras podrían verse afectadas:
NO es el valor predeterminado en RHEL. El motor afalg debe configurarse explícitamente:```bash
openssl engine afalg
**Caso de uso:** Descarga de aceleración criptográfica por hardware
**Prevalencia:** Extremadamente rara en despliegues estándar
**Impacto:** La aplicación recurre a criptografía por software
#### 2. Aplicaciones personalizadas que usan libkcapi
**Programación directa de sockets AF_ALG** mediante bibliotecas especializadas.
**Caso de uso:** Herramientas de seguridad especializadas o aplicaciones criptográficas personalizadas
**Prevalencia:** Casi inexistente en entornos empresariales estándar
**Impacto:** Específico de la aplicación, requeriría modificación del código
#### 3. Herramientas de Descarga Criptográfica por Hardware
**Herramientas especializadas** que usan AF_ALG para aceleración por hardware.
**Caso de uso:** Computación de alto rendimiento, aceleradores criptográficos por hardware
**Prevalencia:** Solo en entornos especializados de alta seguridad o HPC
**Impacto:** Recurren a criptografía por software
### Posición Oficial de Red Hat
Según [Red Hat Bugzilla #2460538](https://bugzilla.redhat.com/show_bug.cgi?id=2460538):
- **CVE:** CVE-2026-31431
- **Severidad:** Alta (CVSS 7.8)
- **Estado:** Corregido en el kernel 6.19.12+
- **Corrección:** Revierte la optimización in-place de 2017 (commit 72548b093ee3)
- **Impacto:** "No hay beneficio en operar in-place en algif_aead ya que el origen y el destino provienen de asignaciones de memoria diferentes"
### Evaluación de Impacto por Indicador de Mitigación
| Indicador | Mitigaciones | Impacto en Servicios Estándar |
|------|------------|----------------------------|
| 1 | Lista negra de módulos | ✅ Impacto cero - AF_ALG no se usa |
| 2 | Política SELinux | ✅ Impacto cero - Bloquea syscall no utilizada |
| **3** | **Lista negra + SELinux** | ✅ **Impacto cero - RECOMENDADO** |
| 5 | Lista negra + seccomp | ✅ Impacto cero - Seguro por servicio |
| 7 | Lista negra + SELinux + seccomp | ✅ Impacto cero - Defensa en profundidad |
| 15 | Todas las mitigaciones | ✅ Impacto cero - Protección máxima |
### Verificación Después de la Remediación
Después de aplicar las mitigaciones de cfDr, verifique que los servicios críticos continúen operando:```bash
# Test SSH connectivity
ssh localhost echo "SSH working"
# Test HTTPS (if web server running)
curl -k https://localhost
# Test LUKS encryption (if using encrypted volumes)
cryptsetup status /dev/mapper/luks-volume
# Test IPsec (if VPN configured)
ipsec status
# Test system services
systemctl status sshd
systemctl status httpd
systemctl status postgresql
# Check for any service failures
systemctl --failed
Resultado esperado: Todos los servicios continúan funcionando con normalidad.
Múltiples organizaciones de seguridad autorizadas confirman nuestra evaluación:
CERT-EU (30 de abril de 2026):
"dm-crypt / LUKS, kTLS, IPsec, SSH y las compilaciones predeterminadas de OpenSSL / GnuTLS no dependen de AF_ALG"
Sysdig (29 de abril de 2026):
Documenta que las operaciones criptográficas estándar utilizan APIs del kernel, no sockets AF_ALG
R-fx Networks (2 de mayo de 2026):
"Las cargas de trabajo de hosting no utilizan AF_ALG de forma legítima, por lo que es seguro deshabilitarlo como mitigación sin afectar a los servicios de producción"
HPCsec (30 de abril de 2026):
"Para la mayoría de los entornos HPC, esto no romperá nada: AF_ALG es una puerta de entrada de espacio de usuario a la criptografía del kernel que casi nadie utiliza realmente"
Para entornos estándar RHEL/CentOS/Fedora:
Matriz de decisión:
| Su entorno | Recomendación | Motivo |
|---|---|---|
| Servidores RHEL estándar | Desplegar el Flag 3 ahora | Cero impacto, protección inmediata |
| RHEL con criptografía personalizada | Auditar primero el uso de AF_ALG | Extremadamente improbable, pero verificar |
| Sistemas de desarrollo | Desplegar el Flag 3 ahora | Igual que en producción |
| Entornos de alta seguridad | Desplegar el Flag 7 o 15 | Máxima defensa en profundidad |
Las remediaciones de cfDr son seguras para todos los despliegues estándar de RHEL. El módulo algif_aead y la interfaz de socket AF_ALG no son utilizados por ninguna criptografía crítica del sistema en sistemas Enterprise Linux.
Qué significa esto:
El único riesgo teórico son las aplicaciones personalizadas programadas explícitamente para usar sockets AF_ALG, un escenario tan raro que múltiples organizaciones de seguridad confirmaron de forma independiente que es seguro bloquear AF_ALG en entornos empresariales.
Este flujo de trabajo equilibra la exhaustividad con la seguridad operativa:
ansible-playbook -i inventory quickstart.yml
**Qué sucede**:
- Se evalúan todos los hosts
- No se realizan cambios
- Se generan informes
**Revisión**:
- Verifique `/root/cve-2026-31431-assessment-<hostname>.txt` en cada host
- Revise el resumen de salida
- Identifique los hosts vulnerables
**Salida esperada**:```
CVE-2026-31431 Summary Report
==========================================
Total hosts scanned: 50
Vulnerable hosts: 12
VULNERABLE HOSTS REQUIRING REMEDIATION:
web1.example.com, web2.example.com, db1.example.com, ...
DEFAULT RECOMMENDED MITIGATION: Flag 3
- Module Blacklist (1) + SELinux (2) = Defense-in-depth
- Module Blacklist alone can be bypassed by root (via insmod)
- SELinux blocks syscall even if blacklist is bypassed
- Covers user_t/unconfined_t (vast majority of scenarios)
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true -e inventory_output_dir=./vulnerable_hosts
**Qué sucede**:
- Se identifican los hosts vulnerables
- Se calculan los flags de mitigación recomendados por host
- Se generan los archivos de inventario
**Revisión**:```bash
# Check generated inventory
cat vulnerable_hosts/vulnerable_hosts.yml
# Review per-host recommendations
ls vulnerable_hosts/host_vars/
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'dev*:test*'
**Qué sucede**:
- Mitigaciones aplicadas solo a hosts de prueba/desarrollo
- Servicios reiniciados (para seccomp)
- Verificación realizada
**Verificar**:```bash
# Re-scan test hosts
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml quickstart.yml --limit 'dev*:test*'
# Check for "PROTECTED - Defense-in-depth" status
Aplicaciones de prueba:
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'web*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'app*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'db*'
**Qué sucede**:
- Cada nivel se corrige por separado
- Los servicios se reinician un nivel a la vez
- Permite una validación por etapas
**Supervisar entre etapas**:
- Comprobar la disponibilidad del servicio
- Revisar los registros de la aplicación
- Verificar la experiencia del usuario
#### Paso 5: Verificación y Documentación```bash
# Final assessment of all hosts
ansible-playbook -i inventory quickstart.yml
Documento:
Total hosts scanned: 50 Vulnerable hosts: 0
All hosts protected with defense-in-depth mitigations
### Flujo de trabajo de respuesta ante emergencias
Para sistemas **activamente explotados** o **amenazas inmediatas**:```bash
# Immediate assessment and remediation
ansible-playbook -i inventory quickstart.yml -e apply_remediation=true -e mitigation_flags=3
# Re-verify all hosts
ansible-playbook -i inventory quickstart.yml
Utilice este enfoque cuando:
Precaución: Esto aplica mitigaciones a TODOS los hosts vulnerables simultáneamente. Supervise de cerca.
Para cumplimiento continuo y detección de nuevos sistemas:```bash
0 2 * * 0 ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
**Integrar con**:
- Base de datos de gestión de configuración (CMDB)
- Gestión de información y eventos de seguridad (SIEM)
- Sistemas de tickets para el seguimiento de la remediación
### Flujo de trabajo de mitigación personalizado
Para **requisitos específicos** más allá de la Bandera 3:```bash
# Use enhanced protection (Flag 7: Blacklist + SELinux + seccomp)
ansible-playbook -i inventory quickstart.yml \
-e apply_remediation=true \
-e mitigation_flags=7
# Or customize per-host via inventory
# Edit generated host_vars/*.yml files to set custom flags
vim vulnerable_hosts/host_vars/web1.example.com.yml
# Change: recommended_mitigation_flags: 7
# Apply customized settings
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
Después de la remediación, verifique la protección:```bash
sudo lsmod | grep algif_aead
sudo modprobe algif_aead
cat /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf
sudo semodule -l | grep cve_2026_31431
systemctl show httpd | grep RestrictAddressFamilies
---
## Inicio Rápido
Para los usuarios que quieren comenzar de inmediato:
### Uso más Sencillo```bash
# Clone repository
git clone https://github.com/parmstro/cfDr.git
cd cfDr
# Step 1: Assess all hosts
ansible-playbook -i inventory quickstart.yml
# Step 2: Apply recommended mitigations to vulnerable hosts
ansible-playbook -i inventory quickstart.yml --limit vulnerable_hosts -e apply_remediation=true
ansible-playbook -i /path/to/your/inventory quickstart.yml
ansible-playbook -i /path/to/your/inventory quickstart.yml
--limit vulnerable_hosts
-e apply_remediation=true
### Generación del Inventario de Vulnerabilidades```bash
# Scan and create inventory of vulnerable hosts
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
# Review generated files
ls inventory_output/
# Apply mitigations using generated inventory
ansible-playbook -i inventory_output/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
Anula las mitigaciones predeterminadas por ejecución de playbook:```bash
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=1
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=2
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=3
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=7
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=15
### Personalización de dominios SELinux
Edite `roles/cve_2026_31431/defaults/main.yml`:```yaml
# Add additional domains to protect
selinux_denied_domains:
- user_t
- unconfined_t
- httpd_t
- postgresql_t
- mysqld_t
- custom_app_t # Your custom domain
- another_service_t
Edite roles/cve_2026_31431/defaults/main.yml:```yaml
seccomp_protected_services:
### Directorio de Salida de Inventario Personalizado```bash
# Specify custom output location
ansible-playbook quickstart.yml \
-e generate_inventory=true \
-e inventory_output_dir=/path/to/output
El archivo sample_playbook.yml contiene múltiples ejemplos:```yaml
### Requisitos
- **Ansible**: 2.9 o superior (se recomienda 2.15+)
- **Acceso privilegiado**: sudo/root en los hosts de destino
- **Python**: 2.7 o 3.5+ en los hosts de destino
- **SO compatible**: Red Hat Enterprise Linux, CentOS, Fedora (soporte limitado para Debian/Ubuntu)
---
## Recursos adicionales
### Información y análisis de CVE
**Fuentes oficiales**:
- [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [Entrada CVE de MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
**Investigación y análisis de seguridad**:
- [Sysdig - Análisis de CVE-2026-31431](https://www.sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds)
- [The Hacker News - Vulnerabilidad Copy Fail](https://thehackernews.com/2026/04/new-linux-copy-fail-vulnerability.html)
- [Aviso de seguridad de CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/)
- [Help Net Security - Detalles de Copy Fail](https://www.helpnetsecurity.com/2026/04/30/copyfail-linux-lpe-vulnerability-cve-2026-31431/)
### Proyectos de mitigación relacionados
Contribuciones de la comunidad a la mitigación de CVE-2026-31431:
- **[block-copyfail](https://github.com/atgreen/block-copyfail)** - Implementación eBPF LSM de Anthony Green
- Mitigación integral basada en eBPF
- Protección a nivel de sistema para kernels modernos
- Fuente para la implementación eBPF de cfDr
- **[Blastwall](https://gprocunier.github.io/blastwall/demo.html)** - Marco de políticas SELinux de Greg Procunier
- Gestión avanzada de políticas SELinux
- Marco de protección multi-CVE
- Fuente para la implementación SELinux de cfDr
### Recursos específicos de Red Hat
**Artículos de la base de conocimientos**:
- [Portal de clientes de Red Hat - CVE-2026-31431](https://access.redhat.com/security/cve/cve-2026-31431)
- [Datos de seguridad de Red Hat - Productos afectados](https://access.redhat.com/security/data/metrics/)
**Guías de mitigación**:
- [SELinux para Enterprise Linux - Guía de usuario](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/)
- [Funciones de seguridad de systemd](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/securing-systemd-services_system-management-using-the-rhel-9-web-console)
### Documentación
**Documentación ampliada de cfDr**:
- [Guía de mitigaciones para Enterprise Linux](https://github.com/parmstro/cfdr/blob/HEAD/enterprise-linux-mitigations.md) - Comparación exhaustiva de todos los métodos de mitigación
- [Guía de mitigación SELinux](https://github.com/parmstro/cfdr/blob/HEAD/selinux-mitigation.md) - Implementación detallada de políticas SELinux
- [Guía de mitigación seccomp](https://github.com/parmstro/cfdr/blob/HEAD/seccomp-mitigation.md) - Implementación del filtro seccomp de systemd
- [Guía de mitigación eBPF LSM](https://github.com/parmstro/cfdr/blob/HEAD/ebpf-lsm-mitigation.md) - Implementación del programa eBPF LSM
- [docs/CONTRIBUTORS.md](https://github.com/parmstro/cfdr/blob/HEAD/CONTRIBUTORS.md) - Directrices de contribución y créditos
**Documentación de Ansible**:
- [Guía de usuario de Ansible](https://docs.ansible.com/ansible/latest/user_guide/)
- [Mejores prácticas de Ansible](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
---
## Monitoreo de parches
### Red Hat Enterprise Linux
**Fuente principal**: Portal de clientes de Red Hat
- **Avisos de seguridad**: https://access.redhat.com/security/security-updates/
- **Avisos de errata**: https://access.redhat.com/errata/
- **Rastreador de CVE**: https://access.redhat.com/security/cve/cve-2026-31431
**Métodos de notificación**:
1. **Alertas por correo electrónico** (recomendado):
- Inicie sesión en el Portal de clientes de Red Hat
- Navegue a: Configuración de la cuenta → Notificaciones
- Active: "Avisos de seguridad" y "Erratas de producto"
- Seleccione: las versiones de RHEL que administra
2. **Fuentes RSS**:
- Seguridad RHEL 7: https://access.redhat.com/blogs/766093/feed
- Seguridad RHEL 8: https://access.redhat.com/blogs/1683903/feed
- Seguridad RHEL 9: https://access.redhat.com/blogs/5480361/feed
- Toda la seguridad: https://access.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
3. **Acceso API**: ```bash
# Check for kernel security updates
curl -H "Accept: application/json" \
"https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json"
Monitoreo Automatizado: ```bash
sudo yum install yum-plugin-security
sudo yum updateinfo list security
sudo yum updateinfo list security kernel
Qué buscar:
Formato de ejemplo de aviso:``` RHSA-2026:XXXX - Important: kernel security update Severity: Important CVEs: CVE-2026-31431 Affected Products: RHEL 7, 8, 9
### CentOS / Rocky Linux / AlmaLinux
**CentOS Stream**:
- **Anuncios**: https://lists.centos.org/pipermail/centos-announce/
- **Lista de correo de seguridad**: https://lists.centos.org/mailman/listinfo/centos-security-announce
**Rocky Linux**:
- **Seguimiento de seguridad**: https://errata.rockylinux.org/
- **Anuncios**: https://rockylinux.org/news/
**AlmaLinux**:
- **Errata**: https://errata.almalinux.org/
- **Seguridad**: https://wiki.almalinux.org/security/
### Fedora
**Fuente principal**: Proyecto Fedora
- **Sistema de actualizaciones**: https://bodhi.fedoraproject.org/
- **Lista de seguridad**: https://lists.fedoraproject.org/archives/list/[email protected]/
**Métodos de notificación**:```bash
# Subscribe to security announcements
# Visit: https://lists.fedoraproject.org/admin/lists/security-announce.lists.fedoraproject.org/
# Check for updates
sudo dnf check-update kernel
# View available security updates
sudo dnf updateinfo list security
Fuente principal: Avisos de seguridad de Ubuntu
Métodos de notificación:```bash
sudo apt update sudo apt list --upgradable | grep security
sudo apt install ubuntu-security-tools usn list --cve CVE-2026-31431
### Debian
**Fuente principal**: Debian Security Tracker
- **Security Tracker**: https://security-tracker.debian.org/tracker/CVE-2026-31431
- **Anuncios de seguridad**: https://www.debian.org/security/
**Métodos de notificación**:```bash
# Subscribe to Debian Security Announcements
# Visit: https://lists.debian.org/debian-security-announce/
# Check for security updates
sudo apt update
sudo apt list --upgradable
Fuente principal: SUSE Security
Métodos de notificación:```bash
sudo zypper list-patches --category security
sudo zypper info --cve CVE-2026-31431
### Kernel Ascendente
**Lista de Correo del Kernel de Linux**:
- **Archivos de LKML**: https://lkml.org/
- **Lista de Seguridad**: https://www.kernel.org/category/releases.html
**Repositorio Git**:```bash
# Monitor kernel git for patches
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
# Search for CVE-2026-31431 patches
git log --all --grep="CVE-2026-31431"
Crea un script de monitoreo para tu entorno:```bash #!/bin/bash
DISTRO=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
case $DISTRO in rhel|centos|rocky|alma) yum updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; fedora) dnf updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; ubuntu|debian) apt-get update -qq apt-cache show linux-image-$(uname -r) | grep CVE-2026-31431 ;; sles|opensuse*) zypper info --cve CVE-2026-31431 kernel-default ;; esac
curl -s "https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json" |
jq -r '.affected_release[] | select(.package | startswith("kernel")) |
"(.product_name): (.advisory) - (.package)"'
**Programar con cron**:```bash
# Check daily for patches
0 6 * * * /usr/local/bin/check-cve-2026-31431-patch.sh | mail -s "CVE-2026-31431 Patch Check" [email protected]
Verificar la disponibilidad del parche: ```bash
sudo yum check-update kernel # RHEL/CentOS/Fedora sudo apt update && apt list --upgradable linux-image-* # Ubuntu/Debian
Revisar las notas de la versión:
Probar en un entorno que no sea de producción: ```bash
sudo yum update kernel # RHEL/CentOS/Fedora sudo apt upgrade linux-image-* # Ubuntu/Debian sudo reboot
Verificar la efectividad del parche: ```bash
uname -r
ansible-playbook -i inventory quickstart.yml
Planificar el despliegue de producción:
Eliminar mitigaciones temporales (opcional): ```bash
sudo rm /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf sudo semodule -r cve_2026_31431_af_alg_deny # SELinux policy
Recomendación: Incluso después de aplicar el parche del kernel, considere mantener las mitigaciones de defensa en profundidad como protección contra futuras vulnerabilidades.
¿Encontró un error o tiene una solicitud de funcionalidad?
¡Agradecemos las contribuciones! Consulte docs/CONTRIBUTORS.md para:
cfDr se basa en la experiencia colectiva de profesionales de la seguridad:
Consulte docs/CONTRIBUTORS.md para obtener detalles completos sobre las contribuciones.
Este proyecto se proporciona bajo la Licencia MIT con fines de evaluación de vulnerabilidades y remediación.
Consulte LICENSE para más detalles.
IMPORTANTE: Esta herramienta proporciona mitigaciones temporales mientras se esperan los parches del kernel proporcionados por el proveedor. Estas mitigaciones reducen significativamente el riesgo, pero pueden no proporcionar una protección completa en todos los escenarios.
cfDr se proporciona "tal cual" sin garantía. Siempre:
Los contribuyentes y mantenedores de cfDr no son responsables de ningún daño o pérdida de datos resultante del uso de esta herramienta.
Última actualización: 2026-05-02T23:30:00Z