Seguridad

CVE-2026-31431 “Copy Fail”: auditoría 6 meses después para tu fleet Ubuntu, Debian o RHEL

El 29 de abril de 2026 se hizo público CVE-2026-31431, también conocido como “Copy Fail”, una vulnerabilidad de Local Privilege Escalation (LPE) en el módulo kernel algif_aead de Linux. Seis meses después, una auditoría reciente del Canadian Centre for Cyber Security (AL26-009) confirmó que aún hay fleets de producción vulnerables porque los administradores no rebootean después de aplicar el parche.

Si tu servidor corre Ubuntu 22.04 LTS Jammy, 20.04 LTS Focal, o cualquier distro basada en kernel Linux anterior al fix, esta guía te dice cómo verificar en menos de 5 minutos si tu sistema sigue expuesto — y qué hacer para remediarlo.

TL;DR — Lo que vas a tener al final

  • Tiempo de setup: 30 minutos para instalación, 1-2 horas para upgrade in-place.
  • Requisitos: Backup de /home, conexión a internet, 20+ GB libres.
  • Resultado: Sistema actualizado con soporte extendido, drivers funcionando.
  • Troubleshooting: dnf distro-sync, akmods para NVIDIA, journalctl -p err.

Qué hace exactamente la vulnerabilidad

El módulo algif_aead implementa el socket interface para algoritmos criptográficos AEAD (Authenticated Encryption with Associated Data) en el kernel. La interfaz permite a procesos de espacio de usuario solicitar operaciones de cifrado autenticado sin tocar las primitivas crypto directamente.

El bug es un CWE-669: Incorrect Resource Transfer Between Spheres. En términos simples: cuando un proceso cierra un descriptor de archivo que está siendo usado por una operación crypto AEAD activa, el kernel no transfiere correctamente la referencia al buffer entre espacios. El resultado es un use-after-free que un usuario local sin privilegios puede explotar para escalar a root.

El exploit público (verificado por Cyber Centre Canada) es estable en kernels vulnerables y reproducible en Ubuntu 22.04 LTS Jammy y Ubuntu 24.04 LTS Noble con kernels anteriores al parche de mayo de 2026. RHEL, Rocky y CentOS también están afectados, con su propio calendario de parches.

CVSS 3.1: 7.8 (HIGH)

El puntaje CVSS 3.1 es 7.8, clasificado como HIGH. El vector es AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H:

  • AV:L (Local): el atacante necesita acceso local al sistema.
  • AC:L (Low complexity): no requiere condiciones especiales.
  • PR:L (Low privileges): cualquier usuario local puede explotarlo.
  • UI:N (No user interaction): no requiere acción del usuario legítimo.
  • S:U (Unchanged scope): no cruza fronteras de seguridad.
  • C:H/I:H/A:H: confidencialidad, integridad y disponibilidad todas en HIGH.

En términos prácticos: cualquier usuario con shell en tu servidor puede convertirse en root sin dejar trazas evidentes. Es el peor tipo de vulnerabilidad para servidores de hosting compartido, fleets de containers con usuarios internos, o servidores donde múltiples developers tienen cuentas shell.

Cómo verificar si tu sistema está parcheado

La verificación toma menos de 2 minutos. Tres comandos que debes correr en cualquier servidor Linux que mantenga Ubuntu, Debian, RHEL, Rocky, Alma, o CentOS:

Paso 1 — Versión del kernel activo

uname -r

Para Ubuntu, los siguientes kernels son los parcheados mínimos:

ReleaseKernel parchado mínimoDisponible desde
Ubuntu 14.04 Trusty3.13.0-211.262mayo 2026
Ubuntu 16.04 Xenial4.4.0-269.303mayo 2026
Ubuntu 18.04 Bionic4.15.0-247.279mayo 2026
Ubuntu 20.04 Focal5.4.0-212.232mayo 2026
Ubuntu 22.04 Jammy5.15.0-141.151mayo 2026
Ubuntu 24.04 Noble6.8.0-71.71mayo 2026
Ubuntu 26.04 ResoluteNO afectadafija desde el inicio

Para RHEL y derivados, Red Hat publicó el parche en mayo de 2026 vía RHSA-2026:1247 y siguientes. La versión específica depende del minor release (8.x, 9.x).

Paso 2 — Versión instalada (paquetes)

dpkg -l 'linux-image*' | grep ^ii
# o en RHEL/Rocky/CentOS:
rpm -qa | grep kernel

Si el kernel activo (Paso 1) es igual o más reciente que el “Kernel parchado mínimo” de la tabla anterior, estás cubierto. Si es más viejo, tu servidor es vulnerable.

Paso 3 — Verificar el módulo algif_aead

lsmod | grep algif_aead
# o
modinfo algif_aead | grep vermagic

Si el módulo está cargado y el kernel activo es vulnerable, el riesgo es inmediato. El módulo forma parte del kernel y se actualiza junto con él, así que no puedes parchear el módulo independientemente del kernel.

Script de auditoría para un fleet completo

Si administras múltiples servidores, este script bash te permite auditar un fleet vía SSH en paralelo. Adapta la lista de hosts según tu infraestructura:

#!/bin/bash
# audit-copy-fail.sh
# Uso: ./audit-copy-fail.sh servers.txt
HOSTS_FILE="$1"
VULNERABLE=0
SAFE=0
while IFS= read -r host; do
  result=$(ssh -o ConnectTimeout=5 "$host" '
    kernel=$(uname -r | cut -d- -f1)
    case "$kernel" in
      3.13.*)  min="3.13.0" ;;
      4.4.*)   min="4.4.0" ;;
      4.15.*)  min="4.15.0" ;;
      5.4.*)   min="5.4.0" ;;
      5.15.*)  min="5.15.0" ;;
      6.8.*)   min="6.8.0" ;;
      *)       echo "UNKNOWN: $kernel"; exit 0 ;;
    esac
    if [ "$(printf "%sn%sn" "$min" "$(uname -r | cut -d- -f1)" | sort -V | head -1)" = "$min" ]; then
      echo "SAFE: $(uname -r)"
    else
      echo "VULNERABLE: $(uname -r)"
    fi
  ' 2>/dev/null)
  
  echo "$host: $result"
  
  if echo "$result" | grep -q VULNERABLE; then
    VULNERABLE=$((VULNERABLE+1))
  elif echo "$result" | grep -q SAFE; then
    SAFE=$((SAFE+1))
  fi
done < "$HOSTS_FILE"
echo "---"
echo "Safe: $SAFE | Vulnerable: $VULNERABLE"

El script asume acceso por SSH sin password (key-based) y formato de versión Ubuntu-like. Para RHEL/Rocky, adapta la lógica de comparación de versión con rpmdev-vercmp o rpm directamente.

Plan de remediación por entorno

Una vez confirmado el riesgo, el plan de remediación depende del tipo de servidor:

Servidores Ubuntu LTS con acceso a internet

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Después del reboot, verifica con uname -r que el kernel nuevo sea el parchado. Si el kernel nuevo no aparece, puede ser que el GRUB no lo haya recogido — corré sudo update-grub y reintentá.

Servidores Ubuntu LTS sin acceso a internet

Para fleets aislados (air-gapped), bajate los paquetes .deb manualmente desde un host con acceso y transferí:

# En el host con internet
mkdir -p /tmp/kernel-patch
cd /tmp/kernel-patch
apt-get download linux-image-generic linux-headers-generic linux-modules-extra-generic
# Transferir al servidor air-gapped (USB, rsync, scp)
rsync -av /tmp/kernel-patch/ servidor:/tmp/
# En el servidor air-gapped
sudo dpkg -i /tmp/linux-image-*.deb /tmp/linux-headers-*.deb /tmp/linux-modules-*.deb
sudo update-grub
sudo reboot

Servidores RHEL, Rocky, CentOS, Alma

sudo dnf update kernel -y
sudo reboot
# después del reboot:
uname -r

Si estás en una versión menor que no recibe updates (RHEL 7, CentOS 7), el camino es upgrade a una versión soportada o usar Extended Lifecycle Support (ELS) de Red Hat — pero esto es un proyecto grande, no una remediación rápida.

Por qué algunos fleets siguen vulnerables 6 meses después

El patrón que vemos en producción:

  • Reboot pendiente: el parche está descargado y listo, pero el servidor no se ha rebooteado. En servidores críticos que llevan 200+ días uptime, los admins posponen el reboot indefinidamente.
  • Kernel fixed pero kernel activo es viejo: apt full-upgrade instaló el nuevo kernel, pero GRUB sigue booteando el viejo. Común cuando hay múltiples kernels instalados.
  • Livepatching no aplicado: Canonical Livepatch y KernelCare Enterprise dan parches sin reboot, pero requieren subscripción y configuración específica. Muchas empresas no los usan.
  • Container hosts: el kernel del host puede estar parchado, pero si corre containers con su propio userspace vulnerable (ej: contenedor Ubuntu 22.04 sobre host Ubuntu 26.04 parcheado), el riesgo viene del container.
  • Desconocimiento del CVE: equipos chicos o sin procesos formales de vulnerability management simplemente no se enteraron del parche.

La remediación efectiva requiere un proceso de vulnerability management que combine: subscripción a security advisories de tu distro, escaneo automatizado del fleet (OpenVAS, Wiz, Tenable, o un script custom como el de arriba), y una política de reboot documentada.

Mitigación temporal si no puedes hacer reboot

Hubo una mitigación temporal en mayo de 2026 que consistía en deshabilitar el módulo algif_aead vía modprobe -r algif_aead y blacklist en /etc/modprobe.d/blacklist-algif_aead.conf. Esta mitigación ya no se recomienda: el fix real está en kernel nuevo y la mitigación puede romper funcionalidad crypto en servicios que dependen del módulo (ej: VPN WireGuard con cifrado AEAD).

Si necesitas una ventana de tiempo antes del reboot, el camino correcto es:

  • Reducir la superficie de ataque: bloquear shell access a usuarios no críticos (SSH solo con bastion, sudo limitado).
  • Monitorear intentos de exploit: reglas de auditd que detecten accesos sospechosos al módulo kernel (ej: auditctl -w /sys/module/algif_aead/parameters/ -p wa).
  • Programar el reboot dentro de las siguientes 72 horas, no más.

Lo que viene: Ubuntu 26.04 Resolute NO está afectada

Si tu organización está planificando upgrade a Ubuntu 26.04 LTS “Resolute Raccoon” (released April 2026), el kernel 7.0 que viene por defecto ya incluye el fix para CVE-2026-31431 desde el día 1. No es una buena razón para upgrade urgente (mejor patchear lo que tienes), pero sí es un punto a favor si ya planeabas moverte.

Para fleets en Debian 12 Bookworm, el parche llegó en mayo de 2026 vía DSA-2026-128. verifica con apt list --installed linux-image-amd64.

Checklist de auditoría para tu próximo re-ada

  • Inventario de hosts (servidores físicos, VMs, containers).
  • Versión de kernel activo en cada uno (uname -r).
  • Versión instalada del paquete kernel (dpkg -l o rpm -qa).
  • Comparar contra la tabla de kernels parchados mínimos.
  • Identificar hosts vulnerables.
  • Programar ventana de mantenimiento para reboot.
  • Verificar post-reboot que uname -r muestre kernel parchado.
  • Documentar fecha de remediación para auditoría.

El CVE-2026-31431 es uno de los más explotables de 2026. Si tu organización maneja datos sensibles (financieros, salud, identidad), no es aceptable tener hosts sin parchear 6 meses después del disclosure público. El costo de un reboot es de minutos; el costo de un incidente de seguridad puede ser de semanas o meses.

Enlaces y referencias

¿Tu fleet ya está parchado o encontraste servidores vulnerables? Compartí tu plan de remediación en los comentarios — especialmente si administras un fleet grande con ventanas de mantenimiento limitadas.

Preguntas frecuentes

¿Por qué CVE-2026-31431 “Copy Fail”: auditoría 6 meses después para tu fleet Ubuntu, Debian o RHEL es relevante para sysadmins Linux?

Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.

¿Qué necesito para empezar con CVE-2026-31431 “Copy Fail”: auditoría 6?

Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.

¿Cuáles son los errores más comunes con CVE-2026-31431 “Copy Fail”: auditoría 6?

Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.

¿Cuándo usar CVE-2026-31431 “Copy Fail”: auditoría 6 y cuándo una alternativa?

Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.

¿Cómo migro desde una configuración previa a CVE-2026-31431 “Copy Fail”: auditoría 6?

Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.

Lee también

Alfonso Moreno | Sysadmin Senior

Soy Alfonso, sysadmin senior con RHCE y más de 10 años administrando sistemas Linux para empresas y proyectos personales. Me especializo en infraestructura, redes, virtualización, monitoring, automation y self-hosting. Sobre SoyLinux.com SoyLinux.com es un blog técnico en español sobre Linux, software libre y self-hosting. Lo mantengo en mi tiempo libre. Áreas de expertise - Linux server administration: RHEL, CentOS, Rocky, Alma, Fedora, Debian, Ubuntu - Network services: Postfix, BIND, Samba, NFS, Squid - Virtualización y containers: KVM, Proxmox, Docker, Podman - Monitoring: Prometheus, Grafana, Zabbix - Automation: Ansible, Bash scripting - Self-hosting: Vaultwarden, Nextcloud, Jellyfin, Immich, Homelab Contacto - Email: [email protected]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *