Threat Advisories

Linux-Kernel Lokale Privilegieneskalation - CVE-2026-31431 ("Copy Fail")

Geschrieben von Integrity360 | 01.05.2026 07:55:41

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.

Auswirkungen

Ein Angreifer mit lokaler Codeausführung (z. B. ein Standard-Benutzerkonto, ein kompromittiertes Dienstkonto, ein Container-Ausbruch oder ein bösartiger CI-Job) kann:

  • Eskalation der Rechte zu Root
  • denspeicherinternenAusführungspfad von vertrauenswürdigen Binärdateienändern, ohne die Dateien auf der Festplatte zu verändern
  • Erkennungsmechanismen umgehen, die sich ausschließlich auf die Überwachung der Dateiintegrität verlassen
  • Potenzielle Umgehung von Containern aufPlattformenmit gemeinsamemKernelaufgrund der globalen Natur des Linux-Seiten-Caches

Anders als frühereLinux-SchwachstellenzurPrivilegienerweiterungerfordert Copy Fail:

  • keine Race Conditions erforderlich
  • Hängt nicht vonkernelspezifischenSpeicher-Offsetsab
  • ist deterministisch und übertragbar auf alle Distributionen

Betroffene Systeme

  • Linux-Kernel 4.14 und höher, die die 2017eingeführteAEAD-Optimierung in algif_aeadenthalten
  • Alle größeren Distributionen, die Kernel aus dem Jahr 2017 ausliefern, bis Hersteller-Patches angewendet werden

Empfehlungen

  • Patchen Sie den Kernel auf allen betroffenen Systemen als primäre Korrektur. Dieses Verhalten ist kernelseitig; Kontrollen im Benutzerbereich allein sind nicht ausreichend.
  • Schränken Sie die Verwendung von AF_ALG für nicht vertrauenswürdige Arbeitslasten mithilfe von seccomp, SELinux, AppArmor, Container-Richtlinien oder Härtungsprofilen ein, wenn diese Arbeitslasten keine Kernel-Krypto-Sockets benötigen.

Proof-of-Concept-Validierung und Integrity360-Tests

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.

Technische Erläuterung

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.

 

Kritischste Syscalls

  • openat:
    • Öffnet su schreibgeschützt. Dies ist wichtig, weil es zeigt, dass der Exploit keinen Schreibzugriff auf die Zieldatei benötigt.
  • socket(AF_ALG, SOCK_SEQPACKET, 0) gefolgt von bind
    • Damit werden die Kernel-Krypto-Schnittstelle und der anfällige Verarbeitungspfad ausgewählt.
  • setsockopt:
    • Konfiguriert die AF_ALG-Operation, damit die manipulierte Anfrage akzeptiert und verarbeitet werden kann.
  • sendmsg:
    • Liefert die für jeden Durchgang erstellten Kontrolldaten und Patch-Material.
  • pipe2:
    • Erstellt den Pufferpfad im Kernel, der verwendet wird, um dateibasierte Seiten in den Krypto-Socket zu überbrücken.
  • splice:
    • Dies ist das zentrale Exploit-Primitiv in der Spur. Der Exploit spleißt zuerst von der Zieldatei in die Pipe und dann von der Pipe in den AF_ALG-Socket. Dies ist das Syscall-Paar, das am direktesten mit der eigentlichen Cache-Beschädigung verbunden ist.
  • recvfrom:
    • Gibt wiederholt EBADMSG zurück. Dies ist wichtig, weil es zeigt, dass der Exploit trotz eines offensichtlichen Fehlers erfolgreich ist, was bedeutet, dass die Beschädigung auftritt, bevor der Fehler auftaucht.
  • execve:
    • Bestätigt das Ergebnis des Exploits, indem es den manipulierten Zielpfad sofort ausführt und dann in sh.

Bei den Integrity360-Tests verwendete Kernel-Versionen

 

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.