Linuxカーネルの奥深くに10年から21年もの間検知されずに潜んでいた4つの深刻な脆弱性について、動作可能な公開エクスプロイトがついに登場しました。これにより、攻撃者はroot権限への昇格を達成できるようになります。これらの脆弱性は主に各種ネットワークサブシステムを標的としています。さらに憂慮すべきことに、特定の構成下では、このうちの1つの脆弱性はローカルの攻撃経路から理論上完全なリモートシステム侵害へと変わり得ます。
LPEカルテットと呼ばれる4つの脆弱性
セキュリティ研究者のAsim Manizada氏は、これらの脆弱性を発見し、DirtyAH6(CVE-2026-80844)、TUNderflow(CVE-2026-81000)、PPPoEject(CVE-2026-68121)、DiagSpill(CVE-2026-74469)と命名しました。Manizada氏は7月中旬にこれらの重大な不具合をLinuxセキュリティチームへ責任ある形で報告しました。その後、開発者たちは必要なパッチを段階的に安定版カーネルブランチへ統合していきました。これらの発見に関する詳細な技術解説については、Manizada氏が公開したLinuxカーネルのLPEカルテット脆弱性に関する包括的なブログ記事を参照してください。
DirtyAH6の不具合は、IPv6向けのAuthentication Header処理機構の内部に潜んでいます。segments_leftの値が不正であるため、カーネルは指定されたバッファを大きく超えた位置のポインタを算出してしまいます。これが範囲外へのmemmove操作を引き起こします。動作可能なPoC(概念実証コード)は、意図的にネットワークバッファ構造を破損させます。そのうえで、Dirty Fragに似た手法を用いてメモリデータを操作し、「su」コマンド経由でrootシェルを起動します。
一方、TUNderflowは仮想TUN/TAPネットワークデバイスに関連する脆弱性です。ネットワークパケットデータの前にある利用可能領域の計算が不正確であることに起因します。ヘッドルーム値が過大になると、致命的な整数オーバーフローが発生します。その結果、パケット処理は割り当てられたメモリ境界を完全に逸脱してしまいます。
一方でPPPoEjectは、まったく別の種類のメモリ管理エラーを突くものです。PPPoEのコードは、メモリ再割り当て直後にもかかわらず、ネットワークバッファ内の古いポインタを誤って参照し続けてしまいます。この一連の流れが、危険なuse-after-free脆弱性を実質的に生み出しています。
最後にDiagSpillは、SCTPプロトコルの奥深くに存在しています。ホストアドレスのカウンタは16ビットという限られたフィールドに収められています。悲劇的なことに、このカウンタは65,536番目のトランスポートが追加された時点でゼロにリセットされてしまいます。このオーバーフローの後、カーネルは誤って非常に小さなNetlink応答バッファを確保します。しかし、それでもリスト全体をコピーし続けようとするため、最終的にバッファの限界を大きく超えて約8MBもの書き込みが発生してしまいます。
悪用の細かな条件とリモート攻撃の可能性
今回公開されたこれらのエクスプロイトを、あらゆるLinuxディストリビューションに通用する万能な「rootボタン」だと考えるべきではありません。4つの脆弱性はいずれも、根本的に複雑なメモリ破損に依存しています。そのため攻撃者は、対象となる特定のカーネルバージョン、プロセッサアーキテクチャ、正確なメモリレイアウトに合わせてPoCを綿密に調整する必要があります。DirtyAH6、TUNderflow、PPPoEjectの悪用チェーンは、いずれも非特権ユーザー名前空間へのアクセスを必要とします。しかし、DiagSpillは事情が異なります。SCTPとsctp_diagにアクセス可能な状態であれば、このエクスプロイトはユーザー名前空間も特別な権限(capability)も必要としません。Manizada氏による広範なテストの中では、前提条件さえ満たされれば、SELinuxやAppArmorといった堅牢なセキュリティモジュールであっても悪用を阻止できませんでした。
これらの脆弱性の一部は、限定的ながらリモート攻撃の可能性も秘めています。具体的には、DirtyAH6は、トランスポートモードでAHを追加するIPv6ルーターとして機能しているLinuxマシンに対して、リモートからクラッシュを引き起こすことができます。Manizada氏は、管理された自身の検証環境において、入念なメモリ準備を行った上でリモートでのroot権限取得にも成功しています。とはいえ同氏は、実環境における完全なリモート悪用は極めて難しいとの見解を示しています。
必須の緩和策と保護のための対策
このLPEカルテットに対する第一の防御策は、直ちにカーネルを更新することです。4つの重要なパッチすべてを組み込んだ最も早い安定版は、Linux 5.10.270、5.15.221、6.1.188、6.6.157、6.12.109、6.18.50、7.2.4です。非特権ユーザー名前空間を無効化すれば、一般ユーザーによる最初の3つの脆弱性の悪用を効果的に防ぐことができます。しかし、この緩和策はDiagSpillに対してはまったく効果がありません。AH6、TUN、PPPoE、SCTPの各機能が自分のシステムで不要であれば、管理者はこれらの機能を完全に無効化しておくべきです。突き詰めれば、これら4つの脆弱性が持つ驚くべき「古さ」は、長年存在し続けてきたというだけの理由でレガシーなカーネルコードを安全だと決めてかかることが、いかに危険であるかを如実に物語っています。
翻訳元: https://meterpreter.org/ancient-linux-kernel-flaws-root-exploits/