Dirty Frag: Linuxにおける汎用的なローカル権限昇格の脆弱性

Linuxカーネルは、汎用的なローカル権限昇格(LPE)の脆弱性「Dirty Frag」の発見により、再び重大なセキュリティ上の課題に直面しています。この欠陥により、権限のないユーザーがすべての主要なLinuxディストリビューションでroot権限を取得することが可能となり、以前の「Copy Fail」脆弱性の影響を彷彿とさせます。

Dirty Fragが特に危険な理由は、ページキャッシュを標的とする能力にあり、ディスク上に必要な書き込み権限を持たなくても、メモリ内の重要なシステムバイナリや設定ファイルを変更できる点にあります。この脆弱性は、エンバーゴ(公開猶予期間)の破綻後に公開されたため、当初は即時のパッチやCVEが利用できない状態でコミュニティを襲いました。

攻撃のメカニズム

Dirty Fragは単一のバグではなく、2つの個別の脆弱性の連鎖です。これは、非常に少数のユーザー層にしか使用されていないにもかかわらず、多くのディストリビューションでデフォルトで有効になっている、不明瞭なソケットアドレスファミリーとカーネルモジュールを利用します。

ESPパス

一つの主要なベクトルは、esp4およびesp6モジュールに関わるものです。これらを悪用することで、攻撃者はターゲットとなるバイナリのページキャッシュを上書きできます。提供された概念実証(PoC)では、攻撃者は/usr/bin/suを標的とします。バイナリのページキャッシュの最初の160バイトを最小限のx86_64 root-shell ELFで上書きすることにより、攻撃者は、通常は認証を必要とするsuコマンドを、rootユーザーとして即座に/bin/shを実行するツールへと変貌させます。

RxRPCパス

フォールバックとして(特に、他のパスがサンドボックス化されているUbuntuのようなシステムにおいて)、エクスプロイトはrxrpc(およびrxkad)モジュールを標的とします。このパスは、/etc/passwd内のrootエントリをパッチするために、より複雑なプリミティブを使用します。

具体的には、「three-splice」技術を用いて、rootユーザーのエントリを、パスワードフィールドが空で、シェルが/bin/bashに設定された状態に変更します。多くのシステムはpam_unix.so nullokで構成されているため、空のパスワードフィールドにより、攻撃者はパスワードを入力せずにsu -を実行し、rootアクセス権を取得できます。

公開に関する論争

Dirty Fragのリリースは、責任ある公開プロセスにおける崩壊によって特徴付けられました。公開のタイムラインは以下の通りです:

  • 2026年4月29日: 研究者はRxRPCの脆弱性および武器化されたエクスプロイトをsecurity@kernel.orgおよびnetdevメーリングリストに提出しました。
  • 2026年5月7日: 5日間のエンバーゴの下で、情報はlinux-distrosメーリングリストと共有されました。
  • 2026年5月7日: 無関係な第三者がESPの脆弱性に関する情報を公開にリリースし、エンバーゴを破りました。
  • 2026年5月7日: エンバーゴの違反に続き、研究者はDirty Fragの完全なドキュメントとエクスプロイトコードを公開しました。

技術的な洞察とコミュニティの反応

セキュリティコミュニティは、これらの種類の脆弱性の繰り返されるパターンに注目しています。「Dirty Pipe」から「Copy Fail」そして現在の「Dirty Frag」への遷移は、ページキャッシュページの読み取り専用保護の強制が依然として脆弱であることを示唆しています。

脆弱性調査におけるAIの役割

一部の研究者は、この分野における大規模言語モデル(LLM)の使用に関する議論を巻き起こしています。あるコメント主は、AIが即座に回答を提供できる一方で、研究の「探索」フェーズを妨げる可能性があると指摘しました:

"I find that that vulnerability research using AI really hinders my creativity... you don't get to see what's nearby. It's like a genie - you get exactly what you asked for and nothing more."

逆に、LLMはパッチをリバースエンジニアリングして武器化されたエクスプロイトへと変貌させる速度を加速させており、従来の「静かなパッチ(quiet patch)」モデルを obsolete(時代遅れ)にしていると主張する者もいます。

ディストリビューションのデフォルト設定

使用者が0.1%未満であるオプションのカーネル機能が、なぜ主要なディストリビューションでデフォルトで有効になっているのかについて、大きな批判が集まっています。このデフォルトのカーネル構成における「肥大化(bloat)」は、LPEのための攻撃対象領域を攻撃対象領域(attack surface)を大幅に増加させます。

緩和策と防御

すべてのディストリビューションにおいて公式パッチが完全に展開されるまで、いくつかの緩和策が推奨されます:

1. 脆弱なモジュールを無効化する

ユーザーは、影響を受けるモジュールを個別に無効化することで、エクスプロイトのベクトルをブロックできます:

sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"

2. 不権限ユーザーの名前空間を制限する

多くのエクスプロイトは、ネットワーク名前空間内で必要な権限(CAP_NET_RAWなど)を取得するために、不権限ユーザーの名前空間(unprivileged user namespaces)に依存しています。この機能を無効化することで、ESPおよびRxRPCパスの両方をブロックできます:

echo 1 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns

注意: これにより、現代のウェブブラウザなどが使用する一部のアプリケーションサンドボックスが動作しなくなる可能性があります。

3. 最小限のカーネルを使用する

この事件は、ディストリビューションがよりカスタマイズされたアプローチに移行し、デフォルトで最小限のカーネルを提供し、必要な場合にのみユーザーが明示的に特殊なネットワークモジュールを有効にするよう求めるべきだという呼びかけを再燃させました。

Sources