io_uring の脆弱性により、権限のないユーザーがコンテナー内でも root になることができました

最近 脆弱性情報公開(CVE-2022-29582) バージョン 5.1 以降の Linux カーネルに含まれている io_uring 非同期 I/O インターフェイスの実装では、コンテナーのエクスプロイトを実行している場合でも、特権のないユーザーがシステムのルートになることができます。

言及する価値があります 脆弱性が 3 か月以上前に報告されたと述べた (今年のおよそ XNUMX 月初旬)、完全な情報と開示が最近リリースされたばかりです。

脆弱性に関しては、これが言及されています すでに解放されているメモリのブロックにアクセスするときに発生します、5.10ブランチ以降のLinuxカーネルで現れます。

脆弱性についてCVE-2022-29582

この脆弱性 解放されたメモリへのアクセスを許可します io_flush_timeouts() 関数でタイムアウトを処理する際の競合状態の結果として、e はタイムアウト エントリを削除します その時点でのタイムアウトの作成と削除を確認せずに、リストから削除してキャンセルします。

io_uring の更新された一般的な説明は、他のユーザーによって既に提供されています。 彼らはそれを私たちよりも XNUMX 倍よく説明しているので、サブシステムをより広範囲にカバーするだけにとどめます (優れた紹介については、この Grapl セキュリティの記事とこの Flatt セキュリティの記事を参照してください)。

さらに重要なことは、 opcode フィールドは、実行する操作のタイプを決定します。 それを必要とする「オペコード」ごとに、fd フィールドは、要求された I/O を実行するファイル記述子を指定します。 ほとんどすべての通常の I/O システム コール (read、sendto など) には、同等の非同期オペコードがあります。 各フィールドは、操作に応じて異なる役割を担うことができます。

SQ から取得されると、SQE は struct io_kiocb(kernel input/output call back) によって記述される内部表現に変換されます。 これらのオブジェクトは、一般にリクエストとして知られています。

struct io_kiocb は、それが基づいている SQE "ready-for-launch" に相当するものとして使用されます。これにより、任意のファイル記述子が struct file*s に解決され、ユーザー資格情報が添付され、パーソナリティ (コアが実行される) など.

要求された操作が完了すると、完了キューに書き込まれます (CQ) SQE に対応するエントリ。 このようなエントリーは、完了キュー・エントリー (CQE) と呼ばれ、エラー・コードや結果値などのフィールドが含まれています。 ユーザー空間アプリケーションは、新しいエントリがないか CQ をポーリングして、送信された SQE の処理が終了したかどうか、およびその結果が何であったかを判断できます。

と言われています オブジェクトを簡単に置き換えることができるシナリオがいくつかあります 進行状況について。 ただし、次の XNUMX つの制限があります。

  • LT' は、レース ウィンドウで割り当てて初期化する必要があります。 つまり、LT が解放された後、LT 内のアクセスされなくなったポイントに到達する前です。
  • LT' は、別の struct io_kiocb オブジェクトにすることしかできません。 ヒープ内のオブジェクトがタイプに応じて分離されるヒープ分離により、競合ウィンドウ内で別のタイプのオブジェクトとしてそれらを再割り当てすることは非常に困難です。

研究者は機能的なエクスプロイトを準備しました これは、操作にユーザー識別子の名前空間 (ユーザー名前空間) を含める必要がなく、権限のないユーザーが隔離されたコンテナーでエクスプロイトを起動したときに、ホストへのルート アクセスを提供できます。

私たちのエクスプロイトは、Google が当時リモートで実行していたカーネル バージョン 5.10.90 を標的にしています。 サーバーの特定の仕様 (4 つの Skylake Xeon コア @ 2.80Ghz、16GiB RAM) に合わせてエクスプロイトを調整する必要がありましたが、微調整を行うことで、脆弱なカーネルを実行しているすべてのマシンがエクスプロイト可能になるはずです。

エクスプロイトは nsjail 環境でも機能します Chromium OS に基づく Google COS (Container Optimized OS) ディストリビューションで分離され、Compute Engine 仮想マシン上の Google Cloud Platform で使用されます。 このエクスプロイトは、5.10 から 5.12 までのカーネル ブランチで機能するように設計されています。 最後に特筆すべきは、 この問題は、5.10.111 月の更新プログラム 5.15.34、5.17.3、および XNUMX で修正されました。

最後に、脆弱性について詳しく知りたい場合は、作成された出版物を参照してください。 次のリンクで。


コメントを最初に

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。