Copy Fail — eine Schwachstelle im Linux-Kern, die Root-Zugriff in den meisten Distributionen ermöglicht.

Forscher von Xint haben eine Schwachstelle im Linux-Kernel (CVE-2026-31431) entdeckt, die es unprivilegierten Benutzern ermöglicht, Root-Zugriff auf das System zu erlangen. Das Problem trägt den Codenamen Copy Fail. Ein Prototyp eines Exploits ist verfügbar. Die Möglichkeit, die Schwachstelle auszunutzen, wurde in Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 und SUSE 16 demonstriert, es wird jedoch festgestellt, dass auch Pakete mit Kern aus anderen Distributionen, einschließlich Debian, Arch, Fedora, Rocky und Alma, betroffen sind, obwohl diese nicht separat getestet wurden.

Die Schwachstelle wird durch einen logischen Fehler in der crypto API (AF_ALG) des Linux-Kernels verursacht, der bei der Optimierung im Jahr 2017 aufgetreten ist, die überflüssige Pufferung durch in-place Operationen von AEAD (Authenticated Encryption with Associated Data) entfernt. Das Problem entstand durch die unüberlegte Verwendung der Funktion splice(), die Daten zwischen Dateideskriptoren und Pipelines übermittelt, ohne diese zu kopieren, indem Verweise auf Elemente im Seiten-Cache übergeben werden. Nach der Optimierung wurde beim Senden einer Datei an einen AF_ALG-Socket zur Dechiffrierung nicht ein Verweis auf einen separaten Puffer, sondern ein direkter Verweis auf die Elemente des Seiten-Cache des Kernels mit den Datei-Daten in die scatterlist-Struktur geschrieben.

Im weiteren Verlauf der Entschlüsselung wurden die verlinkten Daten des Authentifizierungstags („authentication tag“) mit den in den RX-Puffer kopierten zusätzlichen authentifizierbaren Daten (AAD, Associated Authenticated Data) und dem Chiffretext vermischt. Das Offset für den Schreibvorgang im Authentifizierungstag wurde relativ zu den kopierten Daten berechnet, ohne angemessene Überprüfungen durchzuführen, was das Überschreiben beliebiger Bereiche im Seitencache ermöglichte.

Die Schwachstelle ermöglicht es, bei jeder Anfrage 4 Bytes an einer ausgewählten Offset-Position zu überschreiben. Dadurch kann ein Angreifer durch das Senden einer Reihe von Anfragen den Inhalt beliebiger, lesbarer Dateien im System, die zuvor in den Cache geladen wurden, im Seitencache ändern. Da bei allen Lesevorgängen aus Dateien der Inhalt vorrangig aus dem Seitencache bereitgestellt wird, erhält das Kernel oder der Prozess beim Lesen von Daten aus einer Datei nicht die tatsächlichen, sondern die manipulierten Daten, was verwendet werden kann, um Code in ausführbare Dateien oder in Shared Libraries einzuschleusen.

Um Code mit root-Rechten auszuführen, genügt es, den Seiten-Cache für jede ausführbare Datei mit dem SUID-Flag für root zu ändern.
Im vorgeschlagenen Exploit wird die ausführbare Datei /usr/bin/su gelesen und der in den Seiten-Cache geladene Inhalt dieser Datei so modifiziert, dass eigener Code eingefügt wird. Bei der späteren Ausführung des Tools „su“ wird nicht die originale ausführbare Datei vom Speicher geladen, sondern eine modifizierte Kopie aus dem Seiten-Cache.

Der Exploit ist universell einsetzbar, benötigt keine Anpassungen an Distributionen oder Kernversionen und kann mit allen Distributionen verwendet werden. Da bei der Verwendung von containerbasierter Isolation für alle Container ein gemeinsamer Seiten-Cache verwendet wird, kann die Schwachstelle genutzt werden, um vom Container aus Zugriff auf die Host-Umgebung zu erhalten (später wird ein Exploit zur Umgehung der Isolation in Kubernetes veröffentlicht).

Eine Schwachstelle wurde mit Hilfe von KI nach etwa einer Stunde Experimentieren mit der Analyse des Codes der Kryptosubsysteme des Kernels identifiziert. Das Problem tritt beginnend mit Kernel 4.14 auf, das 2017 veröffentlicht wurde, und wurde in den Kernen 6.18.22, 6.19.12 und 7.0 behoben. Der Status der Behebung von Schwachstellen in den Distributionen kann auf diesen Seiten bewertet werden: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora, ROSA.

Als Umgehungsmaßnahme kann das Kernel-Modul algif_aead deaktiviert werden, das in OpenSSL verwendet wird, wenn der afalg-Engine explizit aktiviert ist, sowie in einzelnen Anwendungen (die Ausführung solcher Anwendungen kann mit dem Befehl „lsof | grep AF_ALG“ überprüft werden):

    echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
    rmmod algif_aead

    Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster