
Falco Feedsは、オープンソースに焦点を当てた企業に、新しい脅威が発見されると継続的に更新される専門家が作成したルールにアクセスできるようにすることで、Falcoの力を拡大します。

本文の内容は、2026年5月8日に Michael Clark が投稿したブログ(https://www.sysdig.com/blog/dirty-frag-cve-2026-43284-and-cve-2026-43500-detecting-unpatched-local-privilege-escalation-via-linux-kernel-esp-and-rxrpc)を元に日本語に翻訳・再構成した内容となっております。
2026年5月8日、Dirty Frag という通称で呼ばれる CVE-2026-43284 と CVE-2026-43500 が、独立リサーチャーの Hyunwoo Kim によって公開されました。Kim は、別の関係者が調整された情報公開禁止措置を破ったため、予定より早く、そしてパッチがリリースされる前に公開を余儀なくされたと主張しています。この2つの脆弱性により、権限のないローカルユーザーが任意のページキャッシュを破損させ、多くの Linux ディストリビューションで root に移行できます。同日、どのディストリビューションもパッチ適用済みカーネルを出荷する前に、動作する概念実証(PoC)が公開されました。
ESP の脆弱性(CVE-2026-43284)は、2017年1月のコミット cac2661c53f3 によって導入されました。このコミットにより、IPsec ESP の受信処理がインプレース復号の高速パスへ移された。RxRPC の亜種(CVE-2026-43500)は、2023年6月に同じ高速パスのパターンが rxrp に追加された際に導入されました。これらの脆弱性が導入されてから発見されるまでに長い期間があったことを踏まえると、両方とも AI の支援を受けて特定された可能性が高いです。
Sysdig Threat Research Team(TRT)は、Dirty Frag を分析し、両方の脆弱性がどのように悪用され得るかを調査し、Sysdig および OSS Falco ユーザー向けのランタイム検知カバレッジを検証し、セキュリティチームと開発チームに向けた主要な推奨事項を提供しました。その調査結果を以下に概説します。
影響を受けるバージョン
既知の影響:
- Linux カーネル 4.10 から 7.0
- すべてではないにしても、ほとんどの Linux ディストリビューションが影響を受け、影響範囲は数年前までさかのぼる。
根本原因
Linux は、最近使用されたファイルをパフォーマンス用キャッシュとして RAM に保持する(これを「ページキャッシュ」と呼ぶ)。/usr/bin/su を読み取る際、カーネルはディスクにはアクセスしません。代わりに、そのバイト列を提供する。重要なのは、このキャッシュが共有されている点である。そのファイルを開くすべてのプロセスは、同じメモリ上のページを指す。ファイル権限によって、それらのページを変更できるかどうかが決まり、通常、権限のないユーザーは変更できません。
Linux の2つのネットワーク機能、すなわち IPsec 暗号化の ESP と、ニッチなファイル共有プロトコルである RxRPC は、受信したネットワークデータをインプレースで復号する最適化を使用しています。受信したネットワークデータを復号前に新しいバッファへコピーするのではなく、カーネルはそれが到着したメモリチャンク内で直接復号します。
欠陥は、カーネルがそのメモリを実際に誰が所有しているかを確認しない点にあります。つまり、攻撃者は、ペイロードメモリが密かに /usr/bin/su のキャッシュから借用されたページである偽のネットワークパケットを組み立てることができます。その後、攻撃者は自分の鍵を使ってカーネルの復号処理を設定できるため、「復号された出力」は攻撃者が完全に選んだバイト列になります。その結果、カーネルはそのバイト列を借用されたページへ忠実に書き込み、そのページはシステム全体で共有される su ファイルのメモリ上のコピーです。これにより、/usr/bin/su は攻撃者のシェルコードで RAM 内で密かに書き換えられます。次に誰かが su を実行すると、攻撃者のコードが root として実行されます。
エクスプロイテーション
公開された PoC は、ディストリビューション固有のハードニングを回避できるよう、両方のプリミティブを連鎖させます。権限のないユーザー名前空間を許可しているホストでは、ESP の亜種が最初に実行されます。Ubuntu では、権限のないユーザー名前空間は制限されていますが、rxrpc.ko がデフォルトのカーネルパッケージに含まれているため、RxRPC の亜種が引き継ぎます。
ESP エクスプロイトは、おおよそ以下の攻撃チェーンに従います。
- パイプを開き、vmsplice() を使用して /usr/bin/su のページキャッシュからページをページ化フラグメントとしてアタッチする。
- AF_KEY または XFRM netlink を介して、攻撃者が選択した暗号、鍵、SPI を持つ XFRM SA を設定する。
- パイプを ESP カプセル化用に設定された UDP ソケットへ splice() し、細工した ESP データグラムをループバックへ送信する。
- カーネルは、スプライスされたページ全体にわたってデータをインプレースで復号し、192 バイトの x86_64 スタブ(setuid(0); setgid(0); execve(”/bin/sh”))を /usr/bin/su のキャッシュされたページに直接配置する。
- /usr/bin/su を実行する。パッチされたバイナリが実行され、root シェルが得られる。
以前の DirtyPipe 脆弱性である CVE-2022-0847 は、パイプバッファのフラグ処理における限定的な競合状態に依存していましたが、それとは異なり、Dirty Frag は決定論的なロジック上の欠陥です。Kim は、失敗し得るタイミングウィンドウが存在せず、成功率が非常に高く、カーネルパニックのリスクも最小限であると報告しています。Copy Fail(CVE-2026-31431)の4バイト書き込み粒度は、ここでは、選択した任意のオフセットに対する、攻撃者が完全に制御する平文の単発書き込みに置き換えられています。
インパクト
脆弱なカーネル上の任意のローカルの権限のないユーザーが root アクセスを取得できます。リモートベクトルは存在しません。このエクスプロイトは、標準的なシステムコール(socket、setsockopt、bind、vmsplice、splice、sendmsg)と、すべての主要なエンタープライズディストリビューションのデフォルトカーネルパッケージで完全に有効化されているモジュール(esp4、esp6、rxrpc)のみに依存しています。したがって、コンテナワークロードはホストカーネルの露出を継承します。AF_KEY、XFRM netlink、または AF_RXRPC ソケットを作成できる任意のコンテナ(制約のない Docker、containerd、およびほとんどの Kubernetes Pod ではデフォルト)が侵害されると、ホストの root へ権限昇格されます。
Sysdig Secureによる検知
マネージドポリシーを使用している Sysdig Secure のお客様には、これらの脅威の検知を支援するランタイム検知機能があります。まず、既存の CopyFail ルールは Dirty Frag の一部の亜種を検知します。
- 権限昇格につながる AF_ALG ページキャッシュポイズニング
- 機密ファイルを標的とした AF_ALG ページキャッシュポイズニング
Dirty Frag の残りの亜種については、ESP および RxRPC の経路をカバーする2つの新しいルールが Sysdig Runtime Behavioral Analytics ポリシーに追加されています。
- Dirty Frag xfrm-ESP ページキャッシュポイズニング LPE
- Dirty Frag RxRPC ページキャッシュポイズニング LPE
どちらのルールも、Sysdig の高度な検知エンジンを使用してシグナル間のイベントを関連付け、インプレース書き込みが到達する前のセットアップ段階を捕捉します。
.png)
Falcoによる検知
Dirty Frag の RxRPC 経路では、このソケットによって rxrpc.ko を自動ロードし、add_key() を介して rxkad セッションキーを登録する必要があります。これは、ページキャッシュへの splice 書き込みプリミティブを取得するための前提条件です。AF_RXRPC には AFS ファイルシステムデーモン以外に正当なユーザー空間の利用者が存在しないため、ソケット呼び出し自体が信頼性の高い早期指標となります。
- rule: AF_RXRPC Socket Created by Unexpected Process
desc: >
Detects creation of an AF_RXRPC (RxRPC protocol, domain 33) socket by a process that is not a known AFS client or server daemon. AF_RXRPC sockets are used by the Dirty Frag RxRPC userspace-fcrypt exploit path: an attacker opens socket(AF_RXRPC, SOCK_DGRAM) and calls add_key("rxrpc") to register a kernel rxkad key, obtaining a splice write primitive into a page-cache fragment.
condition: >
evt.type=socket and evt.dir=< and evt.rawres >= 0 and
(evt.rawarg.domain=33 or evt.arg.domain contains AF_RXRPC) and
proc_name_exists and
not proc.name in (af_rxrpc_trusted_processes)
output: AF_RXRPC socket created by unexpected process (proc.name=%proc.name proc.exepath=%proc.exepath proc.pname=%proc.pname proc.pexepath=%proc.pexepath gparent=%proc.aname[2] gexepath=%proc.aexepath[2] ggparent=%proc.aname[3] ggexepath=%proc.aexepath[3] proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline socket.domain=%evt.arg.domain socket.type=%evt.arg.type proc.pid=%proc.pid proc.exe=%proc.exe)
推奨事項
- パッチ適用済みのカーネルバージョンに更新してください。
- IPsec トランスポートモードまたは AFS を必要としないホストでは、脆弱なモジュールのロードを防止することで、直ちに緩和してください。AWS の 2026-027 ブリテンでは、リストが当初公開された3つを超えて、周辺の xfrm_user、ipcomp4、および ipcomp6 モジュールまで拡張されています。(注:カーネルにその機能が組み込まれている場合、これは有効ではありません。)
- コンテナランタイムでは、seccomp プロファイルを介して AF_KEY、AF_RXRPC、および XFRM netlink のシステムコールを制限してください。デフォルトの Docker seccomp プロファイルは、すでに AF_RXRPC をブロックしていますが、AF_KEY や XFRM netlink 設定はブロックしていません。
- 上記の Falco ルールをデプロイし、ホストおよびコンテナ全体で、これらのソケットファミリと netlink プロトコルの権限のない使用を検知してください。
- 正当な IPsec および AFS ユーザーがいるかどうか、実行中のワークロードを監査してください。これにより、検知の例外を無効化するのではなく、既知のバイナリに限定できます。
- setuid バイナリおよび /etc/passwd に対する予期しない変更と、権限のないプロセスによる splice および vmsplice アクティビティの後に発生する予期しない権限遷移を監視してください。
まとめ
Dirty Frag は、CopyFail の algif_aead ページキャッシュ書き込みの欠陥に続く、8日間で2件目の普遍的な Linux LPE 脆弱性です。どちらも、長年存在していたインプレース処理の最適化を決定論的な root プリミティブに変えます。一方はユーザー空間暗号化、もう一方は IPsec 受信にあります。パッチに先立って動作する公開 PoC がリリースされ、悪用が少数の標準的なシステムコールにまで単純化されているため、防御側は、未パッチのホスト上でローカルの足場が得られれば、数秒以内に root になり得ると想定すべきです。
カーネルが更新されるまで、脆弱なモジュールのブラックリスト化と、権限のない AF_KEY、AF_RXRPC、および XFRM アクティビティのランタイム検知の導入が、唯一実用的な代替管理策です。ページキャッシュ書き込みのクラスは、Dirty Pipe と同じように、一度限りのバグではなく、繰り返し現れるパターンとして扱うべきです。