
Mitigación rápida y auditable de Linux para CVE-2026-31431 Copy Fail: bloqueo de algif_aead, verificación y endurecimiento de seccomp de AF_ALG.
______ ______ _ __ ______ __
/ ____/___ ____ __ _/ ____/___ _(_) / / ____/_ ______ __________/ /
/ / / __ \/ __ \/ / / / /_ / __ `/ / / / / __/ / / / __ `/ ___/ __ /
/ /___/ /_/ / /_/ / /_/ / __/ / /_/ / / / / /_/ / /_/ / /_/ / / / /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/_/ \____/\__,_/\__,_/_/ \__,_/
/_/ /____/
Evaluación y mitigación rápida y auditable de la exposición en Linux para CVE-2026-31431 “Copy Fail” mientras los kernels se parchean.
CopyFail Guard es una herramienta de operaciones defensivas para administradores de sistemas Linux, ingenieros DevSecOps, equipos de plataforma y respondedores de incidentes. Ayuda a reducir la exposición al problema de algif_aead / AF_ALG de Linux al:
algif_aead está disponible, cargado, integrado en el kernel o ya bloqueadomodprobe.d y descargar el módulo cuando sea seguroSolución final: instala el kernel parcheado de tu proveedor y reinicia.
Esta herramienta cubre la brecha operativa entre la divulgación y el parcheo completo de la flota.
splice, cambios de setuid, escalada de privilegios ni sondeos destructivos./etc/modprobe.d/99-copyfail-guard.conf, y el rollback elimina solo ese archivo.seccomp-patch añade una denegación de AF_ALG a un perfil seccomp existente de Docker/Podman/Kubernetes en lugar de reemplazar el endurecimiento de tu runtime.assess --json y los códigos de salida documentados respaldan los escaneos de flota, la captura en SIEM y la evidencia de gestión de cambios.Si estás en un host Linux y necesitas una respuesta rápida:
git clone --depth 1 https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
Si el veredicto indica exposición y algif_aead es modular:
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Para instalaciones repetibles, fija una etiqueta de versión:
git clone --branch v0.3.0 --depth 1 https://github.com/juliosuas/copyfail-guard.git
Reemplaza v0.3.0 con la última versión etiquetada cuando haya versiones más recientes disponibles.
Ejecuta primero la comprobación segura de exposición:
sudo ./bin/copyfail-guard.sh assess
Cómo interpretar el resultado:
| Familia de veredicto | Qué significa | Qué hacer |
|---|---|---|
EXPOSED_* | algif_aead / AF_ALG parece accesible o cargable | Mitiga ahora; luego aplica el parche y reinicia |
PARTIALLY_MITIGATED_* | Existe un bloqueo, pero el módulo cargado o el estado de reinicio aún importan | Reinicia o descarga de forma segura; luego verifica |
INTERIM_MITIGATED_* | La mitigación local está activa | Consérvala, pero igualmente aplica el parche y reinicia |
LOW_OBVIOUS_EXPOSURE_* | Las comprobaciones locales no encontraron exposición obvia de algif_aead | Confirma igualmente el estado del parche del proveedor |
Si ejecutas contenedores no confiables, trabajos de CI, sandboxes o cargas de trabajo multiusuario, prueba también si la creación de sockets AF_ALG está bloqueada dentro de ese runtime:
python3 tools/afalg-socket-test.py
PERMITTED no demuestra una explotación exitosa, pero demuestra que la API criptográfica relevante del espacio de usuario es accesible. Para operaciones defensivas, eso es razón suficiente para aplicar la mitigación mientras confirmas el despliegue del kernel parcheado.
No se incluye ninguna prueba de concepto destructiva. Eso es una característica, no una carencia.
Una prueba real de explotación de Copy Fail necesitaría validar el impacto en la memoria del kernel o en la page cache, o la escalada de privilegios. Incluir eso en un repositorio público de mitigación haría que el proyecto fuera menos seguro y menos desplegable en producción.
CopyFail Guard demuestra las cosas sobre las que los operadores pueden actuar de forma segura:
Para conocer el estado final de vulnerabilidad, combina esta herramienta con el aviso del proveedor, el inventario de paquetes y la evidencia de reinicio.
CopyFail Guard es mitigación, no cura. Reduce la exposición y verifica los controles intermedios. La solución duradera sigue siendo el kernel parcheado por el proveedor más el reinicio.
La herramienta está diseñada intencionalmente para clonar y ejecutar en respuesta a incidentes: no se requieren compilador, cabeceras del kernel, código de explotación ni gestor de paquetes de terceros para el flujo principal del host. python3 es necesario para la salida --json, seccomp-patch y la prueba de sockets AF_ALG sin explotación.
Clonar y ejecutar:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
chmod +x bin/copyfail-guard.sh
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Instalación opcional en el sistema:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./scripts/install.sh
sudo copyfail-guard status
El instalador permite fijar el origen y el destino para despliegues controlados:
sudo env COPYFAIL_GUARD_REF=v0.3.0 ./scripts/install.sh
Usa la última versión etiquetada para COPYFAIL_GUARD_REF cuando haya versiones más recientes disponibles.
Endurecimiento de contenedores / CI:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
Valida que AF_ALG está bloqueado dentro de un contenedor protegido:
docker run --rm \
--security-opt seccomp=./copyfail-seccomp.json \
-v "$PWD/tools:/tools:ro" \
python:3.12-alpine \
python /tools/afalg-socket-test.py
Resultado protegido esperado:
BLOCKED: socket(AF_ALG) denied by policy (...)
Consulta Salidas de ejemplo para ver los veredictos esperados, el formato JSON y los resultados de validación de contenedores.