
Ein POC für den kürzlich entdeckten Qualys-Bug bei COW mit XFS
Dieses Repository enthält einen PoC der kürzlich entdeckten Race-Condition-Sicherheitslücke, die COW auf XFS betrifft und vom hervorragenden Qualys Security Team gemeldet wurde. [1] [2]
Von Hand geschrieben basierend auf der hervorragenden Analyse im Qualys-Advisory. Überschreibt die ersten 4 KB der Datei /etc/passwd mit dem, was sie ursprünglich enthielt,
und ersetzt die Root-Benutzerzeile: root:x:0:0:root:/root:/bin/bash durch root::0:0:root:/root:/bin/bash. Fällt dir der Unterschied auf? Jetzt hat der Root-Benutzer kein Passwort und du kannst einfach su - ausführen.
Da es ein klappriger PoC für meine eigenen Zwecke ist, hat es eine miese Fehlerbehandlung und macht keine ausgefallenen Backups der Originaldatei oder dergleichen. Getestet auf einer Rocky Linux 9.7-VM mit einem XFS / Mount mit einem Kernel vom Februar 2026. Es füllt den /etc/passwd-Schreibvorgang außerdem unsauber auf. Wenn dir also die Maschine, auf der du es ausführst, etwas bedeutet ... erstelle vorher ein Backup der Datei. Ich habe den PoC gemacht, um meine Maschinen zu überprüfen, und wollte ihn eine Weile zurückhalten, aber ich habe gesehen, dass gestern ein anderer PoC veröffentlicht wurde, also ...
Möglicherweise musst du die CLONE_FILE-Variable im PoC anpassen, damit sie auf einen Pfad zeigt, in den du schreiben kannst, wenn /home sich auf einer anderen Partition befindet als /etc/passwd. /var/tmp könnte dir helfen. Du solltest in der Lage sein,
find / -writable auszuführen, um dich über die Angriffsfläche zu orientieren. Kompiliere mit gcc refluxfs.c -o refluxfs -lpthread.
Der PoC hinterlässt weder ein Log noch dmesg-Einträge. IMO wäre der beste Weg, dies zu erkennen, eine SIEM-Regel einzurichten, die ioctl-Aufrufe mit FICLONE auf XFS-Dateisystemen überwacht.
Tools zur Datei-Integritätsüberwachung könnten dies ebenfalls aufgreifen.
Aktualisiere den Kernel, wenn du kannst. Alternativ funktioniert die Red-Hat-Mitigation mit SystemTap:
probe begin {
printf("refluxfs mitigation loaded\n")
}
probe module("xfs").function("xfs_file_remap_range").call {
$remap_flags = 0xffff
}
probe module("xfs").function("xfs_file_remap_range").return {
$return = -95
}
probe end {
printf("refluxfs mitigation unloaded\n")
}
$ xfs_info / | grep reflink=1 und mount -l | grep xfs.Ein Fehler im XFS-Code bedeutet, dass Copy-On-Write für eine Datei angefordert werden kann und COW nicht ordnungsgemäß rückgängig gemacht wird. Beim Schreiben auf unsere kopierte Datei sollte COW rückgängig gemacht werden und zwei verschiedene Dateien sollten auf der Platte existieren. Mit Threads kannst du einfach ... wegen der Race-Condition auf beide Dateien gleichzeitig schreiben.
Wenn du die Zieldatei lesen und per ioctl(fd, FICLONE) klonen kannst, hast du eine Kopie mit aktiviertem COW. Es muss sich um dieselbe Partition handeln.

Dann kannst du einfach ... per write() mit O_DIRECT in deine Kopie schreiben und die Originaldatei verändern.

1: https://openwall.com/lists/oss-security/2026/07/22/14
In meinem Writeup sind wahrscheinlich einige Dinge falsch, aber ich wollte irgendwo anfangen, besonders in diesen erstaunlichen paar Monaten.
"Besser ein Hund in Zeiten der Ruhe sein als ein Mensch in Zeiten des Chaos."
- Feng Menglong, Geschichten, um die Welt zu erwecken