
Linuxカーネルで新たに発見されたローカル権限昇格の脆弱性「CIFSwitch」により、攻撃者はCIFS認証キーの記述を偽造し、カーネルのキーリクエスト機構を悪用してroot権限を取得できることが明らかになりました。
この問題は、脆弱性のあるカーネルCIFSとcifs-utils(バージョン6.14以降。ただし一部の旧バージョンも影響を受けます)の組み合わせを採用している複数のLinuxディストリビューションに影響します。
CIFS(Common Internet File System)は、ローカルネットワーク上のファイル、フォルダ、デバイスへのアクセスを可能にするネットワークプロトコルです。Linuxはこれを使用して、リモートシステムのデータのマウント、読み取り、書き込みを行っています。
CIFSネットワーク共有がKerberos認証を使用している場合、Linuxカーネルはユーザー空間のヘルパープログラムに認証処理を依頼し、その仲介役としてユーザー空間ツール群であるcifs-utilsが機能します。
「カーネルはcifs.spnegoタイプのキーをリクエストし、通常のkeyutils/request-key設定がrootとしてcifs.upcallを実行して、Kerberos/SPNEGOマテリアルを取得または生成します」と、LinuxにおけるCIFSwitch権限昇格の脆弱性を発見・命名したSpaceXのセキュリティエンジニア、Asim Viladi Oglu Manizadaは説明しています。
研究者によると、問題の本質はLinuxカーネルのCIFSサブシステムが、cifs.spnegoキーリクエストがカーネルのCIFSクライアントから発信されたものであることを検証していない点にあります。
その結果、非特権ユーザーが偽造したcifs.spnegoリクエストを作成し、通常の認証ワークフローを起動することが可能になります。
cifs.spnegoキーリクエストは、Kerberos/SPNEGO認証を使用してネットワーク共有に接続する際に、CIFS/SMBクライアントが必要とする認証データを取得するためにLinuxキーリングサブシステムが使用するものです。
この脆弱性により、root権限を持つcifs.upcallヘルパーが、カーネルによって生成されたと見なして攻撃者が制御するフィールドを信頼してしまいます。
これらのフィールドを悪用して名前空間の切り替えを強制し、権限が降格される前にName Service Switch(NSS)ルックアップを起動することで、ローカルの攻撃者は悪意のあるNSSモジュールをロードしてrootとしてのコード実行を達成できます。
Manizadaは、この問題の原因とroot権限の取得に悪用する方法を詳細に解説した技術レポートを公開しています。
影響範囲、修正、およびエクスプロイト
ManizadaによるとCIFSwitchは19年前の2007年に導入されたもので、「普遍的ではなく」、悪用には脆弱なカーネルバージョンなど複数の条件が揃う必要があると述べています。
その他の前提条件には、脆弱なcifs-utilsバージョン、ユーザー名前空間の利用可能性、そして攻撃をブロックしないSELinux/AppArmorポリシーが含まれます。
Manizadaがデフォルト設定で脆弱であることを確認しているディストリビューションは以下の通りです。
- Linux Mint 21.3 / 22.3
- CentOS Stream 9
- Rocky Linux 9
- AlmaLinux 9
- Kali Linux 2021.4–2026.1
- SLES 15 SP7
研究者は、Ubuntu、Debian、Pop!_OS、openSUSE、Oracle Linux、Amazon Linuxの各バージョンも、「cifs-utils」がインストールされている場合は脆弱である可能性があると指摘しています。
ただし、Ubuntu 26.04、Fedora 40〜44、CentOS Stream 10、Rocky Linux 10、SLES 16、AlmaLinux 10、openSUSE Leap 16などのバージョンでは、デフォルトのSELinux/AppArmorの設定によってCIFSwitchの悪用が防止されています。
また、Amazon Linux 2およびKali Linux 2019.4と2020.4については、これらのcifs-utilsバージョンに名前空間切り替え機能が備わっていないため、まったく影響を受けません。
CIFSwitchは、cifs.spnegoリクエストの発信元を検証する機能を追加するカーネルパッチ(アップストリームコミット3da1fdf)によって修正されていますが、このパッチが適用される正確なカーネルバージョンはディストリビューションによって異なります。
研究者は、CIFSモジュールが使用されていない場合は無効化またはブラックリストへの追加を行い、cifs-utilsパッケージが不要であれば削除し、非特権ユーザー名前空間を無効化することを推奨しています。
ManizadaはCIFSwitchの概念実証(PoC)エクスプロイトを公開しており、組織が適用したパッチや緩和策の有効性を検証する際に役立てることができます。
CIFSwitchは、最近公開されたLinuxシステムに影響する権限昇格の脆弱性シリーズの最新事例であり、「Copy Fail」「Dirty Frag」「Fragnesia」「DirtyDecrypt」「PinTheft」などに続くものです。
検証のギャップ:自動ペネトレーションテストが答えるのは一つの問いだけ。本当は六つの検証が必要です。
自動ペネトレーションテストツールは確かな価値を提供しますが、「攻撃者がネットワーク内を移動できるか」という一つの問いに答えるために設計されています。コントロールが脅威をブロックするか、検出ルールが正常に機能するか、クラウド設定が堅牢であるかをテストするためのものではありません。
このガイドでは、実際に検証が必要な6つのサーフェスを解説しています。