Op 29 april 2026 werd CVE-2026-31431 — bijgenaamd “Copy Fail” — publiek bekendgemaakt door het offensieve beveiligingsbedrijf Theori en hun AI-platform Xint. De kwetsbaarheid heeft een CVSS-score van 7.8 (HIGH) en treft vrijwel alle Linux-systemen met een kernel gebouwd tussen 2017 en begin 2026.
Wat is Copy Fail?
Copy Fail is een logicafout in de authencesn cryptografische template van de algif_aead module — het AEAD-socketinterface van de Linux userspace crypto-API (AF_ALG).
De kern van het probleem: in 2017 werd een “in-place optimalisatie” toegevoegd aan de kernel (commit 72548b093ee3, kernel v4.14). Hierdoor kunnen dezelfde geheugenlocaties zowel als bron als bestemming dienen bij AEAD-cryptografische bewerkingen. Dit opende onbedoeld een schrijfpad naar de page cache van bestanden die de aanvaller normaal gesproken niet mag aanpassen.
Een onbevoegde lokale gebruiker kan hierdoor vier gecontroleerde bytes schrijven naar de page cache van elk leesbaar bestand op het systeem.
Hoe werkt de aanval?
Via splice() worden pagina’s van een doelbestand (bijv. /usr/bin/su) in de scatterlist van een AEAD-operatie geladen. De authencesn(hmac(sha256),cbc(aes)) schrijft vervolgens vier bytes als scratch space maar door de fout belanden deze bytes in de page cache van het gespliced bestand.
Omdat de kernel bij het uitvoeren van een binary de page cache leest (en niet de schijf), wordt het gecorrumpeerde in-memory exemplaar uitgevoerd. Het bestand op schijf blijft onaangetast, waardoor:
- Schijfcontroles en checksums de aanpassing volledig missen
inotifyen soortgelijke bestandssysteemgebeurtenissen niet getriggerd worden- De corruptie direct zichtbaar is voor het hele systeem
Door het primitief herhaaldelijk toe te passen, kan een aanvaller shellcode in de page cache van /usr/bin/su plaatsen en vervolgens een root shell verkrijgen. Het geheel past in een Python-script van 732 bytes.
Vergelijking met Dirty Pipe
Copy Fail wordt vergeleken met de bekende Dirty Pipe-kwetsbaarheid (CVE-2022-0847), maar is in meerdere opzichten gevaarlijker:
| Eigenschap | Dirty Pipe (CVE-2022-0847) | Copy Fail (CVE-2026-31431) |
|---|---|---|
| Kernelversie | ≥ 5.8 vereist | 2017–2026 (v4.14+) |
| Betrouwbaarheid | Timing-gevoelig, soms crashes | 100%, geen race conditions |
| Portabiliteit | Versiespecifieke targeting | Één script, alle distro’s |
| Complexiteit | Nauwkeurige pipe buffer manipulatie | Rechte logica, geen offsets nodig |
Getroffen systemen
Alle mainstream Linux-distributies met een kernel gebouwd tussen 2017 en de patch zijn kwetsbaar. Bevestigd getroffen bij disclosure:
- Ubuntu 24.04 LTS
- RHEL 14.3
- Amazon Linux 2023
- SUSE 16
- Debian, Arch Linux, Fedora, Rocky Linux, AlmaLinux, Oracle Linux
Let op: Ubuntu 26.04 en kernels vanaf versie 6.18.22 / 6.19.12 / 7.0 zijn niet kwetsbaar.
De aanval werkt ook over containergrenzen heen, omdat de page cache gedeeld is over de host. Kubernetes-nodes en CI/CD-runners die blootgesteld zijn aan onvertrouwde workloads lopen daardoor extra risico.
Aanvalsvereisten
Er is geen standalone remote vector. Een aanvaller heeft lokale code-uitvoering nodig als eerste stap — direct of via een eerder compromis (bijv. een webapplicatiekwetsbaarheid). Zodra die voet aan de grond bestaat, escaleert de exploit elke onbevoegde gebruiker naar root.
Tijdlijn
| Datum | Gebeurtenis |
|---|---|
| Augustus 2017 | In-place AEAD optimalisatie geïntroduceerd in Linux v4.14 |
| 23 maart 2026 | Theori meldt de kwetsbaarheid aan het Linux kernel security team |
| 1 april 2026 | Mainline fix gecommit — de 2017 optimalisatie wordt teruggedraaid |
| 29 april 2026 | Publieke disclosure van CVE-2026-31431 + PoC-exploit gepubliceerd |
| 30 april – heden | Distributies rollen patches uit; officiële pakketten nog beperkt beschikbaar |
Mitigatie
Tijdelijke workaround (direct toepasbaar)
Schakel de algif_aead module uit totdat een gepatchte kernel beschikbaar is:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Structurele oplossing
Pas de kernelupdate toe zodra je distributie een patch uitbrengt. De fix zit in:
6.18.226.19.127.0
Detectie
Controleer of je kernel het kwetsbare commit bevat:
# Kwetsbaar commit aanwezig?
grep -r "72548b093ee3" /proc/version 2>/dev/null
# Of controleer via de distro-changelog of de fix aanwezig is:
# Fix commit: a664bf3d603d
Prioriteiten
CERT-EU raadt aan om Kubernetes-nodes en CI/CD-runners met voorrang te patchen, gezien de mogelijkheid om containergrenzen te overschrijden.
