
Linuxカーネルの権限昇格エクスプロイト(CVE-2026-46242)は、epollにおける競合状態のuse-after-freeを悪用し、デスクトップ、サーバー、Androidデバイスで99%の信頼性でルート権限を取得します。

Google kernelCTF上で非特権プロセスがrootへ昇格する様子。
Bad Epoll (CVE-2026-46242) は、Linuxカーネルのepollサブシステムにおける競合状態によるuse-after-freeです。このバグにより、非特権プロセスがLinuxデスクトップやサーバーだけでなく、Androidデバイス上でもrootになれます。
Bad EpollはJaeyoung Chungによって、Google kernelCTFへの0-day提出として報告・悪用されました。kernelCTFはLinuxカーネルエクスプロイトに$71,337以上を報奨します。Bad Epollの提出は**$92,337**の報奨を受け取りました。
[!NOTE] AnthropicのAI、Mythosは同じepollコード内に別の競合バグを発見しましたが、Bad Epollは見逃しました。
Androidをroot化できる稀なバグ。 ほとんどのLinux権限昇格バグはAndroidを全くroot化できません。例えばCopy Failとその亜種は、Androidが決してロードしないモジュールを必要とします。GoogleのkernelCTFで悪用された約130件の脆弱性のうち、Androidのroot化候補となるのは約10件に過ぎません。Bad Epollはそのうちの1つです。
キルスイッチが存在しない。 Copy Failとその亜種は、脆弱なモジュールをアンロードすることで無効化できますが、epollにはそのような選択肢がありません。epollはオペレーティングシステム、ネットワークサービス、ブラウザがすべて依存するカーネルの中核機能です。修正する唯一の方法はパッチを適用することです。
競合ウィンドウは極小、しかし攻撃の信頼性は99%。 このバグの競合ウィンドウはわずか約6命令分の幅しかなく、通常の試行ではほぼ決してヒットしません。エクスプロイトはそのウィンドウを広げ、カーネルを決してクラッシュさせないリトライループを実行します。その結果、以下に説明する攻撃の概要のとおり、99%の信頼性を持つエクスプロイトとなります。
2023年の単一のコミットが、わずか約2,500行のepollコードに2つの別個の競合状態を導入しました。両方とも権限昇格につながりうる重大なバグであることが判明しました。
1つ目はAnthropicのMythosによって発見され、CVE-2026-43074として報告され、詳細はAnthropicの公開レポート、ANT-2026-CM0TCREPにあります。カーネルの競合バグは発見が難しいことで知られているため、この結果自体が印象的です。これはフロンティアAIモデルの競合バグ発見能力を示しました。後に独立した研究者が、その1-dayエクスプロイトをkernelCTFに提出しました。
もう1つの競合がBad Epollであり、Mythosはこれを見逃しました。Mythosがこの小さなepollコードパス内で最初のバグを発見したことを考えると、同じ領域をかなりの深さで調査した可能性が高いです。MythosがなぜBad Epollを見逃したのかを正確に知ることはできませんが、2つの要因が発見を難しくしたと考えられます。
競合ウィンドウが極小。 わずか約6命令分の幅しかないため、脆弱なコードを見ても正確なスレッドのインターリーブを想像するのは困難です。
実行時の証拠がほとんどなかった。 CVE-2026-43074が修正された後、Bad Epollのuse-after-freeは通常、カーネルの主要なメモリエラー検出器であるKASANをトリガーしません。そのシグナルがなければ、Mythosはそれを実際のバグとして報告する十分な確信を持てなかったのかもしれません。
Bad Epollの修正も困難でした。メンテナの最初のパッチは問題を完全には修正せず、正しいパッチが投入されたのはバグが最初に報告されてからわずか2か月後でした。通常セキュリティ問題を緊急に処理するカーネルとしては長い時間です。
全体として、Bad Epollは競合状態があらゆる段階でいかに難しいかを示しています。フロンティアモデルにとっても発見が難しく、正しく修正するのも難しく、そして次のセクションで示すように、信頼性高く悪用するのも難しいのです。またこれは、フロンティアAIモデルの存在下でもなお探求する価値のある脆弱性研究方向を示唆しています。すなわち、狭いタイミング条件と弱い証拠の背後にある真のセキュリティ影響を明らかにすることです。
[!NOTE] 独立した研究者であるQi Tangと Junxi Qianも、Anthropicと同じ2026年3月30日にCVE-2026-43074をLinuxカーネルチームに報告しました。 彼らの名前は上流の修正のクレジットから誤って省略されていました。 これらの独立した報告を指摘してくれたGuidong Hanに感謝します。 3人の研究者は後に、epollにおけるさらに別の競合状態によるuse-after-freeを発見しました。
好奇心旺盛な読者のために、攻撃の概要を以下に示します。
リンクされた2つのepollオブジェクト。両方を同時にクローズすると競合が発生する。
epollのクローズパスのうち2つが同時に実行され衝突します。一方がオブジェクトを解放している間に、もう一方がまだそこに書き込んでおり、これがuse-after-free (UAF) です。
競合ウィンドウと、エクスプロイトがそれを駆動する方法。
エクスプロイトは4つのepollオブジェクトを2組にグループ化して使用します。一方の組が競合をトリガーし、もう一方が被害者となります。そこから、エクスプロイトは8バイトのUAF書き込みをファイルオブジェクトへのUAFに変え、クロスキャッシュ攻撃を用いてファイルの内容を完全に制御します。
バグを/proc/self/fdinfoを通じた任意のカーネルメモリ読み取りに変える。
その制御により、エクスプロイトは/proc/self/fdinfoを通じてカーネルメモリの任意読み取りを獲得します。最後に、制御フローをハイジャックし、ROPチェーンを実行してrootシェルを取得します。
詳細は完全なエクスプロイトのwriteupとコードで入手できます。
epollは無効化できないため、Bad Epollに簡単な回避策はありません。唯一の対処法はパッチを適用することです。
a6dc643c6931、
または利用可能になり次第、お使いのディストリビューションのバックポートを適用してください。Bad Epollは
58c9b016e128 (2023-04-08)
によって導入され、
a6dc643c6931 (2026-04-24)
によって修正されました。
多くのLinuxディストリビューションは、v6.4以降をベースにしたカーネルを使用し、上記の修正コミットのバックポートをまだ適用していない場合、影響を受ける可能性があります。お使いのディストリビューションのカーネルセキュリティアップデートで、上記の修正コミットのバックポートを確認してください。古いv6.1ベースのカーネルは、バグがv6.4で導入されたため影響を受けません。
現在のエクスプロイトは、以下のGoogle kernelCTFターゲット向けに書かれています。
lts-6.12.67 (LTS)、99%の信頼性cos-121-18867.294.100 (COS)、98%の信頼性Androidエクスプロイトはまだ進行中です。
| 日付 | 出来事 |
|---|---|
| 2023-04-08 | バグがepollに導入された (コミット58c9b016e128)。 |
| 2026-02-17 | バグを[email protected]に報告した。 |
| 2026-02-17 | メンテナがパッチのプロトタイプを提案したが、正しい修正ではなく、その後議論は停滞した。 |
| 2026-03-30 | CVE-2026-43074がAnthropicと独立研究者Qi TangおよびJunxi QianによってLinuxカーネルチームに報告された。 |
| 2026-04-02 | CVE-2026-43074の修正がメインラインに投入された。 |
| 2026-04-22 | 残りの問題を再報告した。 |
| 2026-04-24 | このバグの修正がメインラインに投入された (コミットa6dc643c6931)。 |
この名前は、Androidをroot化するカーネルバグの「Bad」シリーズに従っています。その初期のものにはBad Binder、 Bad IO_uring、Bad Spinがあります。Bad Epollはepoll版です。
このページは短縮版です。完全な根本原因分析、エクスプロイトwriteup、エクスプロイトコードは以下のリンクで見つけられます。
Bad EpollはJaeyoung Chungによって報告・悪用されました。