1 Punkte von GN⁺ 4 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Eine Race-Condition-UAF-Schwachstelle im Linux-Kernel-Subsystem epoll ermöglicht es einem unprivilegierten Prozess, Root-Rechte zu erlangen – nicht nur auf Linux-Desktops und -Servern, sondern auch auf Android-Geräten
  • Die Schwachstelle wurde von Jaeyoung Chung als 0-day bei Google kernelCTF eingereicht, gemeldet und exploitet; kernelCTF vergibt für Linux-Kernel-Exploits Prämien von $71,337+
  • Anthropics KI Mythos fand im selben epoll-Code einen anderen Race-Condition-Bug, CVE-2026-43074, übersah jedoch Bad Epoll
  • epoll ist eine zentrale Kernel-Funktion, auf die Betriebssysteme, Netzwerkdienste und Browser angewiesen sind; sie lässt sich daher nicht deaktivieren, und ohne einfachen Workaround bleibt nur das Einspielen des Patches
  • Die Schwachstelle wurde mit dem Commit 58c9b016e128 vom 2023-04-08 eingeführt und mit dem Commit a6dc643c6931 vom 2026-04-24 behoben; Distributionen mit Kerneln auf Basis von v6.4 oder neuer können betroffen sein, wenn der Fix nicht zurückportiert wurde

Charakter und Schweregrad von Bad Epoll

  • Bad Epoll ist eine Race-Condition-Use-after-free(UAF)-Schwachstelle im Linux-Kernel-Subsystem epoll; ihre Kennung ist CVE-2026-46242
  • Ein unprivilegierter Prozess kann Root-Rechte erlangen; betroffen sein können neben Linux-Desktops und -Servern auch Android-Geräte
  • Die Schwachstelle wurde als 0-day bei Google kernelCTF eingereicht und von Jaeyoung Chung gemeldet und exploitet
  • kernelCTF vergibt für Linux-Kernel-Exploits Prämien von $71,337+

Warum sie gefährlich ist

  • Es handelt sich um einen Linux-Privilege-Escalation-Bug, der potenziell Android-Root ermöglicht – ein seltener Fall
    • Viele Linux-Privilege-Escalation-Schwachstellen benötigen Module, die Android nicht lädt, und führen daher nicht zu Android-Root
    • Unter den rund 130 bei Google kernelCTF exploiteten Schwachstellen sind etwa 10 Kandidaten für Android-Root; Bad Epoll gehört dazu
  • Sie kann auch innerhalb der Chrome-Renderer-Sandbox ausgelöst werden
    • Diese Sandbox blockiert nahezu alle anderen Kernel-Bugs
    • Verkettet man einen Renderer-Exploit mit Bad Epoll, kann dies zu Auswirkungen wie Kernel-Codeausführung führen, ähnlich dem Fall, den Project Zero mit MSG_OOB gezeigt hat
  • epoll hat keinen Kill-Switch
    • Schwachstellen der Copy-Fail-Familie lassen sich entschärfen, indem das anfällige Modul entladen wird
    • epoll ist eine Kernfunktion, auf die Betriebssysteme, Netzwerkdienste und Browser angewiesen sind, und kann daher nicht deaktiviert werden
    • Die einzige Lösung ist das Einspielen des Patches
  • Das Race-Fenster ist mit etwa 6 Instruktionen extrem klein
    • Normale Versuche treffen es kaum
    • Der Exploit vergrößert das Race-Fenster und führt eine Retry-Schleife aus, ohne den Kernel zum Absturz zu bringen
    • Dadurch erreicht er auf den kernelCTF-Zielen eine Zuverlässigkeit von etwa 99 %

Der von Mythos übersehene Bug

  • Ein einzelner Commit aus dem Jahr 2023, 58c9b016e128, führte in etwa 2.500 Zeilen epoll-Code zwei separate Race Conditions ein
  • Anthropics Mythos fand eine davon und meldete sie als CVE-2026-43074
    • Dieses Ergebnis ist ein aussagekräftiges Beispiel dafür, wie schwierig es ist, Race-Condition-Bugs im Kernel zu erkennen
    • Später reichte ein unabhängiger Forscher einen 1-day-Exploit für diese Schwachstelle bei kernelCTF ein
  • Die andere Race Condition ist Bad Epoll; Mythos übersah sie
    • Da Mythos den ersten Bug im selben kleinen epoll-Codepfad fand, ist es wahrscheinlich, dass derselbe Bereich substanziell untersucht wurde
    • Der genaue Grund, warum Bad Epoll übersehen wurde, ist unbekannt
  • Mögliche Faktoren, die die Erkennung von Bad Epoll erschwert haben
    • Das Race-Fenster umfasst nur etwa 6 Instruktionen, wodurch es schwierig ist, allein anhand des anfälligen Codes das exakte Thread-Interleaving zu erkennen
    • Nach dem Fix für CVE-2026-43074 triggert der UAF von Bad Epoll normalerweise kein KASAN
    • Ohne KASAN-Signal hatte Mythos möglicherweise nicht genug Sicherheit, um dies als echten Bug zu melden
  • Auch die Behebung war nicht einfach
    • Der erste Patch des Maintainers behob das Problem nicht vollständig
    • Der korrekte Patch landete zwei Monate nach der ersten Meldung in mainline

Angriffsablauf

  • Zwei epoll-Close-Pfade laufen gleichzeitig und kollidieren
    • Während ein Pfad ein Objekt freigibt, schreibt der andere weiter in dieses Objekt, wodurch ein UAF entsteht
  • Der Exploit organisiert vier epoll-Objekte in zwei Paaren
    • Ein Paar triggert die Race Condition
    • Das andere Paar wird zum Opferobjekt
  • Anschließend wird der 8-Byte-UAF-Write in einen UAF eines file-Objekts umgewandelt
    • Durch einen Cross-Cache-Angriff wird der gesamte Inhalt von file kontrolliert
  • Nach Erlangen der Kontrolle wird über /proc/self/fdinfo ein beliebiges Lesen von Kernel-Speicher ermöglicht
  • Im letzten Schritt wird der Control Flow gekapert und eine ROP-Chain ausgeführt, um eine Root-Shell zu erhalten
  • Detaillierte technische Materialien

Mitigation und betroffene Versionen

  • Da epoll nicht deaktiviert werden kann, gibt es keinen einfachen Workaround
  • Die Lösung besteht darin, den Upstream-Commit a6dc643c6931 oder einen Distributions-Backport einzuspielen
  • Zeitpunkt der Einführung und Behebung der Schwachstelle
    • Eingeführt: [58c9b016e128], 2023-04-08
    • Behoben: [a6dc643c6931], 2026-04-24
  • Linux-Distributionen mit Kerneln auf Basis von v6.4 oder neuer können betroffen sein, wenn sie den Fix-Backport noch nicht eingespielt haben
  • Ältere Kernel auf Basis von v6.1 sind nicht betroffen, da die Schwachstelle erst in v6.4 eingeführt wurde

Exploit-Ziele und Android-Status

  • Der aktuelle Exploit ist auf Google-kernelCTF-Ziele zugeschnitten
    • lts-6.12.67 (LTS): 99% reliable
    • cos-121-18867.294.100 (COS): 98% reliable
  • Der Android-Exploit ist noch in Arbeit
    • Pixel 10, Kernel v6.6+: Der aktuelle PoC triggert den UAF; der vollständige Root-Exploit ist in Arbeit
    • Android-Exploit und Writeup sollen nach Fertigstellung veröffentlicht werden
    • Pixel 8 und andere Geräte auf v6.1-Basis sind nicht betroffen, da die Schwachstelle erst in v6.4 eingeführt wurde

Timeline

  • 2023-04-08: Der Bug wurde mit Commit 58c9b016e128 in epoll eingeführt
  • 2026-02-17: Der Bug wurde an security@kernel.org gemeldet
  • 2026-02-17: Der Maintainer schlug einen Patch-Prototyp vor, der jedoch keine korrekte Behebung war; die Diskussion kam zum Stillstand
  • 2026-04-02: Der Fix für die von Mythos gefundene CVE-2026-43074 landete in mainline
  • 2026-04-22: Das verbleibende Problem wurde erneut gemeldet
  • 2026-04-24: Der Bad-Epoll-Fix-Commit a6dc643c6931 landete in mainline

Name und Referenzen

  • Der Name Bad Epoll folgt der „Bad“-Reihe von Kernel-Bugs, die Android-Root ermöglichen können
  • Diese Seite ist eine Kurzversion; die vollständige Root-Cause-Analyse, die Exploit-Dokumentation und der Code werden über separate Links bereitgestellt

1 Kommentare

 
GN⁺ 4 시간 전
Meinungen auf Lobste.rs
  • Dass diese Schwachstelle aus der Chrome-Sandbox heraus erreichbar ist, ist wirklich eine große Sache; etwas überraschend ist, dass sie über kCTF gemeldet wurde und die Prämie nur 71.000 US-Dollar betrug.

  • Bryan Cantrill hatte mal wieder recht.

    • Es ist mir etwas peinlich, das zuzugeben, aber ehrlich gesagt war das auch mein erster Gedanke.
    • Ich bin neugierig. Mir fehlt der Kontext, womit er recht gehabt haben soll.
    • Wenn möglich, wäre etwas Kontext hilfreich.
  • Lasst euch nicht von dem Repository täuschen, das auf den ersten Blick leer aussieht. Der Exploit ist weiter unten in der README verlinkt.
    Ich habe ihn noch nicht getestet, und es gibt keine Mitigation. Die Autoren behaupten außerdem, dass damit Android-Rooting möglich sei; wenn ich an das Android-Ökosystem denke, wird mein Hersteller den Patch vermutlich erst in etwa einem Monat liefern. Außerdem funktioniert es auch in der Chrome-Renderer-Sandbox.

    • Ich habe 2023 ein Android-Smartphone gekauft, und das letzte Kernel-Update war Mitte 2024. Wenn dieser Bug aus dieser Zeit stammt, dürfte es eher die Ausnahme sein, überhaupt einen Patch zu bekommen.
  • Funktioniert das auch unter Android?

    • Steht doch im zweiten Satz.
  • Gibt es Informationen dazu, wie das gefunden wurde? Mythos hat es offenbar übersehen; ich frage mich, ob es mithilfe eines anderen großen Sprachmodells gefunden wurde oder durch menschliches Review.
    Falls Letzteres, würde mich auch interessieren, warum man sich genau diesen Bereich angesehen hat.

  • „Viele Linux-Distributionen können betroffen sein, wenn sie Kernel auf Basis von v6.4 oder neuer verwenden und den Fix noch nicht zurückportiert haben. Ob der oben genannte Fix-Commit zurückportiert wurde, lässt sich über die Kernel-Sicherheitsupdates der jeweiligen Distribution prüfen. Ältere Kernel auf Basis von v6.1 sind nicht betroffen, da der Bug erst in v6.4 eingeführt wurde.“
    Schade. Ich hatte gehofft, das wäre eine gute Methode zum Rooten von Smartphones, aber dafür ist es wohl zu neu und nicht besonders nützlich. Meins läuft auf 5.15.