Techsy
Contacto
Empezar
Volver al Blog
cybersecurity

Copy Fail (CVE-2026-31431): El Manual de Parche de Emergencia en 60 Minutos para Linux, Kubernetes e Infraestructura de IA

Escrito por Mert Batur
Actualizado May 5, 2026
16 lectura
Tabla de contenidos
Copy Fail (CVE-2026-31431): El Manual de Parche de Emergencia en 60 Minutos para Linux, Kubernetes e Infraestructura de IA

Copy Fail (CVE-2026-31431): El Manual de Parche de Emergencia en 60 Minutos para Linux, Kubernetes e Infraestructura de IA

Si usted ejecuta Linux en un servidor multitenancy, tiene hasta el próximo reinicio para corregir la vulnerabilidad copy fail. Microsoft Threat Intelligence divulgó CVE-2026-31431 el 1 de mayo de 2026 — crédito a Theori por el descubrimiento y a Xint por el análisis de 732-bytes-a-root. El CVSS es 7.8 (Alto), y CERT-EU emitió el aviso 2026-005 el mismo día.

Esto es lo que hace diferente a Copy Fail: es la primera LPE mayor del kernel Linux que derrota a RuntimeDefault seccomp de fábrica. Su pod de Kubernetes considerado "seguro", con Pod Security Standards Restricted, está en el alcance. Lea esto y actúe.

Resumen rápido: Qué hacer en los próximos 60 minutos

Si no va a leer nada más, haga estas seis cosas ahora mismo:

  1. Pause los despliegues en producción y tome una instantánea de /var/log/auth.log y kubectl get events -A antes de rotar cualquier cosa.
  2. Ejecute uname -r en cada nodo. Si está por debajo del kernel parcheado para su distribución, es vulnerable.
  3. Deshabilite algif_aead de inmediato: echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead.
  4. Aplique el parche copy fail de su distribución (Ubuntu USN, AlmaLinux ALSA, SUSE SU) y reinicie.
  5. Implemente un perfil seccomp Localhost que deniegue socket(AF_ALG, ...) en cada nodo Kubernetes y recargue kubelet.
  6. Audite los últimos 30 días de auth.log y EDR para detectar llamadas al sistema socket(AF_ALG) inesperadas y cualquier nuevo binario setuid.

El análisis completo (comandos, parches por distribución, perfil seccomp para K8s) está a continuación.

Qué ocurrió exactamente: dentro de CVE-2026-31431

CVE-2026-31431 ("Copy Fail") es un fallo de escalada de privilegios del kernel Linux en algif_aead. Al abrir un socket AF_ALG y activar splice() con una solicitud authenc-esn manipulada, un usuario sin privilegios provoca una escritura de 4 bytes en el caché de páginas que corrompe binarios setuid y otorga acceso root. El CVSS es 7.8 (Alto).

La causa raíz se remonta a una optimización criptográfica en línea de 2017 en algif_aead, la interfaz de socket AF_ALG que expone las primitivas criptográficas del kernel al espacio de usuario. Cuando el exploit de Xint introduce la solicitud authenc-esn correcta en el socket y la pasa por splice(), la optimización escribe 4 bytes más allá del búfer previsto hacia el caché de páginas. Con el desplazamiento correcto, se reescribe /usr/bin/sudo u otro binario setuid en disco. La corrección principal se incorporó como el commit a664bf3d603d.

El exploit es pequeño. Xint publicó un PoC funcional de 732 bytes, y la superficie de activación es alcanzable desde dentro de un contenedor. Eso es lo que debería hacerle reflexionar.

Si la comparación "Dirty Pipe vs Copy Fail" le resulta familiar, es razonable. Ambas son LPEs del kernel Linux que producen escrituras arbitrarias en el caché de páginas. Dirty Pipe (CVE-2022-0847) abusó de splice() en una tubería; Copy Fail abusa de splice() en un socket algif_aead. Ambas eluden los valores predeterminados de seccomp para contenedores. La particularidad de Copy Fail es que la ruta AF_ALG es accesible desde Pod Security Standards Restricted con RuntimeDefault — misma forma de respuesta, distinta superficie del kernel. Cubrimos el patrón de respuesta tras la brecha de Vercel y la estructura se aplica perfectamente aquí.

¿Está afectado? Triaje en 5 minutos

Ejecute uname -r y compárelo con el kernel parcheado para su distribución: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Luego ejecute lsmod | grep algif_aead. Si el módulo está cargado y su kernel es más antiguo que la versión parcheada, es vulnerable. Si el módulo está ausente pero /etc/modprobe.d no lo tiene en lista negra, sigue siendo vulnerable.

Ejecute estos cuatro comandos en cada host Linux que opere, en orden:

bash
# 1. Identificar el kernel en ejecución
uname -r
bash
# 2. Comparar con la tabla por distribución más abajo.
#    Ubuntu < 6.19.12 = vulnerable. RHEL/AlmaLinux/Rocky < 7.0 = vulnerable. SUSE < 6.18.22 = vulnerable.
cat /etc/os-release | grep -E '^(NAME|VERSION_ID)='
bash
# 3. ¿Está cargado el módulo?
lsmod | grep -E 'algif_(aead|skcipher)'
bash
# 4. (Solo Kubernetes) contar nodos que necesita triar
kubectl get nodes -o wide

Nota importante: si lsmod devuelve vacío para algif_aead, usted no está a salvo. Un usuario sin privilegios puede ejecutar modprobe algif_aead por sí mismo en la mayoría de las distribuciones, porque kmod no bloquea la carga automática de módulos elegibles según la capacidad. "Módulo descargado" no es lo mismo que "módulo inaccesible" hasta que añada el archivo de lista negra del paso 3 del resumen rápido.

Probamos la eliminación de algif_aead en Ubuntu 24.04 LTS y Kubernetes 1.30 con containerd 1.7. El módulo se recargó sin problema para cualquier usuario con acceso de shell hasta que añadimos /etc/modprobe.d/copy-fail.conf. Trate la lista negra como una medida indispensable, no como un plan de respaldo.

Por qué las infraestructuras de IA/ML y Kubernetes tienen mayor riesgo

Las cargas de trabajo de IA alojadas en servidores propios están desproporcionadamente expuestas porque ejecutan rutinariamente código que no es de confianza: artefactos de HuggingFace, servidores MCP, runners de agentes, trabajos de ajuste fino con datos de usuarios y runners de CI/CD que construyen contenedores de modelos. Pod Security Standards Restricted no bloquea socket(AF_ALG, ...) por defecto, de modo que un pod de inferencia comprometido puede atacar el kernel del host. Juliet.sh lo confirmó directamente en una prueba controlada de K8s.

Cinco lugares donde el impacto es mayor:

  • Servidores de inferencia alojados en servidores propios como vLLM, sglang, Ollama y Ray Serve, frecuentemente multitenancy y a menudo ejecutando adaptadores LoRA o código de herramientas suministrado por usuarios. Nuestra comparativa de vLLM vs sglang cubre la forma operativa; ambos se ejecutan sin problemas en un pod de containerd básico con RuntimeDefault.
  • Servidores MCP, donde plugins de terceros ejecutan comandos shell, analizan entradas de usuarios y pueden ejecutarse dentro del mismo pod que el modelo. Cualquiera que haya construido runtimes de agentes que persisten estado sabe lo delgada que es la frontera de confianza.
  • Runners de CI/CD que construyen imágenes de ML que descargan artefactos arbitrarios de HuggingFace y ejecutan pip install desde fuentes no confiables, todo bajo el UID del runner.
  • Plataformas de agentes donde, por definición, el código del agente está controlado por el usuario en tiempo de ejecución. Si usted opera plataformas de despliegue de agentes, cada plugin y extensión de herramienta está en el alcance.
  • Nodos GPU, habitualmente potentes, multitenancy y con frecuencia ejecutados con perfiles de seguridad más relajados para el acceso a CUDA/drivers. Son también las máquinas de mayor coste. Los equipos que ejecutan LLMs localmente en rigs GPU compartidos son el objetivo más evidente.

Ejemplo concreto: un usuario sube un adaptador LoRA que incluye un requirements.txt con un paquete malicioso. pip install se ejecuta bajo el UID del contenedor de inferencia. Ese contenedor, incluso con PSS Restricted y RuntimeDefault, puede hacer socket(AF_ALG, ...) y activar Copy Fail. Acaba de perder el host. Cada otro pod que comparte ese nodo está ahora en el radio de explosión.

El manual de parche de emergencia en 60 minutos

Parchee Copy Fail en 60 minutos trabajando cinco fases en orden: Congelación (5 min — pause los auto-despliegues, tome instantáneas de logs), Detección (10 min — uname -r y lsmod por nodo), Mitigación (15 min — lista negra modprobe más perfil seccomp), Parcheado (20 min — actualización del kernel por distribución más reinicio progresivo) y Verificación (10 min — confirmar que lsmod está vacío y uname -r coincide con la versión parcheada).

El objetivo es tener todo parcheado, verificado y de vuelta en servicio en menos de una hora. Lo hemos dividido en cinco fases ajustadas.

Fase 1 — Congelación (0:00–0:05)

Pause los auto-despliegues, tome instantáneas de logs, espere antes de ejecutar apt upgrade/dnf update hasta haber registrado el estado actual.

bash
# Pausar GitOps / auto-despliegues de CI (ajuste según su stack)
flux suspend kustomization --all -A 2>/dev/null || true
argocd app set --sync-policy none $(argocd app list -o name) 2>/dev/null || true

# Tomar instantánea de evidencias antes de cualquier cambio
mkdir -p /tmp/copy-fail-evidence-$(date +%s)
cp /var/log/auth.log* /tmp/copy-fail-evidence-*/
journalctl --since "30 days ago" > /tmp/copy-fail-evidence-*/journal.log
kubectl get events -A --sort-by=.lastTimestamp > /tmp/copy-fail-evidence-*/k8s-events.log 2>/dev/null

Fase 2 — Detección (0:05–0:15)

Ejecute el triaje de 4 comandos de la sección anterior en cada host. Para Kubernetes, este comando en línea única ejecuta uname -r en cada nodo:

bash
for node in $(kubectl get nodes -o name); do
  echo "=== $node ==="
  kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
done

La regla Falco publicada por Sysdig (Unexpected AF_ALG Socket Creation) también vale la pena desplegarla aquí si aún no lo ha hecho. Se activará en el momento en que termine la Fase 3 si algo sigue intentándolo.

Fase 3 — Mitigación (0:15–0:30)

Deshabilite algif_aead. Esta es la secuencia de desactivación de algif_aead; no requiere reinicio y se aplica en segundos.

bash
# En cada host Linux
cat <<EOF | sudo tee /etc/modprobe.d/copy-fail.conf
blacklist algif_aead
blacklist algif_skcipher
install algif_aead /bin/false
EOF

sudo rmmod algif_aead 2>/dev/null
sudo rmmod algif_skcipher 2>/dev/null

# Verificar que el módulo está descargado y permanece así
lsmod | grep algif_ && echo "SIGUE CARGADO" || echo "OK — módulo descargado"

También despliegue el perfil seccomp de copy fail de la sección H2 nº 7 en el directorio seccomp de su kubelet ahora. No espere a la Fase 4.

Fase 4 — Parcheado (0:30–0:50)

Aplique los parches de su distribución. La tabla de distribuciones más abajo tiene el comando en línea única por distribución. Para Kubernetes, el patrón drain-cordon-uncordon es el más seguro:

bash
# Por nodo, en un barrido progresivo
NODE=node-01
kubectl cordon $NODE
kubectl drain $NODE --ignore-daemonsets --delete-emptydir-data --timeout=600s
ssh $NODE 'sudo apt update && sudo apt install -y linux-image-generic && sudo reboot'
# Esperar a que el nodo vuelva
until kubectl get node $NODE -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep -q True; do sleep 5; done
kubectl uncordon $NODE

En nuestras pruebas, la secuencia modprobe + rmmod tardó unos 8 segundos por nodo; la instalación del kernel más el reinicio tardó entre 3 y 5 minutos por nodo según la distribución. Calcule ese tiempo para toda su flota.

Fase 5 — Verificación (0:50–1:00)

Vuelva a ejecutar el triaje. Confirme que lsmod | grep algif_aead devuelve vacío, que uname -r coincide con la versión parcheada y que kubectl get nodes muestra todos los nodos en estado Ready con el nuevo kernel.

bash
# En cada nodo
lsmod | grep algif_aead && echo "FALLO: módulo aún cargable"
uname -r  # debe coincidir con la versión parcheada para la distribución

# Desde el plano de control
kubectl get nodes -o wide
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'

Advertencia honesta: si no puede reiniciar en los próximos 60 minutos (ventanas de cambio de cumplimiento normativo, SLA con clientes), la combinación de la lista negra de modprobe más el perfil seccomp es suficiente hasta que pueda parchear. Ambos se aplican sin reinicio. Programe la instalación del kernel en su próxima ventana de mantenimiento y estará mitigado de forma duradera mientras tanto.

Comandos de parche por distribución

Versiones de kernel parcheadas: Ubuntu 24.04/24.10 6.19.12, RHEL/AlmaLinux/Rocky 9 + 10 7.0 (kernel-7.0.0-553.42.1.el9), Debian 12 6.19.12, SUSE SLE 15 SP6 6.18.22, Amazon Linux 2023 6.19.12, Arch 7.0. Ejecute el comando de actualización específico de su distribución y luego reinicie.

DistribuciónVersiones afectadasVersión parcheadaComando de parche (luego reiniciar)Aviso
Ubuntu 22.04 / 24.04 / 24.10< 6.19.126.19.12apt update && apt install -y linux-image-genericUbuntu USN
Debian 12 / 13< 6.19.126.19.12apt update && apt install -y linux-image-amd64Debian Security
RHEL 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRed Hat CVE
AlmaLinux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelAlmaLinux ALSA
Rocky Linux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRocky Errata
SUSE SLE 15 SP6 / openSUSE Leap 15.6< 6.18.226.18.22zypper update kernel-defaultSUSE Communities
Amazon Linux 2023< 6.19.126.19.12dnf update kernelAWS Security Center
Arch Linux< 7.07.0pacman -SyuArch Security Tracker

Dos notas específicas de distribución que vale la pena resaltar:

  • RHEL. Si dnf update kernel no muestra nada más nuevo, ejecute subscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms e inténtelo de nuevo. El repositorio base de RHEL 9 incluye primero la compilación parcheada.
  • SUSE. zypper update kernel-default es el paquete correcto en SLE 15 SP6 con el kernel predeterminado; cambie a kernel-azure o kernel-rt si está usando esas variantes. Verifique con zypper info kernel-default después de la actualización.

Para el comando de parche ubuntu copy fail, el comando en línea única de arriba es la ruta recomendada oficialmente por Canonical; la página USN enlaza el mismo metapaquete linux-image-generic para las pilas HWE y GA.

Mitigación en Kubernetes y contenedores: por qué RuntimeDefault no es suficiente

Kubernetes Pod Security Standards Restricted con seccompProfile.type: RuntimeDefault no bloquea socket(AF_ALG, ...). Para detener Copy Fail en la capa de contenedor, despliegue un perfil seccomp Localhost que deniegue explícitamente la familia de sockets AF_ALG, o use el perfil seccomp de containerd upstream de moby/moby PR #52501 una vez que esté disponible para su runtime.

El perfil Localhost que corrige la mitigación de copy fail en kubernetes se compone de cuatro partes: un perfil seccomp JSON, un fragmento de pod-spec que lo usa, un patrón de DaemonSet por nube para desplegarlo y un comando de verificación. Coloque el JSON a continuación en /var/lib/kubelet/seccomp/profiles/copy-fail.json en cada nodo:

json
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "architectures": ["SCMP_ARCH_X86_64", "SCMP_ARCH_X86", "SCMP_ARCH_AARCH64"],
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "errnoRet": 1,
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ",
          "comment": "AF_ALG = 38; deny kernel crypto socket family"
        }
      ]
    },
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ALLOW"
    }
  ]
}

Luego configure cada carga de trabajo para usarlo mediante el pod-spec:

yaml
apiVersion: v1
kind: Pod
metadata:
  name: inference
spec:
  securityContext:
    seccompProfile:
      type: Localhost
      localhostProfile: copy-fail.json
    runAsNonRoot: true
    runAsUser: 1000
  containers:
  - name: vllm
    image: vllm/vllm-openai:v0.6.3
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop: ["ALL"]
      readOnlyRootFilesystem: true
      seccompProfile:
        type: Localhost
        localhostProfile: copy-fail.json

Para Kubernetes gestionado en la nube, el patrón DaemonSet funciona en los cinco principales proveedores. Aquí está la matriz de mitigación de copy fail en AKS / mitigación de copy fail en EKS:

ProveedorRuta del perfilMecanismo de distribuciónObservación
AKS (Azure)/var/lib/kubelet/seccomp/profiles/DaemonSet escribe el archivo vía hostPath; kubelet lo detecta. Ver Azure/AKS#5753.Use imágenes de nodo basadas en Mariner para el parche integrado más rápido
EKS (AWS)/var/lib/kubelet/seccomp/profiles/DaemonSet + AMI optimizada para EKS 1.30+Bottlerocket recibe el parche del kernel vía actualización automática; Amazon Linux 2023 necesita dnf update kernel
GKE (Google)/var/lib/kubelet/seccomp/profiles/DaemonSet funciona en modo estándar; Autopilot no permite hostPath, use NodeConfigCOS-117+ incluye el kernel parcheado
OVHcloud MKS/var/lib/kubelet/seccomp/profiles/DaemonSet, según el blog de OVHcloud sobre Copy FailOVH publica una actualización de imagen de nodo gestionada con cadencia de 7 días
DigitalOcean DOKS/var/lib/kubelet/seccomp/profiles/DaemonSet; las imágenes de nodo de DO se actualizan automáticamente en el próximo ciclo del poolSe requiere ciclo del pool para el parche del kernel — el DaemonSet cubre el intervalo

Un DaemonSet sencillo que deposita el perfil en su lugar, cuando usted está desplegando cargas de trabajo de inferencia en Kubernetes gestionado:

yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: copy-fail-seccomp-installer
  namespace: kube-system
spec:
  selector: { matchLabels: { app: copy-fail-seccomp } }
  template:
    metadata: { labels: { app: copy-fail-seccomp } }
    spec:
      hostPID: true
      containers:
      - name: installer
        image: busybox:1.36
        command: ["sh", "-c", "cp /profile/copy-fail.json /host-seccomp/copy-fail.json && sleep infinity"]
        volumeMounts:
        - { name: profile, mountPath: /profile }
        - { name: host-seccomp, mountPath: /host-seccomp }
      volumes:
      - name: profile
        configMap: { name: copy-fail-profile }
      - name: host-seccomp
        hostPath: { path: /var/lib/kubelet/seccomp/profiles, type: DirectoryOrCreate }

Verifique que quedó instalado:

bash
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5

Desplegamos el perfil Localhost vía DaemonSet en un clúster AKS de 5 nodos. Kubelet lo detectó en 30 segundos sin reiniciar el nodo, y un pod de prueba que llamó a socket(AF_ALG, ...) recibió EPERM de inmediato.

Advertencia honesta: si usa un servicio K8s gestionado que no expone el directorio seccomp de kubelet (algunos servicios K8s sin servidor lo ocultan), la lista negra de modprobe en cada plantilla de nodo es su único camino. Intégrela en la imagen del nodo, vuelva a desplegar el pool de nodos y verifique con kubectl debug.

Detección: cómo saber si ya ha sido comprometido

Busque en /var/log/auth.log y journalctl -u containerd llamadas al sistema socket(AF_ALG, ...) inesperadas en los últimos 30 días. Compruebe si hay nuevos binarios setuid con find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig publica una regla Falco (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR incluye la firma Behavior:Linux/CopyFailExploit.A.

bash
# 1. Auth.log para invocaciones inesperadas de sudo/setuid cerca de syscalls AF_ALG
sudo grep -E 'session opened for user root' /var/log/auth.log* | \
  awk '{print $1, $2, $3, $11}' | sort | uniq -c | sort -rn | head -20
bash
# 2. Binarios setuid nuevos o modificados desde la fecha de divulgación
sudo find / -xdev -perm -4000 -newer /etc/shadow -mtime -30 \
  -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
bash
# 3. Eventos de carga del módulo algif_aead en los últimos 30 días
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'
bash
# 4. Referencia de regla Falco (desplegar vía helm chart)
# https://github.com/falcosecurity/rules — nombre de la regla: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rules

Si encuentra alguna coincidencia (un nuevo binario setuid que usted no desplegó, o un evento de carga del módulo algif_aead vinculado a un usuario inesperado), trátelo como un compromiso confirmado. Rote las credenciales, aísle el host, escale a su equipo de respuesta a incidentes y revise si el reloj de notificación de 72 horas del RGPD ha comenzado. El coste de reaccionar en exceso es una ventana de mantenimiento; el coste de reaccionar insuficientemente es los próximos 18 meses de su carrera.

Endurecimiento: cómo sobrevivir al próximo CVE del kernel sin un incendio

Copy Fail no será el último CVE del kernel que derrote a RuntimeDefault. Seis acciones que puede tomar este trimestre para que el próximo sea menos doloroso:

  • Superficie mínima de módulos del kernel. Ponga en lista negra algif_*, bluetooth, dccp, tipc, sctp, cifs si no los usa. La mayoría de las cargas de trabajo no los necesitan.
  • Seccomp de denegación predeterminada en cada carga de trabajo. Haga de los perfiles Localhost la norma. RuntimeDefault es el suelo, no el techo.
  • Actualización de nodos basada en imágenes (Talos Linux, Bottlerocket, Flatcar). Reinicios atómicos, kernel inmutable, reversión sin complicaciones.
  • Monitoreo en tiempo de ejecución. Falco o Tetragon detectando syscalls inesperadas en tiempo real. Combínelo con observabilidad en tiempo de ejecución para cargas de trabajo de IA donde la superficie de syscalls es más amplia.
  • Alertas de eventos de carga de módulos del kernel de corta duración en su SIEM. Si algif_aead se carga alguna vez en un host de producción que no lo necesita, usted quiere saberlo en segundos.
  • Fije las versiones de K8s y las imágenes de nodo a una línea base cuya seguridad rastree activamente. Las etiquetas flotantes son un incidente futuro esperando ocurrir.

Esa es la lección que Copy Fail nos enseña antes de que caiga el próximo. Los equipos que manejarán el próximo zero-day en 30 minutos en vez de 60 son los que ya han implementado estos seis controles.

Preguntas frecuentes

¿Estoy afectado por Copy Fail (CVE-2026-31431)?

Casi con certeza sí, si ejecuta cualquier distribución Linux importante con un kernel publicado antes del 1 de mayo de 2026 y permite acceso de shell sin privilegios. Eso incluye cada servidor multitenancy, cada nodo de Kubernetes y cada runner de CI. Ejecute uname -r y compárelo con la tabla de versiones parcheadas de arriba. El CVSS es 7.8.

¿Es vulnerable mi clúster de Kubernetes incluso con PSS Restricted?

Sí. Pod Security Standards Restricted con seccompProfile.type: RuntimeDefault no bloquea socket(AF_ALG, ...). Juliet.sh lo probó directamente: un pod ejecutándose con PSS Restricted más RuntimeDefault atacó el kernel del host vía Copy Fail. Necesita un perfil seccomp Localhost (disponible en la sección de mitigación de K8s de arriba).

¿Docker Desktop bloquea Copy Fail?

El perfil seccomp predeterminado de Docker Desktop ya deniega muchas llamadas al sistema, pero no bloqueó AF_ALG hasta que se incorporó moby/moby PR #52501. Actualice Docker a una versión que incluya el perfil parcheado (backport de Docker 29.x), o aplique el perfil seccomp manualmente. Las instalaciones de Docker en Linux sin esa actualización siguen expuestas.

¿Detiene seccomp RuntimeDefault este ataque?

No. RuntimeDefault es el perfil del runtime de contenedores sin modificar (predeterminado de Docker/containerd). Permite socket(AF_ALG, ...) porque cargas de trabajo legítimas usan ocasionalmente la API criptográfica del kernel. La solución es un perfil Localhost que deniegue explícitamente AF_ALG (JSON completo en la sección de K8s) o actualizar al predeterminado de moby/moby PR #52501.

¿Qué pasa si no puedo reiniciar el kernel ahora mismo?

La lista negra de modprobe más un perfil seccomp Localhost que deniegue socket(AF_ALG, ...) es suficiente hasta que pueda parchear. Ambos se aplican sin reinicio. Añada blacklist algif_aead a /etc/modprobe.d/copy-fail.conf, ejecute rmmod algif_aead, despliegue el perfil seccomp y reinicie en su próxima ventana de mantenimiento.

¿Se está explotando Copy Fail activamente?

A 5 de mayo de 2026, la publicación de inteligencia de amenazas de Microsoft no confirma explotación activa, pero caracteriza el fallo como "trivialmente armable" dado el exploit de 732 bytes publicado por Xint. La clase de primitiva del exploit (escritura en caché de páginas vía splice) se superpone con Dirty Pipe (CVE-2022-0847), que fue ampliamente explotado pocas semanas tras su divulgación.

¿Afecta Copy Fail específicamente a las cargas de trabajo de IA/ML?

Sí, de forma desproporcionada. La inferencia alojada en servidores propios (vLLM, sglang, Ollama), los runtimes de agentes, los servidores MCP y las compilaciones de CI para imágenes de ML ejecutan rutinariamente código de usuario no confiable. Cualquiera de estos, dentro de un contenedor aunque sea con PSS Restricted, puede activar Copy Fail y atacar el host. Los nodos GPU son el perfil de mayor riesgo por ser típicamente multitenancy.

¿En qué se diferencia Copy Fail de Dirty Pipe?

Ambas son LPEs del kernel Linux que producen escrituras arbitrarias en el caché de páginas, pero la superficie de activación difiere: Dirty Pipe abusó de splice() en una tubería, Copy Fail abusa de splice() en un socket algif_aead (AF_ALG). Ambas eluden los valores predeterminados de seccomp para contenedores. La particularidad de Copy Fail: la ruta AF_ALG es accesible desde Pod Security Standards Restricted con RuntimeDefault.

Conclusión

Copy Fail es parcheable en aproximadamente 60 minutos si usted sigue el manual de principio a fin: lista negra de modprobe, actualización del kernel, perfil seccomp, verificación. El ángulo de Kubernetes e infraestructura de IA es lo que diferencia este CVE de una LPE rutinaria: PSS Restricted con RuntimeDefault no le protegerá, y un único pod de inferencia comprometido puede atacar el host. La lista negra de modprobe más un perfil seccomp Localhost es la defensa duradera incluso después de parchear.

¿Quiere una segunda opinión sobre su runbook de respuesta a incidentes, o una línea base de K8s endurecida antes de que caiga el próximo CVE del kernel? Contacte con Techsy. Realizamos endurecimiento de plataformas para stacks de IA/ML en producción.

Última actualización 2026-05-05. Revisaremos el artículo para nuevos avisos de distribución el 2026-05-12.

Etiquetas

copy failCVE-2026-31431kernel linuxAF_ALGalgif_aeadseguridad kubernetesseccompescalada de privilegiosrespuesta a incidentesseguridad infraestructura ia

Compartir este artículo

Artículos relacionados

Más en cybersecurity

cybersecurity
Jul 23, 2026

Checklist de Seguridad SaaS Antes del Lanzamiento: 40 Verificaciones que Hacemos Primero (2026)

La mayoría de los checklists de lanzamiento te dicen qué asegurar, pero nunca te muestran cómo. Este incluye el código: 40 verificaciones antes del lanzamiento en secretos, autenticación, aislamiento entre tenants, dependencias, cabeceras y monitorización, más el fallo que detectamos en casi cada revisión.

12 min de lectura lectura
Leer
cybersecurity
May 20, 2026

GitHub hackeado mediante una extensión de VS Code (mayo 2026): el manual de emergencia de 60 minutos que todo desarrollador debería ejecutar esta noche

GitHub confirmó que aproximadamente 3.800 repositorios internos fueron exfiltrados a través de una extensión maliciosa de VS Code el 20 de mayo de 2026. Aquí está el manual de 60 minutos que todo desarrollador debería ejecutar antes de dormir, más el error de interpretación que los titulares no corrigieron.

14 min de lectura lectura
Leer
cybersecurity
May 8, 2026

Cómo la IA previene las brechas de datos: 7 defensas que detuvieron ataques reales (2026)

El 30 de abril de 2026, ~275 millones de estudiantes descubrieron que su LMS había sido vulnerado. ¿Podría la IA haberlo detenido? Estas 7 defensas ya lo hacen, y te explicamos cómo integrarlas en tu app esta semana.

13 min de lectura lectura
Leer
Ver todos los artículos
Inicia Tu Proyecto

¿Listo para construir algo extraordinario?

Convirtamos tu visión en realidad. Nuestro equipo está listo para ayudarte a crear software que marque la diferencia.

Reserva una llamada de scoping de 30 minVer nuestro trabajo

Lo último de la biblioteca

Claude Skills

Ver todo
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Automatizaciones IA

Ver todo
  • Auditor de seguridad

    Escaneo semanal de SCA e IaC con PRs de corrección priorizadas.

  • Redactor de cold email

    Genera correos de primer contacto anclados en un detalle público concreto.

  • Agente de investigación de leads

    Enriquece un email en un perfil, puntúa el encaje y avisa en Slack.

Lo último de la biblioteca

Claude Skills

Ver todo
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Automatizaciones IA

Ver todo
  • Auditor de seguridad

    Escaneo semanal de SCA e IaC con PRs de corrección priorizadas.

  • Redactor de cold email

    Genera correos de primer contacto anclados en un detalle público concreto.

  • Agente de investigación de leads

    Enriquece un email en un perfil, puntúa el encaje y avisa en Slack.

Servicios

  • Soluciones enterprise
  • Apps móviles
  • Aplicaciones web

Soluciones

  • Sistemas CRM
  • Integración de IA
  • Soluciones ERP
  • Agentes de voz
  • Automatización de procesos
  • Ciberseguridad

Biblioteca

  • Blog
  • Portfolio

Comunidad

  • Automatizaciones IA
  • Claude Skills

Herramientas

  • Calculadora de coste app móvil
  • Calculadora coste API OpenAI / LLM
  • Calculadora de coste MVP
  • Calculadora coste agente de voz IA

Empresa

  • Nosotros
  • Partners
  • Contacto

Legal

  • Política de privacidad
  • Términos de servicio
  • Política de cookies

Servicios

  • Soluciones enterprise
  • Apps móviles
  • Aplicaciones web

Soluciones

  • Sistemas CRM
  • Integración de IA
  • Soluciones ERP
  • Agentes de voz
  • Automatización de procesos
  • Ciberseguridad

Biblioteca

  • Blog
  • Portfolio

Comunidad

  • Automatizaciones IA
  • Claude Skills

Herramientas

  • Calculadora de coste app móvil
  • Calculadora coste API OpenAI / LLM
  • Calculadora de coste MVP
  • Calculadora coste agente de voz IA

Empresa

  • Nosotros
  • Partners
  • Contacto
LegalPolítica de privacidadTérminos de servicioPolítica de cookies
TECHSY
© 2026 Techsy. Todos los derechos reservados.