CVE 2026 31431, allgemein bekannt als "Copy Fail", ist eine schwerwiegende lokale Schwachstelle für die Ausweitung von Berechtigungen, die den Linux-Kernel betrifft. Das Problem betrifft Kernel, die von allen größeren Linux-Distributionen seit 2017 ausgeliefert werden, und ermöglicht es einem lokalen, nicht privilegierten Benutzer, die Root-Ebene auf dem Host-System auszuführen.
Die Schwachstelle ist auf einen Logikfehler im kryptografischen Subsystem des Linux-Kernels zurückzuführen, insbesondere auf die Schnittstelle algif_aead, die über AF_ALG-Sockets offengelegt wird . Unter bestimmten Bedingungen ermöglicht dieser Fehler die kontrollierte Änderung desIn-Memory-Seiten-Caches des KernelsfürschreibgeschützteDateien, einschließlich Setuid-Root-Binärdateien. Wenn eine solche modifizierte Binärdatei ausgeführt wird, kann der Angreifer erhöhte Rechte erlangen.
Ein Angreifer mit lokaler Codeausführung (z. B. ein Standard-Benutzerkonto, ein kompromittiertes Dienstkonto, ein Container-Ausbruch oder ein bösartiger CI-Job) kann:
Anders als frühereLinux-SchwachstellenzurPrivilegienerweiterungerfordert Copy Fail:
Betroffene Systeme
Empfehlungen
Integrity360 führte eine kontrollierte dynamische Analyse der öffentlich verfügbaren Copy FailProof-of-ConceptPayloadsdurch, um die Angreifbarkeit zu validieren und das Betriebsrisiko zu bewerten.
Die dynamische Analyse durch die Ausführung der Payloads ergab, dass der Exploit auf den Linux "Copy Fail"-Fehlerpfad abzielt, indem er den Seiten-Cache einer geschützten ausführbaren Datei, insbesondere "su", beschädigt, ohne diese Datei zum Schreiben zu öffnen. Die Nutzlast öffnet das Ziel schreibgeschützt, steuert wiederholt eine Kernel-Krypto-Schnittstelle durch "AF_ALG", verschiebt zielgesicherte Daten durch Splice und meldet dann, dass der Seiten-Cache verändert wurde, bevor das Ziel ausgeführt wird.
Es handelt sich nicht um ein normales Überschreiben von Dateien. Der Exploit missbraucht einen kernelseitigen Kopierpfad, so dass das im Cache gespeicherte Abbild der ausführbaren Datei verändert wird, obwohl der Dateideskriptor schreibgeschützt ist. Die Spur der dynamischen Analyse zeigt die Ausführung von "sh -c su", gefolgt von der Ausführung von "su", das sich nicht mehr wie der ursprüngliche "setuid"-Helferverhältund stattdessen zu "sh"übergeht.Während der Ausführung haben wir beobachtet, dass "setgid(0)" und "setuid(0)" mit "EPERM"fehlschlagen, was damit übereinstimmt, dass die Erhöhung der Privilegien bei der Verfolgung unterdrückt wird; das Verhalten des Exploits ist immer noch sichtbar, da die Ausführung in eine Shell umgeleitet wird.
Der Exploit beginnt mit dem Öffnen von "su" mit "O_RDONLY" und der Ankündigung einer Nutzlast von 1704 Byte (426 Iterationen). Diese Zahl ist wichtig: Die Schleife scheint das Ziel in 4-Byte-Abschnitten zu patchen, wobei 426 x 4 = 1704. Bei jeder Iteration wird ein neuer "AF_ALG" -Socket erstellt, an einen "AEAD" -Kryptopfad gebunden, die Algorithmusparameter mit "setsockopt" gesetzt und ein kleiner, selbst erstellter Kontrollblock mit "sendmsg" gesendet.
Der kritische Schritt ist das Paar von Spleißaufrufen. Zunächst werden Bytes aus dem schreibgeschützten Zieldateideskriptor in eine Pipe gespleißt. Dann werden sie von der Pipe in den akzeptierten "AF_ALG"-Socket gespleißt. Dadurch bleibt die Übertragung innerhalb des Kernelbereichs und vermeidet ein normales Schreiben im Benutzerbereich. Nach jedem Versuchgibt"recvfrom" "EBADMSG"zurück, was anzeigt, dass die Krypto-Operation aus der Perspektive des Benutzerraums fehlgeschlagen ist, aber die Ablaufverfolgung zeigt deutlich, dass sich der Exploit auf einen kernelseitigen Nebeneffekt verlässt, der diesen Fehler überlebt.
Gegen Ende des Trace führt der Exploit den vollen 1704-Byte-Transfer durch, schließt die Deskriptoren, druckt "page cache mutated; executing target" und führt sofort "sh -c su"aus.Das führt zu "execve("/usr/bin/su", ...)", dann zu fehlgeschlagenen "setgid(0)" und "setuid(0)" und schließlich zu "execve("/bin/sh", ["sh"], [])". Diese Sequenz zeigt an, dass das zwischengespeicherte Abbild von "su" verändert wurde, so dass die Ausführung nicht mehr der ursprünglichen Programmlogik folgt.
Erfolgreiche Ausnutzung
Linux 5.4.0-122-generic (x86_64)
Erfolglose Ausnutzung
Linux 7.0.0-15-generic (x86_64, gepatchter Kernel)
Referenz der Nutzlast
h ttps:// github.com/tgies/copy-fail-c
Wenn Sie über eine der in diesem Bulletin beschriebenen Bedrohungen besorgt sind oder Hilfe benötigen, um herauszufinden, welche Schritte Sie unternehmen sollten, um sich vor den wichtigsten Bedrohungen für Ihr Unternehmen zu schützen, wenden Sie sich bitte an Ihren Kundenbetreuer oder nehmen Sie Kontakt mit uns auf, um zu erfahren, wie Sie Ihr Unternehmen schützen können.