Der Bug befindet sich im RDS‑Subsystem, einem Netzwerkprotokoll des Linux‑Kernels. RDS wird vor allem in Hochleistungs‑Umgebungen eingesetzt, etwa in InfiniBand‑Clustern oder HPC‑Systemen, wo sehr schnelle Kommunikation zwischen Knoten nötig ist.
Konkret tritt der Fehler im sogenannten Zerocopy‑Send‑Pfad von RDS auf. Dieser Mechanismus erlaubt es dem Kernel, Daten direkt aus dem Userspace‑Speicher zu senden, ohne zusätzliche Kopien anzulegen. Das verbessert die Performance, macht das Speicher‑Management aber komplexer.
Die Funktion rds_message_zcopy_from_user() pinnt dabei Speicherseiten (Pages) einzeln, um sie für die Übertragung vorzubereiten. Kommt es währenddessen zu einem späteren Page Fault, versucht der Fehlerbehandlungspfad bereits gepinnte Seiten freizugeben. Unter bestimmten Bedingungen geschieht das jedoch falsch – es entsteht ein Double‑Free oder ein beschädigter Referenzzähler.
Diese Speicherinkonsistenz bildet die Grundlage für den späteren Exploit.
Die Forscher zeigten, dass sich der RDS‑Fehler mit modernen Kernel‑Mechanismen kombinieren lässt, um aus einem Speicherbug eine zuverlässige Privileg‑Eskalation zu machen.
Ein lokaler Angreifer triggert zunächst den verwundbaren Zerocopy‑Codepfad. Tritt während des Pinning‑Prozesses ein Page Fault auf, werden Seiten falsch freigegeben, obwohl sie noch referenziert werden. Das hinterlässt einen inkonsistenten Speicherzustand.
Im nächsten Schritt nutzt der Exploit io_uring Fixed Buffers. Diese Funktion ermöglicht Anwendungen, Speicherbereiche für besonders schnelle asynchrone I/O‑Operationen beim Kernel zu registrieren.
Durch gezielte Manipulation dieser Buffers kann der Angreifer die zuvor freigegebenen physikalischen Seiten kontrolliert neu belegen. Dadurch erhält er indirekten Einfluss auf den Speicherbereich, der durch den RDS‑Bug freigegeben wurde.
Ein entscheidender Punkt: Die betroffenen Speicherbereiche können Teil des Page‑Cache sein – also des Kernel‑Caches für Dateiinhalte.
Gelingt es dem Angreifer, diesen Speicher zu überschreiben, kann er den Inhalt manipulieren, den der Kernel ausliefert – ohne die eigentliche Datei auf der Festplatte zu verändern.
Im letzten Schritt zielt der Exploit auf den Page‑Cache eines SUID‑Root‑Executables. Wird dieses Programm später aus dem Cache gestartet, führt das System den manipulierten Code aus – weiterhin mit den Root‑Rechten des ursprünglichen Programms.
Ob ein System tatsächlich gefährdet ist, hängt stark von seiner Kernel‑Konfiguration ab.
Mehrere Sicherheitsberichte nennen Arch Linux als besonders exponiert, weil:
Prinzipiell kann jede Linux‑Distribution betroffen sein, wenn:
Berichte deuten darauf hin, dass typische Installationen von Ubuntu, Debian, RHEL und AlmaLinux wahrscheinlich weniger gefährdet sind, da das RDS‑Modul dort meist nicht aktiviert ist. Administratoren sollten die konkrete Kernel‑Konfiguration jedoch überprüfen.
CloudLinux gab an, den öffentlichen Exploit auf verschiedenen Plattformversionen getestet zu haben. Laut Hersteller sind diese Systeme nicht betroffen.
Damit der Angriff funktioniert, müssen mehrere Bedingungen erfüllt sein:
Fehlt eine dieser Voraussetzungen, wird der Exploit deutlich schwieriger oder unmöglich.
Administratoren können das Risiko deutlich reduzieren.
Kernel‑Maintainer haben bereits einen Fix für den betroffenen RDS‑Code veröffentlicht. Das wichtigste Gegenmittel ist daher ein Update auf die aktuelle Kernel‑Version der Distribution.
Nach einem Kernel‑Update ist ein Neustart des Systems erforderlich, damit der Patch wirksam wird.
Wenn RDS in der eigenen Infrastruktur nicht benötigt wird, sollte das Modul nicht geladen werden.
Typische Maßnahmen sind:
rds‑ModulsDa der Exploit auf io_uring Fixed Buffers basiert, kann eine Einschränkung oder Deaktivierung für normale Benutzer die Angriffsfläche reduzieren.
Der Angriff nutzt letztlich ein SUID‑Root‑Binary. Administratoren sollten daher prüfen:
Da PinTheft lokalen Codezugriff voraussetzt, sollten besonders Multi‑User‑Systeme priorisiert gepatcht werden, etwa:
PinTheft ist ein gutes Beispiel dafür, wie moderne Kernel‑Exploits funktionieren: Sie kombinieren mehrere komplexe Subsysteme – hier RDS‑Netzwerkcode und das io_uring‑I/O‑Framework – um aus einem scheinbar kleinen Speicherfehler eine vollständige Privileg‑Eskalation zu machen.
Die wichtigste Lehre bleibt deshalb unverändert: Kernel regelmäßig aktualisieren und unnötige Module deaktivieren. Selbst selten genutzte Komponenten können sonst zu einem kritischen Angriffspunkt werden.
Comments
0 comments