
xfs Kernel-LPE (CVE-2026-64600), veröffentlicht von Qualys am 22. Juli 2026
(ursprünglich RefluXFS oder CVE-2026-64600)
Der Name beschreibt den Mechanismus:
Die offiziellen Credits gebühren jedoch Qualys und ihrem RefluXFS (CVE-2026-64600),
offengelegt über oss-security.
COWSlip wurde unabhängig aus dem Patch entwickelt, der im XFS-for-next-Branch
eingespielt wurde. Qualys' RefluXFS wurde eine Woche früher entdeckt und als
Null-Day behoben.
COWSlip ist ein One-Day-PoC, basierend auf dem XFS-Fix, der im Red-Hat-Advisory
RHBA-2026:39332 ausgeliefert
wurde, welcher (zunächst) als [Exploits (KEV)] gekennzeichnet war.
Nach der Untersuchung von kernel.spec und dem SRPM-Diff wurde der entsprechende
Patch im XFS-Linux-for-next-Branch gefunden:
xfs: resample the data fork mapping after cycling ILOCK
Der Zeitpunkt war bemerkenswert: Der Fix erschien kurz nach dem entsprechenden Change im Entwicklungsbranch in einem Enterprise-Kernel-Update. Kurz gesagt behebt der Patch ein Primitiv zur lokalen Rechteausweitung in XFS. Die Ausnutzbarkeit hängt vom Dateisystem-Layout und der setuid-Konfiguration ab; sie ist besonders relevant für Installationen der RHEL-Familie, die XFS für das Root-Dateisystem verwenden.
Der PoC zielt auf einen XFS-Kernel vor dem Fix mit aktiviertem Reflink, ein
bestehendes root-eigenes setuid-ELF-Ziel (/usr/bin/su standardmäßig) und ein
benutzerbeschreibbares Clone-Verzeichnis auf demselben XFS-Dateisystem. Standardmäßig
ist das Ziel /usr/bin/su und das Clone-Verzeichnis /tmp/cowslip-clones, daher
muss /tmp auf diesem XFS-Dateisystem liegen. Er lässt ausgerichtete
Direct-I/O-CoW-Schreibvorgänge gegen Reflink-Clones rennen, ersetzt den
ELF-Interpreter-Pfad des Ziels im umkämpften ersten Block und startet
/bin/bash -p, wenn das setuid-Ziel den Loader ausführt.
Build:
gcc -O2 -Wall -Wextra -pthread poc.c -o /tmp/cowslip
gcc -nostdlib -static-pie -s -Wl,-e,_start -o /tmp/cowslip-loader loader.S
Der static-PIE-Loader ist für den älteren EL8-Kernel-Pfad erforderlich; der frühere ET_EXEC-Loader kann vor dem Start der Shell einen Segfault verursachen.
Als unprivilegierter Benutzer ausführen, wobei Ziel und Clone-Verzeichnis auf demselben reflink-fähigen XFS-Dateisystem liegen:
/tmp/cowslip
Optionale Steuerungen sind POC_TARGET, POC_TRIES und POC_THREADS:
POC_TARGET=/usr/bin/su POC_TRIES=20000 POC_THREADS=32 /tmp/cowslip
Der PoC stellt das Ziel nach einem Treffer absichtlich nicht wieder her. Von einer normalen Root-Anmeldung aus das besitzende Paket neu installieren und verifizieren:
dnf -y reinstall util-linux || yum -y reinstall util-linux
rpm -V util-linux
Ein leeres rpm -V-Ergebnis zeigt an, dass die Paketdateien mit der installierten
Paketdatenbank übereinstimmen.
Getestete Kernel:
6.12.0-211.33.1.el10_2: Treffer5.14.0-687.25.1.el9_8: Treffer5.14.0-687.26.1.el9_8: kein Treffer; dieser Kernel enthält den XFS-Fix4.18.0-553.143.1.el8_10: Treffer4.18.0-553.144.1.el8_10: kein Treffer; dieser Kernel enthält den XFS-FixFix: xfs: resample the data fork mapping after cycling ILOCK
Eingeführt durch 3c68d44a2b49a0 in v4.11; betroffen, bis der Resampling-Fix angewendet wird.
Der Auslöser erfordert ein reflink-fähiges XFS-Dateisystem, ein root-eigenes setuid-ELF-Ziel auf diesem Dateisystem und ein Verzeichnis auf demselben Dateisystem, das für den unprivilegierten Benutzer beschreibbar ist.