
xfs 커널 LPE (CVE-2026-64600), 2026년 7월 22일 Qualys에 의해 공개됨
(원래 이름 RefluXFS 또는 CVE-2026-64600)
이 이름은 메커니즘을 설명한다:
그러나 공식적인 공로는 Qualys와 그들의 RefluXFS(CVE-2026-64600)에 있으며,
oss-security를 통해
공개되었다. COWSlip은 xfs for-next 브랜치에 반영된 패치로부터 독립적으로
작성되었다. Qualys의 RefluXFS는 일주일 먼저 발견되었으며 널데이(null-day)로
수정되었다.
COWSlip은 Red Hat 권고
RHBA-2026:39332에 포함된 XFS
수정을 기반으로 한 원데이(one-day) PoC이며, 해당 권고는 (처음에)
[Exploits (KEV)]로 표시되었다.
kernel.spec과 SRPM diff를 검사한 후, 해당 패치는 XFS Linux for-next
브랜치에서 발견되었다:
xfs: resample the data fork mapping after cycling ILOCK
시점이 주목할 만했다: 수정 사항은 해당 변경이 개발 브랜치에 반영된 직후 엔터프라이즈 커널 업데이트에 나타났다. 요컨대, 이 패치는 XFS의 로컬 권한 상승 프리미티브를 수정한다. 익스플로잇 가능성은 파일시스템 레이아웃과 setuid 구성에 따라 달라지며, 특히 루트 파일시스템으로 XFS를 사용하는 RHEL 계열 설치와 관련이 있다.
PoC는 reflink가 활성화된 수정 전 XFS 커널, 기존의 root 소유 setuid ELF
대상(기본값 /usr/bin/su), 그리고 동일한 XFS 파일시스템에 있는 사용자
쓰기 가능 클론 디렉터리를 대상으로 한다. 기본적으로 대상은 /usr/bin/su이고
클론 디렉터리는 /tmp/cowslip-clones이므로, /tmp가 해당 XFS 파일시스템에
있어야 한다. 이 PoC는 정렬된 직접 I/O CoW 쓰기를 reflink 클론과 경쟁시키고,
경쟁이 발생한 첫 번째 블록에서 대상의 ELF 인터프리터 경로를 교체하며,
setuid 대상이 로더를 실행할 때 /bin/bash -p를 시작한다.
빌드:
gcc -O2 -Wall -Wextra -pthread poc.c -o /tmp/cowslip
gcc -nostdlib -static-pie -s -Wl,-e,_start -o /tmp/cowslip-loader loader.S
구형 EL8 커널 경로에는 static-PIE 로더가 필요하다; 이전 ET_EXEC 로더는 셸을 시작하기 전에 세그멘테이션 폴트가 발생할 수 있다.
대상과 클론 디렉터리가 동일한 reflink 활성화 XFS 파일시스템에 있는 상태에서 비특권 사용자로 실행한다:
/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: 실패; 이 커널에는 XFS 수정이 포함되어 있음4.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
v4.11에서 3c68d44a2b49a0에 의해 도입됨; 리샘플링 수정이 적용될 때까지 영향받음.
트리거에는 reflink가 활성화된 XFS 파일시스템, 해당 파일시스템에 있는 root 소유 setuid ELF 대상, 그리고 동일한 파일시스템에서 비특권 사용자가 쓸 수 있는 디렉터리가 필요하다.