- Dirty Frag ist eine universelle Schwachstelle zur lokalen Rechteausweitung, mit der sich auf den wichtigsten Linux-Distributionen Root-Rechte erlangen lassen; durch einen gebrochenen Responsible-Disclosure-Zeitplan und ein gebrochenes Embargo gibt es derzeit noch keine Patches und keine CVE
- Als Erweiterung derselben Bug-Klasse wie Dirty Pipe und Copy Fail handelt es sich um einen deterministischen Logikfehler, der keine Race Condition benötigt und eine sehr hohe Erfolgsquote aufweist
- Die effektive Lebensdauer der Schwachstelle beträgt rund 9 Jahre; Tests wurden auf wichtigen Distributionen wie Ubuntu, RHEL, Fedora und openSUSE abgeschlossen
- Auch Systeme, auf denen die bestehende Copy-Fail-Gegenmaßnahme (Blacklist für
algif_aead) angewendet wurde, sind weiterhin für Dirty Frag anfällig - Als vorläufige Gegenmaßnahme wird bis zur Bereitstellung von Distributions-Patches empfohlen, die betroffenen Module esp4, esp6 und rxrpc zu entfernen
Überblick
- Eine Bug-Klasse, die das
frag-Mitglied dersk_buff-Struktur korrumpiert, als Erweiterung derselben Bug-Klasse, zu der Dirty Pipe und Copy Fail gehören - Durch das Verketten der Schwachstellen xfrm-ESP Page-Cache Write und RxRPC Page-Cache Write lässt sich auf den wichtigsten Linux-Distributionen Root-Zugriff erlangen
- Als deterministischer Logikfehler hängt sie nicht von Timing-Fenstern ab und benötigt keine Race Condition
- Selbst wenn ein Exploit fehlschlägt, tritt kein Kernel Panic auf, und die Erfolgsquote ist sehr hoch
Warum zwei Schwachstellen verkettet wurden
- xfrm-ESP Page-Cache Write bietet ähnlich wie Copy Fail eine starke beliebige 4-Byte-STORE-Primitiv und ist in den meisten Distributionen enthalten, erfordert jedoch die Berechtigung zur Erstellung von Namespaces
- Unter Ubuntu kann die Erstellung nicht privilegierter User-Namespaces durch AppArmor-Richtlinien blockiert sein; in dieser Umgebung lässt sich xfrm-ESP Page-Cache Write daher nicht auslösen
- RxRPC Page-Cache Write benötigt keine Berechtigung zur Namespace-Erstellung, aber das Modul
rxrpc.koist in den meisten Distributionen selbst nicht enthalten- Unter Ubuntu wird das Modul
rxrpc.kojedoch standardmäßig geladen
- Unter Ubuntu wird das Modul
- Durch das Verketten beider Schwachstellen werden ihre jeweiligen blinden Flecken gegenseitig ausgeglichen, sodass sich auf allen wichtigen Distributionen Root-Rechte erlangen lassen
Beziehung zu Copy Fail
- Copy Fail war die Motivation, diese Forschung zu beginnen
- xfrm-ESP Page-Cache Write verwendet dasselbe Sink wie Copy Fail, kann jedoch unabhängig von der Verfügbarkeit des Moduls
algif_aeadausgelöst werden - Auch Systeme, auf denen die veröffentlichte Copy-Fail-Gegenmaßnahme (Blacklist für
algif_aead) angewendet wurde, bleiben für Dirty Frag anfällig
Betroffener Umfang
- xfrm-ESP Page-Cache Write: ab Commit
cac2661c53f3(2017-01-17) bis Upstream - RxRPC Page-Cache Write: ab Commit
2dc334f1a63a(2023-06) bis Upstream - Die effektive Lebensdauer der Schwachstelle beträgt rund 9 Jahre
- Getestete Distributionsversionen:
- Ubuntu 24.04.4: 6.17.0-23-generic
- RHEL 10.1: 6.12.0-124.49.1.el10_1.x86_64
- openSUSE Tumbleweed: 7.0.2-1-default
- CentOS Stream 10: 6.12.0-224.el10.x86_64
- AlmaLinux 10: 6.12.0-124.52.3.el10_1.x86_64
- Fedora 44: 6.19.14-300.fc44.x86_64
Gegenmaßnahmen
- Durch den gebrochenen Responsible-Disclosure-Zeitplan und das gebrochene Embargo existieren derzeit für keine Distribution Patches
- Als temporäre Gegenmaßnahme wird ein Befehl zum Entfernen der betroffenen Module angegeben:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"- Trägt die Module
esp4,esp6undrxrpcin/etc/modprobe.d/dirtyfrag.confals Blacklist ein und entlädt sie
- Trägt die Module
- Nachdem die einzelnen Distributionen Patches backportiert haben, müssen diese Updates eingespielt werden
Hintergrund der Veröffentlichung
- Das Dirty-Frag-Dokument wurde nach Abstimmung mit den Maintainer:innen von linux-distros@vs.openwall.org auf deren Bitte hin veröffentlicht
- Das Embargo ist durch externe Faktoren gebrochen, und aktuell gibt es weder Patches noch eine CVE
- Das PoC wurde nach Abstimmung mit linux-distros zum Zweck einer präzisen Informationsbereitstellung veröffentlicht; die Nutzung auf nicht autorisierten Systemen ist untersagt
2 Kommentare
Hacker-News-Kommentare
Das ist in der Grundursache und der Art der Ausnutzung Copy Fail sehr ähnlich.
Für mich ist das ein gutes Beispiel für etwas, das man leicht verliert, wenn man LLMs zu viel Arbeit überlässt: Exploration. Bei der KI-gestützten Schwachstellenforschung fühlt es sich an, als würde Kreativität ziemlich gehemmt. Wenn auf eine Frage sofort eine Antwort kommt, sieht man nicht, was sonst noch in der Umgebung liegt. Es ist wie ein Genie, das genau das liefert, worum man gebeten hat, und nichts darüber hinaus.
Der Forscher, der Copy Fail gefunden hat, hat sich nach etwas Verdächtigem stark auf KI verlassen; hätte er selbst viel mehr Code durchwühlt, hätte er mehr Chancen gehabt, solche Zwillings-Bugs zu finden. Gleichzeitig glaube ich, dass aktuelle LLMs diese Bugs wohl gefunden hätten, wenn man den Prompt etwas weniger direktiv formuliert hätte. Ein ziemlich ungewöhnlicher Fall von negativer Synergie: zusammen gearbeitet, aber mit schlechterem Ergebnis
Bei copy.fail wurde das Falsche gefixt, und die Leute haben vorschnell AF_ALG die Schuld gegeben.
[Bearbeitung: Ja, korrekt, es ist dasselbe authencesn-Problem. Im Code https://github.com/V4bel/dirtyfrag/blob/892d9a31d391b7f0fccb... wird authencesn zwar nur in Kommentaren erwähnt, aber es ist trotzdem dasselbe Problem.]
[Bearbeitung2: Das RxRPC-Problem ist separat; hier geht es um die ESP-Seite.]
Ich verstehe den Punkt mit der Kreativität. Wie jedes Werkzeug kann KI den Blick verengen. Es ist schwer, sie nur unterstützend zu nutzen und ihr nicht den gesamten Workflow zu überlassen.
Außer in dem Fall, dass beide Schwachstellen zusammen offengelegt worden wären: In welchem kontrafaktischen Szenario würde man sagen, hier wurde „gut genug exploriert“?
„Es gibt keine Patches oder CVEs für diese Schwachstellen, weil das Embargo gebrochen wurde.“
Link: https://github.com/V4bel/dirtyfrag
Detaillierte Analyse: https://github.com/V4bel/dirtyfrag/blob/master/assets/write-...
Der wichtige Teil ist dieser: „Copy Fail war die Motivation, diese Forschung zu beginnen. Insbesondere teilt der xfrm-ESP Page-Cache-Write in der Dirty-Frag-Schwachstellenkette denselben Sink wie Copy Fail. Er wird jedoch unabhängig davon ausgelöst, ob das Modul algif_aead verwendbar ist. Mit anderen Worten: Selbst auf Systemen, auf denen die öffentlich bekannte Copy-Fail-Abschwächung durch Blacklisting von algif_aead angewendet wurde, bleibt Linux weiterhin für Dirty Frag verwundbar.“
Die Abschwächung soll wie folgt aussehen, ich habe sie aber nicht selbst getestet oder verifiziert: „Wegen des gebrochenen Zeitplans für Responsible Disclosure und des Embargos gibt es in keiner Distribution einen Patch. Entferne die Module, die die Schwachstelle auslösen, mit dem folgenden Befehl“
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"In Gesprächen zur Abschwächung hieß es, ein Neustart sei erforderlich oder dass man auf einer bereits ausgenutzten Maschine nach dem obigen Befehl Folgendes ausführen müsse:
sudo echo 3 > /prox/sys/vm/drop_cachessudo echo 3 > /prox/sys/vm/drop_cacheshat sudo keine Wirkung. sudo führt nur echo aus; der eigentliche Schreibzugriff passiert nicht darüber.Und wenn die Maschine bereits ausgenutzt wurde, ist es dafür ohnehin zu spät. Alles auf der Platte könnte beschädigt sein; man müsste das gesamte Disk-Image neu erstellen.
sudo echound Redirect so nicht verwenden.echo 3 | sudo tee /proc/sys/vm/drop_cachesoder
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'Und ich habe auch den Tippfehler bei
/prockorrigiert.echo 1 > ...kann man ebenfalls mitigieren. Man muss nicht alles leeren; es reicht, mit1nur den Page Cache zu verwerfen.Lokal auf Ubuntu 26.04 getestet: Exploit ausgeführt und root erhalten, dann die Mitigation gesetzt und
suohne Argumente erneut ausgeführt — sofort wieder root ohne Passwort. Danach den Page Cache geleert, undsuverlangte ein Passwort.Wir brauchen einen einfachen Weg sicherzustellen, dass nur Kernel-Module von einer Whitelist geladen werden. Ich bin es leid, ständig weitere unnötige Module auf Blacklists zu setzen.
Ich frage noch einmal: Warum bekommt bei copy.fail eigentlich algif_aead den ganzen Hass ab? Dumm ist authencesn.
authencesn wurde nicht gefixt, und jetzt sieht man das Ergebnis. Es zeigt sich, dass man über normale Netzwerk-Sockets auf denselben, vermutlich denselben Out-of-Bounds-Write zugreifen kann.
Das hätte mir einfallen sollen, ist es aber nicht.
[Bearbeitung: Ich meine das Problem über ESP. Das RxRPC-Problem ist nach meinem Verständnis etwas völlig anderes.]
Wenn das wirklich auf allen großen Distributionen funktioniert, überrascht mich die Verantwortungslosigkeit der Maintainer immer wieder. Warum sind optionale Kernel-Funktionen standardmäßig aktiviert, die vermutlich nicht einmal für 0,1 % der Nutzer nützlich sind?
Das erinnert an Linux-Distributionen von 1999, die in einer Standardinstallation Dutzende ans Internet exponierte Netzwerkdienste mitlieferten. Aber wir haben nicht mehr 1999.
Ich erinnere mich an die frühen Linux-Zeiten, als man
make menuconfigausführte und exakt auswählte, welche Funktionen man im Kernel haben wollte. Ehrlich gesagt möchte ich nicht dorthin zurück.Ein Bereich, den man hier aber leicht verbessern könnte, ist RHEL. RHEL kompiliert viele Dinge direkt in den Kernel statt sie als ladbare Module zu belassen, wodurch Mitigations wie bei copy fail unmöglich wurden. Vielleicht ließe sich das etwas reduzieren.
Linux-Distributions-Maintainer sind die verantwortungsvollsten Software-Maintainer auf der Welt. Ihre Sicherheitspraktiken sind den dummen Paketmanagern von Programmiersprachen weit überlegen; sie pflegen kuratierte Paketlisten, prüfen Änderungen, patchen Bugs, lösen komplexe Packaging-Probleme, backporten Fixes, nutzen gestaffelte Releases, verteilen Dateien über weltweite Mirror und verifizieren alle Dateien kryptografisch. Und man sollte nicht vergessen, dass sie all das kostenlos tun.
Wenn ein Angreifer all das schon geschafft hat, ist die Lage ohnehin bereits schlecht. Dass er damit noch zu root eskaliert, ist ab diesem Punkt eine der kleineren Sorgen.
Wie jemand weiter unten gepostet hat: https://xkcd.com/1200/
Bevor Leute in Panik geraten, sollte man verstehen, was diese Schwachstelle tatsächlich ist.
Nach all den Jahren haben wir endlich den Punkt erreicht, an dem „given enough eyeballs, all bugs are shallow“ gilt, und irgendwie ist das unerquicklich. Müssen wir ab jetzt mehrmals pro Woche Kernel-Updates machen?
Ich frage mich, wie das Embargo gebrochen wurde. War es ein Leak, oder hat es ein Dritter unabhängig gefunden?
Linux ist Open Source, also sind alle Patches, die Sicherheitsbugs beheben, sofort für alle sichtbar. Es gibt aufgrund der Arbeitsweise der Kernel-Entwicklung keinen Weg, das zu umgehen. Was Leute „Embargo“ nennen, ist die ziemlich dumme Vorstellung, dass man so tun kann, als sei eine Schwachstelle nicht geleakt, solange man in der Patch-Beschreibung nicht ausdrücklich „THIS IS A LPE“ hineinschreibt und stillhält, bis eine „offizielle“ Nachricht auf der Mailingliste erscheint.
Früher ließ sich dieser Ansatz vielleicht noch halbwegs verteidigen, aber im Zeitalter der LLMs ist er nicht nur dumm, sondern gefährlich, weil man die Diffs der Mailingliste automatisiert an aktuelle Modelle verfüttern und sie identifizieren lassen kann, ob ein Patch ein Sicherheitsproblem behebt.
https://x.com/encrypted_past/status/2052409822998392962
Weiß jemand, ob Debian verwundbar ist? Ich habe den Exploit auf Debian-12- und Debian-13-Maschinen versucht, konnte ihn aber nicht selbst reproduzieren.
Für Leute auf Bookworm, die nicht den Debian-Paket-Sicherheits-Stream verwenden, ist der Kernel 6.1.0-42-amd64 tatsächlich gegen copy.fail immun. Überraschend ist, dass er anscheinend auch gegen dirtyfrag immun ist. Wenn der Sicherheits-Stream es noch nicht gepatcht hat, könnte man eine Kernel-Version wählen, die Commit 2b8bbc64b5c2 beibehält. Ich vermute, dass genau dieses Commit einige Debian-12-Kernel-Versionen zufällig auch gegen dirtyfrag sicher macht.
Ausgeführt in einem
ubuntu:latest-Container als neuer Standardnutzergit clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./expErgebnis:
dirtyfrag: failed (rc=3)Gute Nachrichten!
copy fail kann für Container-Escape genutzt werden (https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kuber...), daher vermute ich, dass beim Exploit nur kleine Änderungen nötig wären.
Lobste.rs-Kommentare
Es war wirklich eine bemerkenswerte Woche, um gemeinsam genutzte Linux-Server zu verwalten. Immerhin gefällt mir an dieser Veröffentlichung, dass sie direkt zur Sache kommt
Allerdings verstehe ich nicht, warum in den Mitigation-Anleitungen alle
stderrausblendenEdit: Das wurde wohl am 30. April gemeldet, inspiriert von copy.fail – wurde es also in weniger als einem Tag entdeckt? Beeindruckend
Als jemand mit sudo-Rechten auf einem ziemlich großen Shared Server frage ich mich auch, ob es vielleicht eine gute Idee wäre, den Kernel selbst zu kompilieren und dabei möglichst wenige Module einzubinden. Ich habe die Vor- und Nachteile nicht gründlich abgewogen, aber es wirkt, als hätte man damit beide lokalen Privilege-Escalation-Lücken dieser Woche vermeiden können
Edit 2:
Oh, dafür ist kein
setuidnötig. Gut, dass das enthalten istWäre es möglich und sinnvoll, die Liste der auf einem laufenden System geladenen Kernel-Module zu übernehmen und sie als
modprobe-Allowlist für dieses System zu setzen?Sowohl CopyFail als auch DirtyFrag scheinen Kernel-Module auszunutzen, die auf keinem der Systeme, die ich überprüft habe, geladen waren. Wenn das so ist, könnte das Blockieren von Modulen, die offensichtlich nicht gebraucht werden, einige Angriffe vielleicht im Voraus abmildern?
2026-05-07: Detailed information and the exploit for this vulnerability were published publicly by an unrelated third party, breaking the embargo.Ich verstehe nicht, wie so etwas zugelassen werden kann. Dass Informationen in dieser Größenordnung in einer derart schwer vertrauenswürdigen Umgebung landen, wirkt einfach völlig absurd
Jeder Dritte, der Linux-Commits beobachtet hat, hätte vermutlich dieselben Hinweise aufgreifen und einen Exploit bauen können
Die „schwer vertrauenswürdige Umgebung“ ist hier das gesamte Internet, und etwas, das man wirklich als isoliert bezeichnen könnte, gibt es kaum. Das war schon immer so, nur ist es inzwischen noch offensichtlicher geworden. Dazu passt auch Stefan Eissings jüngster Beitrag darüber, wie ein Apache-httpd-Bug zweimal wiederentdeckt wurde, bevor er gefixt war
Gibt es eine Möglichkeit zu testen, ob die betroffenen Module wirklich nicht geladen werden können?
Bei CopyFail habe ich beim ersten Anwenden der Mitigation einen Fehler gemacht. Der Dateiname in
/etc/modprobe.d/endete nicht auf.conf, und ich habe das erst bemerkt, nachdem ich den Testbefehl von https://news.ycombinator.com/item?id=47954159 ausgeführt hatte. Gibt es für die Moduleesp4/esp6/rxrpceinen ähnlichen Befehl?modprobezu laden versucht, und es kam derselbe Fehler wie beim letzten MalEs gibt auch angehängten Proof-of-Concept-Code, aber ich habe ihn noch nicht ausprobiert