
xfs kernel LPE (CVE-2026-64600), раскрытая Qualys 22 июля 2026 года
(изначально RefluXFS или CVE-2026-64600)
Название описывает механизм:
Однако официальные заслуги принадлежат Qualys и их RefluXFS (CVE-2026-64600),
раскрытому через oss-security.
COWSlip был создан независимо от патча, попавшего в ветку xfs for-next.
RefluXFS от Qualys был обнаружен на неделю раньше и исправлен как null-day.
COWSlip — это one-day PoC, основанный на исправлении XFS, выпущенном в рекомендации
Red Hat RHBA-2026:39332, которая
(изначально) была помечена [Exploits (KEV)].
После изучения kernel.spec и diff SRPM соответствующий патч был
найден в ветке XFS Linux for-next:
xfs: resample the data fork mapping after cycling ILOCK
Время было примечательным: исправление появилось в обновлении корпоративного ядра вскоре после того, как соответствующее изменение попало в ветку разработки. Короче говоря, патч исправляет примитив локального повышения привилегий в XFS. Эксплуатируемость зависит от разметки файловой системы и конфигурации setuid; это особенно актуально для установок семейства RHEL, использующих XFS для корневой файловой системы.
PoC нацелен на ядро XFS до исправления с включённым reflink, существующую
принадлежащую root цель setuid ELF (/usr/bin/su по умолчанию) и доступный на запись
пользователю каталог клонов в той же файловой системе XFS. По умолчанию целью является /usr/bin/su,
а каталогом клонов — /tmp/cowslip-clones, поэтому /tmp должен находиться
в той же файловой системе XFS. Он устраивает гонку выровненных CoW-записей direct-I/O
против reflink-клонов, заменяет путь интерпретатора ELF цели в первом блоке, участвующем в гонке, и
запускает /bin/bash -p, когда цель setuid выполняет загрузчик.
Сборка:
gcc -O2 -Wall -Wextra -pthread poc.c -o /tmp/cowslip
gcc -nostdlib -static-pie -s -Wl,-e,_start -o /tmp/cowslip-loader loader.S
Загрузчик static-PIE требуется для более старого пути ядра EL8; прежний загрузчик ET_EXEC может получить segfault до запуска шелла.
Запуск от непривилегированного пользователя, когда цель и каталог клонов находятся в одной файловой системе XFS с включённым reflink:
/tmp/cowslip
Дополнительные параметры управления — POC_TARGET, POC_TRIES и POC_THREADS:
POC_TARGET=/usr/bin/su POC_TRIES=20000 POC_THREADS=32 /tmp/cowslip
PoC намеренно не восстанавливает цель после успешного срабатывания. Из обычного входа root переустановите владеющий пакет и проверьте его:
dnf -y reinstall util-linux || yum -y reinstall util-linux
rpm -V util-linux
Пустой результат rpm -V означает, что файлы пакета соответствуют установленной
базе данных пакетов.
Протестированные ядра:
6.12.0-211.33.1.el10_2: срабатывание5.14.0-687.25.1.el9_8: срабатывание5.14.0-687.26.1.el9_8: без срабатывания; это ядро содержит исправление XFS4.18.0-553.143.1.el8_10: срабатывание4.18.0-553.144.1.el8_10: без срабатывания; это ядро содержит исправление XFSИсправление: xfs: resample the data fork mapping after cycling ILOCK
Внесено в 3c68d44a2b49a0 в v4.11; затронуто до применения исправления повторной выборки.
Для срабатывания требуется файловая система XFS с включённым reflink, принадлежащая root цель setuid ELF в этой файловой системе и каталог в той же файловой системе, доступный на запись непривилегированному пользователю.