2026年6月16日、Linux カーネルのトラフィック制御サブシステム内の act_pedit モジュールに存在するローカル権限昇格(LPE)脆弱性が CVE-2026-46331 として割り当てられました。「pedit COW」と通称されるこの脆弱性は、非特権のローカルユーザーがユーザー名前空間を経由して root シェルを取得できる深刻なページキャッシュ汚染型の欠陥です。
CVE 割り当てから 24 時間以内に「packet_edit_meme」と名付けられた動作する概念実証(PoC)コードが GitHub に公開され、RHEL 10.0・Debian 13 Trixie・Ubuntu 24.04.4 での root 奪取が検証済みとなっています。Red Hat は2026年6月19日に公式アドバイザリ(RHSB-2026-008)を公開し、RHEL 8・9・10 および OpenShift・OpenStack を含む関連製品への影響を確認しています。
サマリー
- CVE-2026-46331(pedit COW)は Linux v5.18〜v7.1-rc7 の
act_peditモジュールに存在する COW 競合バグ。ユーザー名前空間経由で非特権ユーザーが/bin/suのカーネルページキャッシュを書き換え、root を取得できる - 2026年5月後半に修正パッチが netdev メーリングリストに「ルーティンなデータ破損パッチ」として静かに投稿されたが、セキュリティアドバイザリは添付されなかった。その後 6月16日に CVE が割り当てられ、24 時間以内に公開 PoC が登場した
- 攻撃はディスクに一切書き込まない設計であり、ファイル整合性監視ツールの検査を通過する。悪用されたホストはファイル整合性ツールの結果に関わらず完全に侵害されたものとして扱う必要がある
- RHEL 8・9・10(OpenShift・OpenStack・RHEL CoreOS 含む)・Debian 13 Trixie・Ubuntu 全サポートバージョン(18.04〜26.04)に影響する。Debian Trixie はパッチ配布済み。Debian 11・12 と Ubuntu は対応中
- 即時対応は2つ:①パッチ済みカーネルへの更新(最優先)、または②
act_peditモジュールのブラックリスト登録(tc pedit利用環境では不可) - 本脆弱性は2026年に相次いだ Linux ページキャッシュ汚染型 LPE 脆弱性(Dirty Frag・Fragnesia・PinTheft・CIFSwitch)の系譜に連なる6例目
| ディストリビューション | カーネル | PoC 結果 | パッチ状況(6月27日時点) |
|---|---|---|---|
| RHEL 10.0 | 6.12.0-228.el10 | root 奪取に成功 | 修正版配布中(Red Hat アドバイザリ RHSB-2026-008) |
| Debian 13 Trixie | 6.12.90+deb13.1 | root 奪取に成功 | パッチ適用済み |
| Debian 11 / 12 | 各バージョン | 未検証・脆弱 | パッチ未配布 |
| Ubuntu 24.04.4 | 6.17.0-22 | AppArmor bypass 経由で root 奪取に成功 | 対応中(Ubuntu 全サポートバージョンが脆弱と公表) |
| Ubuntu 26.04 | 7.0.0-14-generic | bypass が閉じられているため PoC は失敗(カーネル自体は脆弱) | 対応中 |
目次
act_pedit の COW 競合とは— PoC が登場するまで
act_pedit(tcf_pedit_act())は、Linux カーネルのトラフィック制御(Traffic Control)サブシステムで使用されるモジュールで、転送中のパケットのヘッダーをリアルタイムで書き換える機能を持ちます。この書き換え処理には Copy-on-Write(COW)パターンが採用されており、本来はメモリページを編集する前にそのプライベートコピーを作成し、共有ページには書き込まないことが設計上の前提です。
今回の脆弱性の核心は、書き込み可能な範囲のバリデーションをランタイムオフセットの解決より前に実行してしまう点にあります。
特定の編集キーはオフセットの最終値を実行時にしか決定しないため、バリデーション後にオフセットが変化した場合、書き込みがプライベートコピーの範囲外に着地し、共有されているページキャッシュのページに直接書き込まれてしまいます。この共有ページがディスク上の実行可能ファイル(たとえば /bin/su)のキャッシュを裏付けているとき、カーネルのページキャッシュ内のバイナリを改ざんする経路が生まれます。
脆弱性はコミット 899ee91156e5 によって Linux v5.18 に導入されており、v7.1-rc7 まで存在しています。修正パッチは2026年5月後半に netdev メーリングリストへ「ルーティンなデータ破損パッチ」として静かに投稿されましたが、CVE番号もセキュリティアドバイザリも添付されていませんでした。Red Hat が6月19日に公式アドバイザリ(RHSB-2026-008)を公開し「Important」と分類、その後 GitHub ユーザー sgkdev が CVE 割り当て(6月16日)から24時間以内に「packet_edit_meme」として動作する PoC を公開したことで広く認知されました。
非特権ユーザーが root を取るまで—packet_edit_meme の攻撃ステップ
PoC の README が示す攻撃の流れは以下の通りです。
第一ステップとして、子プロセスがユーザー名前空間(user namespace)を作成します。
Linux では特定の設定下で非特権ユーザーが自身のユーザー名前空間を持つことができ、その名前空間内では CAP_NET_ADMIN(ネットワーク管理権限)を取得できます。RHEL・Debian はデフォルトで非特権ユーザー名前空間が開放されているため、追加の操作は不要です。
第二ステップとして、名前空間内の CAP_NET_ADMIN を使って tc pedit アクションを設定し、COW 違反を引き起こします。この書き込みが /bin/su を裏付けているカーネルページキャッシュのページに着地します。
第三ステップとして、攻撃者は /bin/su の ELF バイナリのエントリポイントをシェルコードで上書きします。
シェルコードの内容は setgid(0) → setuid(0) → execve("/bin/sh") というシンプルな3ステップです。
第四ステップとして、改ざんされたページキャッシュ上の /bin/su を起動すると、SUID root バイナリとしてシェルコードが実行され、root シェルが取得されます。
Ubuntu 24.04.4 は AppArmor による保護機構を持ちますが、PoC は aa-exec -p {trinity,chrome,flatpak} で trinity・chrome・flatpak といった userns, ルールを持つ許容プロファイルを経由することで制限を回避します(--ubuntu フラグで動作)。Ubuntu 26.04 ではこの迂回経路が閉じられており、PoC の実行は失敗します。ただし Ubuntu 26.04 のカーネル自体は依然として脆弱であり、別の迂回経路が発見された場合には悪用可能になります。
ファイル整合性監視を「すり抜ける」ゼロ証拠型エクスプロイトの特殊性
このエクスプロイトが情報システム部門にとって特に厄介な点は、攻撃中にディスク上のファイルを一切変更しない設計にあります。
/bin/su はディスク上では一切書き換えられません。攻撃者が書き換えるのはカーネルのページキャッシュ内の /bin/su のイメージのみです。ページキャッシュはメモリ上に存在し、ファイルの高速アクセスのためにカーネルが維持するインメモリのキャッシュです。AIDE・Tripwire・rkhunter・OSSEC といった一般的なファイル整合性監視(FIM)ツールはディスク上のファイルのハッシュを検証するため、カーネルページキャッシュに対する変更を検知する能力を持ちません。
これは Fragnesia(CVE-2026-46300)や Dirty Frag(CVE-2026-43284・CVE-2026-43500) と同様の特性です。
Fragnesia でも同じく /usr/bin/su のページキャッシュが標的とされ、ディスク上のバイナリは変更されないままでした。この攻撃パターンが2026年を通じて繰り返されているということは、FIM ツールへの依存度が高いセキュリティ体制は本ファミリーの脆弱性の悪用検知に対して構造的に盲点を持つことを意味します。
Red Hat と PoC 作者の sgkdev はともに「エクスプロイトを実行されたホストは、ファイル整合性ツールの報告内容に関わらず完全に侵害されたものとして扱わなければならない」と明記しています。インシデントレスポンス時には、FIM の「クリーン」な報告を根拠として侵害を否定することはできない点に注意が必要です。
「Dirty 系」ページキャッシュ汚染型脆弱性の 2026 年連鎖と
pedit COW はページキャッシュの共有ページに対して意図しない書き込みを行うという Dirty Pipe(2022年・CVE-2022-0847)に端を発する脆弱性クラスの最新例です。PoC 作者 sgkdev は README で「yet another page cache poisoning nightmare(またしてもページキャッシュ汚染の悪夢)」と表現しています。
2026年に入ってからこのファミリーの脆弱性は急加速して公開されています。
4月末の Copy Fail(CVE-2026-31431)、5月7日の Dirty Frag、5月13日の Fragnesia(CVE-2026-46300)、5月中旬の PinTheft、5月28日の CIFSwitch、そして今回の6月の pedit COW と、2か月足らずで6件が公開されています。
pedit COW が従来の Dirty 系と異なる点は、エントリポイントにあります。
攻撃者は tc(トラフィック制御)アクションをユーザー名前空間内から設定できるという正規の Linux 機能を起点としており、前提条件として特別なハードウェア・特殊なカーネル設定・既存の脆弱なサービスへのアクセスを必要とせず、RHEL と Debian においてはデフォルト設定の非特権ユーザーアカウントだけで完全な攻撃チェーンが成立します。
「静かなパッチ」の問題も指摘されています。修正が「セキュリティアドバイザリなしのデータ破損パッチ」としてマージされたことで、ディストリビューションのセキュリティチームが優先的にバックポートすることができず、多くの環境でパッチが当たらないまま数週間が経過しました。これはセキュリティパッチの透明性と情報開示プロセスが持つ構造的な問題として、この一連の LPE 脆弱性公開の文脈で繰り返し指摘されています。
影響を受けるディストリビューションとパッチ・緩和策
パッチ済みカーネルへの更新と再起動が最も確実な対応です。特に以下の環境を優先してください。マルチテナントホスト・CI/CD ランナー・Kubernetes ノード・共有ビルドマシン・コンテナホストは、一般ユーザーアカウントへのアクセスを多数の人や自動化プロセスが持つため、早急な対応が必要です。
パッチ適用が直ちに困難な場合の暫定緩和策として、act_pedit モジュールのブラックリスト登録があります。
echo "blacklist act_pedit" > /etc/modprobe.d/blacklist-act-pedit.conf
Red Hat のアドバイザリに記載されているこの措置は、モジュールが起動時に自動ロードされることを防ぎます。ただし、現在 tc pedit ルールをトラフィックシェーピングやパケットヘッダー書き換えに使用しているシステムには適用できません。適用前に lsmod | grep act_pedit で現在ロード状態かどうかを確認してください。モジュールが現在ロード中の場合は、ブラックリスト登録後に再起動が必要です。
非特権ユーザー名前空間を無効化する方法もあります。RHEL 系では user.max_user_namespaces=0、Debian・Ubuntu では kernel.unprivileged_userns_clone=0 を設定することで攻撃の前提条件を封じられますが、この設定はルートレスコンテナ(Podman・rootless Docker)やサンドボックスブラウザ(Chrome・Firefox の一部機能)を機能不全にします。コンテナを使用している環境での適用は慎重に検討が必要です。








