## https://sploitus.com/exploit?id=8834D7C3-C30D-505C-A4F3-8E834EDAFCFE
# Copy Fail — CVE-2026-31431 Lab
## Introducción a UNIX · UIDE · Evaluación Parcial 2 → 9 puntos
[](https://github.com/DOCENTE_REPO/copy-fail-challenge/actions/workflows/grade.yml)
---
Un bug lógico silencioso durante **casi una década** en el kernel Linux.
Un script de **732 bytes**. **Root** en todas las distribuciones mayores desde 2017.
Tu tarea: reproducirlo y parchearlo.
## Inicio rápido
```bash
# 1. Fork este repositorio a tu cuenta GitHub
# 2. Ábrelo en GitHub Codespaces
# 3. Dentro del devcontainer:
git config user.name "TuNombre TuApellido"
git config user.email "tu@uide.edu.ec"
make setup # compila kernel vulnerable + rootfs (~20 min)
make qemu # arranca la VM vulnerable
# ... sigue las instrucciones en CHALLENGE.md
```
## Estructura del repositorio
```
copy-fail-challenge/
├── .devcontainer/ ← Configuración del devcontainer (Ubuntu + QEMU)
│ ├── devcontainer.json
│ └── Dockerfile
├── .github/workflows/
│ └── grade.yml ← Autocalificador de GitHub Actions
├── evidence/ ← TUS ARCHIVOS DE EVIDENCIA VAN AQUÍ
│ └── README.md
├── grader/
│ └── grade.py ← Calificador local (make grade)
├── patches/ ← TU PARCHE VA AQUÍ (Hito 4)
│ └── README.md
├── scripts/
│ ├── 00_welcome.sh
│ ├── 01_build_kernel.sh ← Compila Linux v6.12 (vulnerable)
│ ├── 02_build_rootfs.sh ← BusyBox + Python rootfs
│ ├── 03_run_qemu.sh ← Arranca la VM
│ └── 04_build_patched_kernel.sh
├── kernel/ ← Fuentes del kernel (gitignore excepto config)
├── CHALLENGE.md ← INSTRUCCIONES COMPLETAS DEL RETO
├── Makefile
└── README.md
```
## Hitos y puntuación
| # | Hito | Pts |
|---|------|-----|
| 1 | Kernel Linux 6.12 vulnerable corriendo en QEMU, `algif_aead` cargado | 2.0 |
| 2 | PoC ejecutado → `uid=0(root)` obtenido como usuario sin privilegios | 3.0 |
| 3 | Mitigación temporal: `rmmod algif_aead`, exploit falla | 1.5 |
| 4 | Parche en `crypto/algif_aead.c`, kernel recompilado, exploit falla | 2.0 |
| B | `REPORT.md`: explicación técnica con conexión a conceptos del curso | 0.5 |
## Recursos
- Write-up técnico: https://xint.io/blog/copy-fail-linux-distributions
- Sitio oficial del CVE: https://copy.fail/
- PoC público: https://github.com/theori-io/copy-fail-CVE-2026-31431
- Kubernetes escape (Parte 2): https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC
## Reglas del examen
- ✅ Se permite todo recurso en internet, IA, documentación, write-ups
- ✅ Se permite (y se espera) leer el código del PoC público
- ❌ No se permite compartir archivos de evidencia entre estudiantes
- ❌ El hostname de tu VM debe ser único (viene de `git config user.name`)
- ⏱ Todos los commits deben tener timestamp dentro de la ventana del examen
---
*Basado en CVE-2026-31431 descubierto por Theori / Xint Code. Divulgado el 29 de abril de 2026.*