Im Kern beruht „Copy Fail" auf einem Fehler im Modul algif_aead, das Teil des kryptografischen Subsystems des Linux-Kernels ist. Ein unprivilegierter lokaler Nutzer kann damit vier von ihm kontrollierte Bytes in den Page Cache jeder lesbaren Datei schreiben. Da der Page Cache von allen Prozessen eines Systems gemeinsam genutzt wird, reicht das aus, um den Page Cache einer setuid-Binärdatei zu manipulieren und so Root-Rechte zu erlangen.

Wie effektiv der Angriff ist, zeigt die Größe des Exploits: Laut den Forschern genügt ein nur 732 Byte großes Python-Skript in vier Schritten, um eine setuid-Binärdatei zu verändern und Root-Rechte auf praktisch allen seit 2017 ausgelieferten Linux-Distributionen zu erlangen. Weil der Page Cache geteilt wird, hat die Schwachstelle zudem Auswirkungen über Container-Grenzen hinweg.

David Brumley von Bugcrowd ordnet die Lücke in eine bekannte Klasse von Schwachstellen ein und vergleicht sie mit Dirty Pipe (CVE-2022-0847), einer früheren Rechteausweitung im Linux-Kernel, bei der unprivilegierte Nutzer Daten in den Page Cache schreibgeschützter Dateien einschleusen und letztlich sensible Dateien überschreiben konnten. „Copy Fail ist dieselbe Klasse von Primitiv, nur in einem anderen Subsystem", so Brumley. Die 2017 eingeführte Optimierung in algif_aead führe dazu, dass eine Page-Cache-Seite in der beschreibbaren Ziel-Scatterlist einer AEAD-Operation landen könne, die über einen AF_ALG-Socket übergeben wird. Ein unprivilegierter Prozess könne dann über splice() einen kleinen, gezielten Schreibvorgang in den Page Cache einer fremden Datei erreichen.

Besonders gefährlich macht die Schwachstelle laut den Forschern, dass sie sich zuverlässig auslösen lässt und weder eine Race Condition noch Kenntnis von Kernel-Offsets voraussetzt. Derselbe Exploit funktioniert über verschiedene Distributionen hinweg.

„Diese Schwachstelle ist einzigartig, weil sie vier Eigenschaften vereint, die fast nie zusammen auftreten: Sie ist portabel, winzig, unauffällig und container-übergreifend", erklärte ein Sprecher von Xint.io gegenüber The Hacker News. Jedes noch so niedrig privilegierte Nutzerkonto lasse sich damit zu vollen Administratorrechten ausweiten, Sandboxing umgehen, und das über alle Linux-Versionen und -Distributionen hinweg.