Nach der Analyse von Theori liegt das Problem im Zusammenspiel mehrerer Eigenschaften des Kernels: Linux legt Seiten des Page-Cache in eine beschreibbare Scatterlist, „authencesn" nutzt die Ziel-Scatterlist des Aufrufers als Arbeitsspeicher, und eine Optimierung aus dem Jahr 2017 sorgte dafür, dass Page-Cache-Seiten in dieser beschreibbaren Scatterlist landeten.

Bei der byteweisen Umsortierung in diesem Arbeitsbereich führt „authencesn" einen Schreibvorgang aus, der vier Bytes Code über den AEAD-Tag hinaus schreibt – und damit direkt in die zwischengespeicherte Kopie einer anderen Datei.

Daraus ergibt sich das eigentliche Angriffsszenario: Ein Angreifer mit lokaler Codeausführung kann die im Speicher liegende Kopie jeder für ihn lesbaren setuid-root-Binärdatei verändern und sich so eine Root-Shell verschaffen. Laut Theori genügt dafür ein nur 732 Byte langes Python-Skript, das auf praktisch jeder seit 2017 ausgelieferten Linux-Distribution funktioniert.

Als besonders gefährlich gilt der Fehler in Mehrmandanten-Umgebungen, bei Containern mit gemeinsam genutztem Kernel sowie bei CI-Runnern, die fremden Code ausführen. Die zentrale Bedrohung besteht nach Angaben von Theori darin, dass sämtliche Änderungen unmittelbar im Speicher erfolgen, während die Datei auf der Festplatte unverändert bleibt. Da der Page-Cache über Container hinweg geteilt wird, kann der Fehler zu einer Kompromittierung des Knotens und mandantenübergreifend wirken.

Theori grenzt „Copy Fail" ausdrücklich von zwei bekannten Schwachstellen ab: von Dirty Pipe, einem Fehler zur Beschädigung des Page-Cache, der Flags von Pipe-Puffern ausnutzt, sowie von Dirty Cow, das eine Race-Condition im Copy-on-Write-Pfad ausnutzt.

Die für „Copy Fail" ausgerollten Patches entfernen die 2017 eingeführte Optimierung. Sie kehren zur Operation außerhalb des Zielspeichers zurück und beseitigen den Mechanismus, der laut Theori „die Page-Cache-Tag-Seiten in die beschreibbare Ziel-Scatterlist einband".