Linux

複数の Linux カーネル バージョンに影響を及ぼし、「最小限の機能」で引き起こされる可能性がある深刻な脆弱性に関する技術情報が明らかになりました。このセキュリティ問題は StackRot (CVE-2023-3269) と呼ばれており、カーネルを侵害し、特権を昇格させるために使用される可能性があります。

影響を受ける安定したカーネルには 7 月 1 日からパッチが提供されており、この問題に関する完全な詳細と完全なエクスプロイト コードは今月末までに公開される予定です。

セキュリティ研究者の Ruihan Li 氏がこの脆弱性を発見し、報告しました。同氏は今日の投稿で、カーネルのメモリ管理サブシステム、仮想メモリとデマンドページングの実装、カーネルのニーズとユーザー空間プログラムのメモリ割り当て、およびプロセスのアドレスへのファイルのマッピングを担当するコンポーネントに影響を与えると説明した。空。

StackRot は、Linux バージョン 6.1 ~ 6.4 のすべてのカーネル構成に影響を与えます。

Li 氏は 6 月 15 日に脆弱性レポートを送信しましたが、その複雑さのため修正の作成にはほぼ 2 週間かかり、Linus Torvalds 氏がその取り組みを主導しました。

「6 月 28 日、Linux カーネル 5.5 のマージ期間中に、この修正は Linus のツリーにマージされました。Linus は、技術的な観点からパッチ シリーズを説明するための包括的なマージ メッセージを提供しました。これらのパッチは、その後、安定したカーネル (6.1.5.5) にバックポートされました。 37、6.3.11、および 6.4.1) を適用し、7 月 1 日に「Stack Rot」バグを効果的に解決しました」と研究者は明らかにしました

スタックロットの詳細

StackRot は、仮想メモリ領域 (VMA) の管理に関連した、メモリ管理サブシステム内での Linux カーネルのスタック拡張の処理から発生します。

具体的には、弱点は「メープル ツリー」にあります。これは、Linux カーネル 6.1 で導入された VMA の新しいデータ構造システムで、「赤黒ツリー」に代わるもので、読み取り、コピー、更新 (RCU) メカニズムに依存していました。

この脆弱性は、スタック拡張の処理方法に起因する use-after-free (UAF) 問題です。これは、メイプル ツリーがメモリ管理 (MM) 書き込みロックを取得せずにノードを置き換える可能性があるためです。

Linux カーネルがスタックを拡張して VMA 間のギャップを削除すると、「メープル ツリー」に新しいノードが作成され、メープル ツリーの RCU 安全性により、現在の読み取りが終了した後、古いノードは削除対象としてマークされます。

ただし、RCU 猶予期間中に、プロセスが古いノードにアクセスすると、解放後の使用の問題が発生する可能性があり、そのため、特権を昇格するための悪用可能なコンテキストが作成されます。

Linux カーネルの StackRot 問題により、Use-After-Free (UAF) 脆弱性が発生する、マルチ CPU システムでの競合状態シナリオ
マルチ CPU システムでの競合状態により、解放後の使用に欠陥が生じる(github.com/lrh2000)

エクスプロイトが来る

Ruihan Li 氏は、StackRot の悪用は困難な作業であり、CVE-2023-3269 は理論的に悪用可能な RCU (UAFBR) 脆弱性の最初の例である可能性があると述べています。

ただし、研究者は、StackRot に関する完全な技術的詳細と概念実証 (PoC) エクスプロイトを 7 月末までに公開する計画を発表しました。

Linux カーネル 6.1 は、2 月から長期サポート (LTS) バージョンとして承認されました。ただし、すべての主要な Linux ディストリビューションがこれを採用しているわけではありません。

たとえば、2027 年 4 月に標準サポートが終了する Ubuntu 22.04.2 LTS (Jammy Jellyfish) には、Linux カーネル バージョン 5.19 が同梱されています。一方、Debian 12 (Bookworm) には Linux カーネル 6.1 が付属しています。

ユーザーは、Linux ディストリビューションが実行されているカーネル バージョンを確認し、StackRot の影響を受けないもの、または修正を含む更新リリースを選択する必要があります。