Linux Kernel Vulnerability Exposes Local Systems to Privilege Escalation, PoC Published
2025/04/07 SecurityOnline — 先日のことだが、Linux Kernel の Performance Events システム・コンポーネントに存在する、脆弱性 CVE-2023-6931 (CVSS:7.8) の技術的詳細と PoC エクスプロイト・コードを、あるセキュリティ研究者が公開した。この脆弱性は、ヒープ領域外書き込みの欠陥だと説明されており、影響を受ける Linux システムにおいて、ローカル権限昇格に悪用される可能性があるという。

この脆弱性は、perf_eventのread_format において PERF_FORMAT_GROUP フラグを使用する際の、イベント・グループを処理する方法に起因する。このフラグを使用すると、複数の Performance Counter を一括で読み取り、単一のリーダーの下にグループ化することが可能になる。ただし、カーネルとしては、読み取るデータのサイズを u16 の read_size で追跡するため、グループ化されるイベントが多すぎるとオーバーフローが引き起こされるという。
その一方で、perf_read_group() 関数は、イベントの read_size を用いてバッファを割り当てる。続いて、sibling_list を反復処理して、このバッファ内の連続する u64 エントリをインクリメントし、場合によっては書き込みも行う。その際に、read_size の整数オーバーフローにより、perf_read_group() は割り当てられたヒープバッファ外のメモリをインクリメントし、そこに書き込んでいく。
公開された PoC エクスプロイトは、netlink ソケット・オブジェクトを用いたメモリ・レイアウトを、このヒープ・スプレーで標的としている。具体的に言うと、脆弱なバッファの直前に netlink_sock を割り当てることで、このエクスプロイトは、ソケット・オブジェクト内の2つの関数ポインタをインクリメントする。
この研究者は、「変更されたポインタの1つは、Kernel Address Space Layout Randomization (KASLR) を回避するために呼び出され、もう1つは、以前に脆弱な配列が占有していたスロットに配置された、ROP チェーンを実行するために呼び出される」と記している。
これにより、以下のような悪用が生じる:
- Kernel Address Space Layout Randomization (KASLR) のバイパス
- ROP ベースの権限昇格による、ルートシェル・アクセスの取得
この脆弱性は、Linux Kernel 3.16 (2014年リリース) 以降に存在し、コミット fa8c269353d5 で混入したようだ。その後、Kernel バージョン 6.7 (コミット 382c27f4ed28) により完全に修正された。
この脆弱性に関する詳細な技術情報と PoC エクスプロイト・コードは、GitHub で公開されている。今回の公開により、脆弱性 CVE-2023-6931 のリスクが高まっている。特に、パブリックなホスティング環境/CTF コンテストなどの、権限のないユーザーによるアクセスが許可される環境での、悪用の機会が懸念される。
Linux ユーザーと管理者にとって必要なことは、脆弱性 CVE-2023-6931 を修正するカーネル・バージョンを、自身のシステムが実行していることの確認である。また、それ以前のバージョンの場合には、適切なパッチを適用する必要がある。ローカルでの権限昇格の可能性を考慮すると、タイムリーなパッチ適用により、この脆弱性がもたらすリスクを軽減することが不可欠となる。
Linux Kernel の脆弱性 CVE-2023-6931 に対する PoC が公開されました。先月および先々月には、Linux Kernel の他の脆弱性が実環境での悪用が確認され、CISA の KEV カタログにも登録されています。ご利用のチームは、パッチ適用を忘れないよう、ご注意ください。よろしければ、以下の関連記事も、Linux Kernel で検索と併せて、ご参照ください。
2025/03/04:Linux kernel などの4件の脆弱性が CISA KEV に登録
2025/02/05:Linux Kernel の CVE-2024-53104 が CISA KEV に登録
You must be logged in to post a comment.