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
  • inotify en 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:

EigenschapDirty Pipe (CVE-2022-0847)Copy Fail (CVE-2026-31431)
Kernelversie≥ 5.8 vereist2017–2026 (v4.14+)
BetrouwbaarheidTiming-gevoelig, soms crashes100%, geen race conditions
PortabiliteitVersiespecifieke targetingÉén script, alle distro’s
ComplexiteitNauwkeurige pipe buffer manipulatieRechte 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

DatumGebeurtenis
Augustus 2017In-place AEAD optimalisatie geïntroduceerd in Linux v4.14
23 maart 2026Theori meldt de kwetsbaarheid aan het Linux kernel security team
1 april 2026Mainline fix gecommit — de 2017 optimalisatie wordt teruggedraaid
29 april 2026Publieke disclosure van CVE-2026-31431 + PoC-exploit gepubliceerd
30 april – hedenDistributies 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.22
  • 6.19.12
  • 7.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.

Referenties