pedit COW(CVE-2026-46331): Linux act_peditのpartial COW失敗によるページキャッシュ汚染、PoC公開済み

この記事は約15分で読めます。

2026年6月17日、Linuxカーネルのトラフィック制御サブシステムにあるact_peditの脆弱性CVE-2026-46331(通称pedit COW)について、動作するPoCがGitHubで公開されました。Red Hatはこの脆弱性の深刻度を「Important」と評価しており、Red Hat CVEページ上のCVSS v3スコアは7.8です。RHEL 8/9/10、Debian 11/12/13、Ubuntu 18.04 LTS以降の複数リリースが影響対象として扱われていますが、修正状況や実際に悪用できるかどうかはディストリビューションや設定によって異なります。Red Hatの主要なerrataは2026年6月19日以降、対象リリースやサポートチャネルごとに順次公開されています。

この脆弱性が重要なのは、setuid rootバイナリのページキャッシュコピーを汚染することで、ディスク上のファイルを改変せずにroot権限取得につながる可能性があるためです。AIDEやTripwireのようなファイル整合性監視では検知しにくい点も問題です。悪用には、act_peditモジュールが利用可能であることと、非特権ユーザーがuser namespace内でCAP_NET_ADMIN相当の権限を得られることが重要な前提になります。PoC作者の検証範囲では、RHEL 10とDebian 13でデフォルト構成のまま権限昇格が確認されています。

pedit COWの全体像

pedit COWは、Linuxカーネルのnet/schedサブシステムにあるact_peditモジュール内のout-of-bounds writeで、共有ページキャッシュを書き換えられる可能性がある脆弱性です。攻撃者はsetuid rootバイナリ(典型的には/bin/su)のページキャッシュに残るコピーを汚染し、改変後のイメージをroot権限で実行する経路を取ります。ディスク上のファイル自体は変更されないため、AIDEやTripwireといったファイル整合性監視ツールでは検知しにくくなります。

項目 内容
CVE CVE-2026-46331
脆弱性種別 partial COW失敗によるout-of-bounds write、ページキャッシュ汚染(CWE-787)
影響箇所 net/schedサブシステムのact_peditモジュール、tcf_pedit_act()関数
Red Hat深刻度 Important(OpenShift Container Platform上はLow)
Red Hat CVSS v3スコア 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
NVD CVSSスコア 未提供(本稿執筆時点)
CVE/NVD公開 2026年6月16日
PoC公開 2026年6月17日、GitHub「sgkdev/packet_edit_meme」リポジトリ
Red Hat Security Bulletin RHSB-2026-008(2026年6月19日公開)
主な影響範囲 RHEL 8/9/10(RHEL 7以前は影響なし)、Debian 11/12(未修正)/13(修正済)、Ubuntu 18.04 LTS〜26.04 LTS

攻撃成立の条件

pedit COWの悪用には、少なくとも「act_peditモジュールが利用可能であること」と「非特権ユーザーがuser namespace内でCAP_NET_ADMIN相当の権限を得られること」が重要な前提になります。PoC作者は、RHEL 10とDebian 13では非特権ユーザーからrootへの昇格を確認しています。一方、Ubuntu 24.04ではAppArmorプロファイル経由の実行が必要で、Ubuntu 26.04では同経路がデフォルトで塞がれているとされています。ただし、Ubuntu公式のCVEページ上ではカーネル自体は脆弱として扱われているため、AppArmorによる制限は恒久的な修正ではなく緩和要素として整理するのが適切です。

  • act_peditモジュールがロード可能であること:tc関連カーネルモジュールは多くのディストリビューションでautoloadの対象になっており、特権ユーザーが事前にロードしていなくても、非特権ユーザーがtcコマンドや関連netlinkメッセージを発行した時点でロードされる構成が一般的です。
  • 非特権user namespacesが有効であること:tc操作にはCAP_NET_ADMIN権限が必要ですが、非特権user namespaces内ではユーザーがnamespace-localなCAP_NET_ADMINを得る経路が開いています。Red HatもCVEページの公式声明で「unprivileged users may obtain CAP_NET_ADMIN within user namespaces」がエスカレーション経路になると明記しています。

tcf_pedit_act()におけるpartial COWの破綻

Linuxのtraffic control(tc)には、ネットワーク経路上を通過するパケットヘッダを書き換えるpeditというアクションがあります。NAT補助やヘッダ操作などで使われる古くからの仕組みで、その実装がnet/sched/act_pedit.cのカーネルモジュールact_peditです。脆弱性は、このact_peditが備えるtcf_pedit_act()関数のCOW(copy-on-write)処理に存在しています。

Red Hat CVEページに掲載されている説明によると、不具合の構造は次のように整理できます。tcf_pedit_act()はキーループに入る前にskb_ensure_writable()を1回だけ呼び出し、COW対象の範囲を計算します。この計算にはtcfp_off_max_hintというヒント値が用いられますが、ヒントには型付きキーが実行時に追加するヘッダオフセットが含まれていません。結果として一部の書き込みは、私的複製されていない領域に到達し、共有状態のページキャッシュページがそのまま書き換えられます。

kernel.orgで公開されているパッチの概要を整理すると、修正は以下の4点で構成されています。

  • skb_ensure_writable()をキーごとのループ内に移動し、実際の書き込みオフセットが判明したタイミングでCOW範囲を確定させる
  • オフセット演算のオーバーフロー検査を追加する
  • Ethernetヘッダ編集など負のオフセットを伴うケースではskb_cow()でヘッドルームをCOWする
  • offset_valid()INT_MINに対して保護する(INT_MINの単項マイナスはC言語仕様で未定義動作のため)

攻撃チェーンの概略

PoC「packet_edit_meme」が示している攻撃手順は、おおむね以下の流れです。ループバックインターフェースを介してカーネル内のpedit処理を呼び出し、ページキャッシュ上のsetuid rootバイナリを書き換える構成になっています。

  1. 非特権ユーザーが新規user namespaceを生成し、その中でCAP_NET_ADMINを獲得する
  2. ループバックインターフェース上にtc act_peditルールを構成し、netlink経由でカーネル側のpedit処理を呼び出せる状態を作る
  3. setuid rootバイナリ(/bin/suなど)をsendfile()等でカーネルのページキャッシュに載せる
  4. キャッシュページに対してact_peditの書き込みを誘導し、partial COWの抜け穴を突いてキャッシュ上の/bin/suイメージにペイロードを注入する
  5. 汚染されたキャッシュページを参照する状態のsuを実行し、root権限のシェルを取得する

この攻撃手順で重要なのは、ディスク上の/bin/suファイル自体は改変されない点です。sha256sum /bin/suでハッシュを取っても変化はなく、AIDEやTripwireといったファイル整合性監視ツールも検知しません。汚染されているのはあくまでメモリ上のキャッシュコピーです。同時に、root権限取得後にページキャッシュをdrop_cachesでクリアすれば、汚染ページそのものは消滅します。攻撃の痕跡が残りにくい構造です。

ディストリビューション別の修正状況

Red Hat Enterprise Linux

Red HatはセキュリティブリテンRHSB-2026-008を2026年6月19日に公開し、直接影響を受ける製品としてRHEL 8、RHEL 9、RHEL 10、Red Hat Enterprise Linux for NVIDIA、Red Hat OpenShift Container Platformを挙げています。OpenShiftについては、脆弱なモジュールがデフォルトではロードされないため、Red Hatは同製品上の深刻度をLowとしています。一方で、RHEL CoreOS、OpenStack Platform、Red Hat Virtualizationなど、RHELカーネルに依存する製品も影響を受ける可能性があります。Red Hat公式の声明では、RHEL 7以前は影響を受けないと明示されています。

本稿確認時点で、Red Hat CVEページ上では以下のerrataがCVE-2026-46331対応として公開されています。

  • RHSA-2026:27288:RHEL 10 kernel(2026年6月19日)
  • RHSA-2026:27353:RHEL 8 kernel(2026年6月19日)
  • RHSA-2026:27354:RHEL 8 kernel-rt(2026年6月19日)
  • RHSA-2026:27355:RHEL 8.8 Telecommunications Update Service kernel(2026年6月19日)
  • RHSA-2026:27704:RHEL 8.6 Advanced Mission Critical Update Support / Extended Update Support Long-Life Add-On kernel(2026年6月22日)
  • RHSA-2026:27705:RHEL 9.2 Update Services for SAP Solutions / AUS / Extended Life Cycle向けkernel(2026年6月22日)
  • RHSA-2026:27707:RHEL 8.4 Advanced Mission Critical Update Support / Extended Update Support Long-Life Add-On kernel(2026年6月22日)
  • RHSA-2026:27709:NVIDIA for RHEL 10 kernel(2026年6月22日)
  • RHSA-2026:27731:RHEL 10.0 Extended Update Support kernel(2026年6月22日)

利用中のRHEL系環境では、対象リリースと有効なサポートチャネルに対応するerrataを確認し、更新後に再起動して修正済みカーネルで起動していることを確認してください。Red Hat CVEページの「Affected Packages and Issued Red Hat Security Errata」セクションが製品別・チャネル別の正確な対応状況を示しており、上記以外のチャネルについても順次更新されます。

Debian

Debian Security Trackerによれば、Debian 13(trixie)はlinuxパッケージ6.12.94-1以降で修正済みです。一方Debian 11(bullseye)およびDebian 12(bookworm)は2026年6月時点で脆弱なまま残されており、これらを使う環境では緩和策の適用を検討する必要があります。

Ubuntu

UbuntuのCVEページでは、2026年6月25日更新時点で、Ubuntu 18.04 LTSからUbuntu 26.04 LTSまでの主要なサポート対象リリースのlinuxパッケージがVulnerableと表示されています。Ubuntu 26.04については、PoC作者の検証ではAppArmorによる非特権user namespace制限によりデフォルト構成での実行経路は塞がれているとされていますが、Ubuntu公式のCVEページ上ではカーネル自体は脆弱として扱われています。Ubuntu環境では、CVEページおよび今後のUbuntu Security Noticeの更新を確認してください。

パッチが当てられない場合の緩和策

緩和策は2系統あり、それぞれ副作用が異なります。本番環境では、いずれを採用する場合も検証環境での影響評価を経てから適用するのが堅実です。

1. act_peditモジュールをブロックする

tc pedit機能を業務で使っていない場合、act_peditモジュール自体のロードを禁止する選択肢があります。Red Hat公式ブリテンの記載に従えば、以下の手順です。

echo "blacklist act_pedit" > /etc/modprobe.d/blacklist-act-pedit.conf

The Hacker Newsで紹介されている別表記はinstall act_pedit /bin/true形式で、いずれも自動ロードを抑止する目的は同じです。既にロード済みの場合はlsmod | grep act_peditで確認のうえ、rmmodまたは再起動でアンロードしてください。tc peditを使ったトラフィックシェーピングやパケットヘッダ書き換えを実装している環境では、この緩和策は適用できません。

2. 非特権user namespacesを無効化する

sysctlで非特権user namespacesそのものを無効化する経路もあります。RHELではuser.max_user_namespaces=0、Debian/Ubuntuではkernel.unprivileged_userns_clone=0が該当します。

この措置でnamespace-localなCAP_NET_ADMINを得る経路が塞がれ、攻撃の前提条件が崩れます。ただしrootlessコンテナ、一部のCIサンドボックス、サンドボックス化されたブラウザの動作に影響します。本番投入前に検証環境での副作用確認が必要です。

3. ページキャッシュのドロップは事後対処として限定的

echo 3 > /proc/sys/vm/drop_cachesでページキャッシュを破棄すれば、汚染されたキャッシュページは消えます。ただしすでに攻撃者がrootシェルを取得した後では、シェル自体は残ったままで意味がありません。汚染の疑いがあるホストは、ホスト全体が侵害された前提で扱うべきです。

優先対処すべき環境

影響の輪郭から、以下の環境を優先してパッチを当てるべきです。いずれも信頼できないローカルユーザーやジョブが存在するため、ローカル権限昇格がそのまま全テナント・全ジョブの侵害につながる構造を持っています。

  • マルチテナントホスト:共有Linux環境、shared hostingなど、複数の顧客が同一ホストにアカウントを持つ構成
  • CI/CDランナー:GitLab Runner、GitHub Actions self-hosted runnerなど、信頼できないコード(プルリクのテストジョブ等)が実行されうる環境
  • Kubernetesノード:特にuser namespace有効化済みのクラスタや、信頼できないワークロードが配置されるノード
  • ビルドワーカー、研究・ラボ用の共有マシン:多数の開発者・研究者がローカルアカウントを持つホスト

N-day問題としてのpedit COW

pedit COWで注意したいのは、脆弱性の根本原因に触れる修正パッチが、CVE番号やセキュリティタグが付かない状態で公開メーリングリスト上に現れていた点です。修正コミットの件名は「net/sched: act_pedit: extend the writable skb range per key」であり、通常のデータ破損修正として見える内容でした。一方で、CVE説明では「partial COW leading to page cache corruption」と整理されており、結果として攻撃に利用可能な技術的詳細が、明確なセキュリティ文脈を伴わないまま先に公開されていた形になります。

時系列を整理すると、2026年5月16日にact_pedit関連のパッチが公開メーリングリストに投稿され、Red Hat CVEページでは5月18日がPublic dateとして表示されています。その後、6月16日にCVE-2026-46331がNVDに掲載され、6月17日に武器化されたPoCがGitHubで公開されました。さらに6月19日にRed Hat Security Bulletin RHSB-2026-008が公開され、同日以降、対象チャネルごとのRHSAが順次公開されています。

スキャナーのルールやベンダーアドバイザリが整備されるまでに時差がある以上、公開メーリングリストやCNAページへの監視軸を持たないチームにとっては、公開済み情報を利用するN-day攻撃として動く時間が短かった事例です。類似のページキャッシュ汚染型LPEとしては、Dirty Pipe(CVE-2022-0847)、Dirty Frag、Copy Fail、そして同時期に公開されたDirtyCloneがあります。Linuxカーネルのページキャッシュ汚染型LPEは2022年のDirty Pipe以降ほぼ毎年現れており、これらを系譜として整理する記事は別途まとめる予定です。

対処手順として

本稿執筆時点で動作するPoCが公開済みであり、共有ホスト、CI/CDランナー、Kubernetesノードなどを運用している組織は速やかな緩和策の適用が望まれます。優先順を整理すると以下の通りです。

  • パッチ済みカーネルの適用と再起動:ベンダー提供のカーネル更新を適用し、再起動する。Live patchingではなく再起動を選ぶことで、潜在的に汚染されたキャッシュページもクリアにできる
  • 即時パッチが難しい場合の緩和策適用:act_peditのblacklist化または非特権user namespacesの無効化のいずれかを業務要件に照らして選択する
  • 優先環境の特定:マルチテナントホスト、CI/CDランナー、Kubernetesノード、共有開発機を先にパッチする
  • 2026年5月以降のホスト状態の点検:不審なtcルール追加、namespace生成、sendfile()パターンの組み合わせなど、PoCに類似する操作のログ痕跡を確認する
  • 汚染の疑いがある場合のホスト再構築:痕跡が残りにくい攻撃である以上、状況証拠で侵害が疑われる場合はホスト全体を侵害済みとして再構築するのが安全です

一次情報・公式情報

参考情報

slug: linux-pedit-cow-cve-2026-46331-lpe

コメント

タイトルとURLをコピーしました