
(元々は RefluXFS または CVE-2026-64600)
この名前はメカニズムを表しています:
ただし、公式のクレジットは Qualys とその RefluXFS (CVE-2026-64600) に帰属し、oss-security を通じて開示されました。
COWSlip は、xfs の for-next ブランチに取り込まれたパッチから独立して作成されました。
Qualys の RefluXFS は 1 週間早く発見され、ヌルデイとして修正されました。
COWSlip は、Red Hat アドバイザリ RHBA-2026:39332 で提供された XFS 修正に基づくワンデイ PoC であり、このアドバイザリは (当初) [Exploits (KEV)] とマークされていました。
kernel.spec と SRPM の差分を調査した後、対応するパッチが XFS Linux の for-next ブランチで見つかりました:
xfs: ILOCK を循環させた後にデータフォークのマッピングを再サンプリングする
タイミングは注目に値しました: 修正は、対応する変更が開発ブランチに取り込まれた直後に、エンタープライズカーネルの更新に登場しました。要するに、このパッチは XFS におけるローカル特権昇格プリミティブを修正します。悪用可能性はファイルシステムのレイアウトと setuid の設定に依存します。特に、ルートファイルシステムに XFS を使用する RHEL ファミリーのインストールに関連します。
PoC は、リフリンクが有効な修正前の XFS カーネル、既存の root 所有の setuid ELF ターゲット (デフォルトでは /usr/bin/su)、および同じ XFS ファイルシステム上のユーザー書き込み可能なクローンディレクトリを対象とします。デフォルトでは、ターゲットは /usr/bin/su、クローンディレクトリは /tmp/cowslip-clones であるため、/tmp はその XFS ファイルシステム上にある必要があります。これは、整列されたダイレクト I/O の CoW 書き込みをリフリンククローンに対して競合させ、競合した最初のブロック内のターゲットの 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
静的 PIE ローダーは古い EL8 カーネルパスに必要です。以前の ET_EXEC ローダーはシェルを起動する前にセグメンテーションフォールトを起こす可能性がありました。
ターゲットとクローンディレクトリが同じリフリンク有効な 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: ILOCK を循環させた後にデータフォークのマッピングを再サンプリングする
v4.11 の 3c68d44a2b49a0 によって導入されました; 再サンプリング修正が適用されるまで影響を受けます。
トリガーには、リフリンクが有効な XFS ファイルシステム、そのファイルシステム上の root 所有の setuid ELF ターゲット、および同じファイルシステム上で非特権ユーザーが書き込み可能なディレクトリが必要です。