概要

Linuxカーネルのepollサブシステムに、権限のない一般ユーザーがroot権限を取得できる新たな脆弱性「Bad Epoll」(CVE-2026-46242、CVSS 3.1スコア7.8)が発見された。epollは複数のファイルディスクリプタやネットワーク接続を監視するためのLinuxカーネルの中核機能であり、サーバーやデスクトップだけでなくAndroid端末にも組み込まれている。無効化やアンロードができない機能であるため、パッチを適用する以外に有効な回避策が存在しない点が最大の問題となっている。発見者はソウル大学CompSec Labの博士課程研究者Jaeyoung Chung氏で、Google kernelCTFプログラムに報告し7万1,337ドル以上の報奨金を得た。

技術的な詳細

脆弱性の正体はuse-after-free型の競合状態(race condition)である。カーネル内のep_remove()関数は、file->f_lockの保護下でfile->f_epをクリアするが、その後もhlist_del_rcu()spin_unlock()の実行中にファイルオブジェクトを使用し続ける。このタイミングで別スレッドが並行して__fput()を呼び出すと、一時的なNULL値を観測してeventpoll_release_file()をスキップし、直接f_op->releaseに進んでしまう。その結果、ep_remove()側がまだ使用中と信じているeventpoll構造体が解放され、カーネルメモリが破損する。この競合の成功に必要なタイミングの窓はわずか「機械語命令にして約6命令分」という極めて狭いものだが、Chung氏が考案した4つのepollファイルディスクリプタを連結させる手法では、成功率は約99%に達するという。またこの手口はChromeのレンダラーサンドボックス内からも実行可能であり、ブラウザ側の別の脆弱性と連鎖させることでサンドボックス脱出につながるリスクも指摘されている。

影響範囲

影響を受けるのはメインラインカーネル6.4以降と、Android 6.6シリーズ以降を採用する端末で、Pixelシリーズの一部も含まれる。一方、6.1ベースの古いカーネルを使う端末(旧世代のPixel 8など)は影響を受けない。現時点で実際の攻撃に悪用された事例は確認されておらず、CISAの既知悪用脆弱性(KEV)リストにも未登録だが、公開されたPoCが存在するため、特に複数テナントが同居するマルチテナント環境では優先的な対応が推奨されている。

背景と発見の経緯

この脆弱性の根は2023年4月にさかのぼる。当時マージされた単一のカーネルコミットが、約2,500行に及ぶepollのコードパスに2つの独立した競合状態を混入させていた。このうち1つ目の脆弱性(CVE-2026-43074)は、AnthropicのAIモデル「Mythos」による自動解析で既に発見されていたが、Bad Epollは同じモデルの解析でも見逃されていた。その理由として、記事はタイミングの窓が極めて狭いことに加え、カーネルメモリエラー検出器KASANでもほとんど実行時の痕跡を残さない点を挙げている。Chung氏は2026年2月17日にGoogleへ報告したが、最初のパッチ試行は問題を完全には解決できず、正確な修正であるアップストリームコミットa6dc643c6931が最終的にマージされたのは4月24日と、報告からおよそ2カ月を要した。

今後の展望

各Linuxディストリビューションおよび端末ベンダーは、このアップストリーム修正のバックポートを速やかに統合する必要がある。epollという無効化不可能な中核機能に起因するため、設定変更やモジュール無効化による一時的な緩和策は取れず、パッチ適用が唯一の対策となる。今回のケースは、AIによる脆弱性検出が進んでも、極めて狭いタイミング条件を伴う競合状態は依然として人間の研究者による発見に依存する部分が大きいことを示す事例としても注目されている。