CVE-2026-46300

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

CVE-2026-46300 – Fragnesia

Fragnesia ist eine lokale Privilege-Escalation-Schwachstelle (LPE) im Linux-Kernel, entdeckt am 13. Mai 2026 von William Bowling (Zellic / V12 Security) mithilfe eines KI-gestützten Code-Audit-Tools. Sie ist die dritte kritische Kernel-Lücke dieser Art innerhalb von drei Wochen – nach Copy Fail und Dirty Frag.

Der Name leitet sich vom technischen Kernproblem ab: Der Socket-Buffer vergisst (forgets), dass ein Fragment (frag) als geteilt markiert war – frag amnesiaFragnesia.

Hintergrund

Fragnesia gehört zur selben Fehlerklasse wie Dirty Pipe, Copy Fail und Dirty Frag: Ein normaler Benutzer ohne Root-Rechte kann gezielt Daten in den Page Cache des Kernels schreiben, ohne dass die eigentliche Datei auf dem Datenträger verändert wird. Klassische Erkennungsmethoden wie Hashprüfungen oder Log-Analysen greifen daher nicht. Nach einem Neustart oder beim Leeren des Page Cache verschwinden alle Spuren automatisch.

Im Gegensatz zu vielen anderen Kernel-Exploits erfordert Fragnesia kein präzises Timing und keinen Race Condition – es handelt sich um einen deterministischen Logikfehler mit sehr hoher Erfolgsrate.

Besonders unangenehm: Fragnesia ist ein unbeabsichtigter Nebeneffekt des Patches, der Dirty Frag beheben sollte. Dirty-Frag-Entdecker Hyunwoo Kim hat öffentlich bestätigt, dass die Lücke durch den Commit zu CVE-2026-43284 erst aktiviert wurde. Jeder Kernel, der den Dirty-Frag-Patch zwischen dem 7. und 13. Mai 2026 erhielt, war anschließend für Fragnesia angreifbar.

Betroffene Komponente

XFRM ESP-in-TCP (CVE-2026-46300)
Der Fehler liegt in der Kernfunktion skb_try_coalesce() im Socket-Buffer-Code.

Beim Zusammenführen von Socket-Buffer-Fragmenten wird das Flag SKBFL_SHARED_FRAG nicht weitergegeben. Der Kernel verliert dadurch die Information, dass ein Fragment extern gespeichert ist – zum Beispiel durch Page-Cache-Seiten, die via splice() aus einer Datei eingebunden wurden.

Der XFRM-ESP-in-TCP-Empfangspfad führt anschließend eine AES-GCM-Entschlüsselung direkt auf diesen Page-Cache-Seiten durch (in-place decryption). Durch Kontrolle des Initialisierungsvektors (IV/Nonce) wird dies zu einem deterministischen Ein-Byte-Schreibzugriff auf die gecachte Kopie einer beliebigen lesbaren Datei.

Die Schwachstelle betrifft alle Kernel ohne den Upstream-Patch vom 13. Mai 2026. Amazon Linux ist nicht betroffen – das Modul espintcp wird dort nicht ausgeliefert. CloudLinux 7 (nicht 7h) ist ebenfalls nicht betroffen (älterer Kernel-Pfad).

Betroffene Versionen

Alle Distributionen mit Kerneln vor dem 13. Mai 2026, sofern das Modul espintcp verfügbar ist:

  • Ubuntu (bestätigt: 6.8.0-111-generic, Build vom 11. April 2026)
  • Red Hat Enterprise Linux / CentOS Stream 10
  • AlmaLinux 8, 9, 10
  • Fedora
  • Debian
  • SUSE / openSUSE Tumbleweed

Proof of Concept

Der PoC wurde von William Bowling (V12 Security) öffentlich auf GitHub veröffentlicht und ist in C geschrieben. Er zielt auf /usr/bin/su im Page Cache und öffnet eine Root-Shell.

Kompilieren und ausführen
git clone https://github.com/v12-security/pocs.git
cd pocs/fragnesia
gcc -o exp fragnesia.c
./exp

Hinweis Ubuntu: AppArmor schränkt unprivilegierte User-Namespaces standardmäßig ein. Zum Testen muss diese Einschränkung zunächst deaktiviert werden:

sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
Ablauf des Exploits
  1. unshare(CLONE_NEWUSER | CLONE_NEWNET) – erstellt unprivilegierte User- und
 Network-Namespaces; innerhalb des Namespace erhält der Prozess CAP_NET_ADMIN
 ohne echte Host-Rechte
  1. Via NETLINK_XFRM wird eine Transport-Mode ESP-in-TCP Security Association
 mit AES-128-GCM, bekanntem Key und SPI 0x100 installiert
  1. Eine 256-Einträge-Keystream-Tabelle wird über AF_ALG aufgebaut:
 Für jeden möglichen Byte-Wert (0–255) wird die passende Nonce vorberechnet
  1. Via splice() werden file-backed Pages (z. B. von /usr/bin/su)
 in den TCP-Receive-Queue eingereiht
  1. Der Socket wird in den espintcp-ULP-Modus versetzt –
 nach dem splice, zu spät für die Shared-Frag-Prüfung
  1. Der Kernel entschlüsselt die Page-Cache-Seiten direkt (in-place AES-GCM)
  2. Der AES-GCM-Keystream XORt sich kontrolliert in die Zielseite –
 ein deterministischer Ein-Byte-Schreibzugriff pro Durchlauf
  1. Schritte 4–7 werden byte-für-byte wiederholt bis der gewünschte Payload steht
Ergebnis

Beim nächsten Aufruf von su wird der injizierte Stub als Root ausgeführt. Die Datei auf dem Datenträger bleibt unverändert – File-Integrity-Monitoring (Tripwire, Checksummen, auditd) meldet keinen Befund.

Achtung nach dem Test: Der vergiftete Page-Cache-Eintrag bleibt bis zum expliziten Leeren oder Neustart bestehen. Jeder weitere su-Aufruf auf der Maschine öffnet erneut eine Root-Shell:

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

Fix

Bis ein offizieller Kernel-Patch für die verwendete Distribution verfügbar ist, können die verwundbaren Module deaktiviert werden. Kein Neustart erforderlich. Die Mitigation ist identisch mit der für Dirty Frag – wer sie bereits angewendet hat, ist auch gegen Fragnesia geschützt.

Module dauerhaft deaktivieren und sofort entladen
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
  > /etc/modprobe.d/fragnesia.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Mitigation prüfen (keine Ausgabe = Module nicht geladen = geschützt)
lsmod | grep -E 'esp4|esp6|rxrpc'
Page Cache leeren (falls Exploit möglicherweise bereits ausgeführt wurde)
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

Hinweis: Das Leeren des Page Cache entfernt nur die vergiftete In-Memory-Kopie. Falls ein Angreifer bereits Root erlangt und eine Backdoor installiert hat, ist das System als vollständig kompromittiert zu behandeln.

Nach einem verfügbaren Kernel-Update:

Debian / Ubuntu
apt update && apt upgrade
Rocky Linux / RHEL / AlmaLinux / Fedora
dnf update

Kernel-Version nach dem Update prüfen:

uname -r

Verhältnis zu Dirty Frag und Copy Fail

Alle drei Lücken nutzen denselben Page-Cache-Corruption-Mechanismus:

CVE Name Entdeckt Modul(e) Besonderheit
CVE-2026-31431 Copy Fail ~29. April 2026 algif_aead In CISA KEV-Katalog; aktiv ausgenutzt
CVE-2026-43284 / CVE-2026-43500 Dirty Frag 7. Mai 2026 esp4, esp6, rxrpc Zwei verkettete Bugs
CVE-2026-46300 Fragnesia 13. Mai 2026 esp4, esp6, rxrpc Durch Dirty-Frag-Patch aktiviert

Wer die Dirty-Frag-Mitigation (Blacklist esp4, esp6, rxrpc) bereits angewendet hat, ist auch gegen Fragnesia geschützt – aber nicht automatisch gegen Copy Fail (dort ist zusätzlich algif_aead relevant).

Weblinks