数日前にニュースがリリースされました Netfilterに脆弱性が確認されました (ネットワークパケットのフィルタリングと変更に使用されるLinuxカーネルサブシステム)、 ローカルユーザーがroot権限を取得できるようにします システム内断熱容器に入っていても。
CVE-2021-22555の脆弱性 これはカーネル2.6.19以降に発生している問題です。、15年前に発売され、 ドライバーのバグが原因 IPT_SO_SET_REPLACEおよびIP6T_SO_SET_REPLACE、 これにより、compatモードでsetsockopt呼び出しを介して特別に装飾されたパラメーターを送信すると、バッファーオーバーフローが発生します。
おそらくこの時点で多くの人が、Linuxカーネルの欠陥が長い間見過ごされてしまう可能性があるのではないかと疑問に思うでしょう。その答えは、Linux 2.6.19以降に存在していた欠陥にもかかわらず、脆弱性はコードを通じて発見されたということです。監査は、Cコードが再現可能でなかったとしても、特権をエスカレートするために必要なリソースがその時点で見つからなかったため、悪用できませんでした。
たとえば、非特権ユーザー名前空間のサポートはカーネル3.8にあります。 また、一部のディストリビューションには、特権のないユーザー名前空間を無効にするsysctlを追加するパッチがあります。
通常の状況では、rootユーザーのみがcompat_setsockopt()を呼び出すことができます。しかし 必要な権限 攻撃を実行するには また、特権のないユーザーが取得することもできます ユーザー名前空間が有効になっているシステム。
CVE-2021-22555は、Linux Netfilterの15年前のスタックからのスタック書き込みの脆弱性であり、最新のセキュリティ緩和策をすべて回避し、カーネルコードの実行を実現するのに十分強力です。
そのため、次のように説明されています。 ローカルユーザーは、別のrootユーザーでコンテナーを作成し、そこから脆弱性を悪用することができますNS。 たとえば、「ユーザー名前空間」はデフォルトでUbuntuとFedoraに含まれていますが、DebianとRHELには含まれていません。
この脆弱性は、部分的に上書きすることで悪用される可能性があります
m_list->next
ポインタmsg_msg
構造と使用後の無料を実現します。 これは、KASLR、SMAP、およびSMEPをバイパスしてカーネルコードを実行するのに十分強力です。
また、32ビットから64ビット表現への変換後にカーネル構造を保存する際のメモリサイズの計算が正しくないため、xt_compat_target_from_user()関数で問題が発生します。
そのため、 このエラーにより、バッファ外の任意の位置にXNUMXつの「ゼロ」バイトを書き込むことができます。 割り当てられ、オフセット0x4Cによって制限されます。 このため、 この機能は、エクスプロイトを作成するのに十分であることが判明しました これにより、ルート権限を取得できます。msg_msg構造体のm_list-> nextポインターを削除することにより、メモリを解放した後にデータにアクセスするための条件が作成され(use-after-free)、アドレスと変更に関する情報を取得するために使用されました。 msgsnd()システムコールを操作して他の構造体に移動します。
エラーレポートに関しては、検出された他の脆弱性と同様に、これにはXNUMX月にカーネル開発者に作成されたプロセスとレポートが含まれ、その後数日で修正され、サポートされているすべてのディストリビューションに含まれるパッチが含まれます。バグに関するその情報は後でリリースできます。
Debian、Arch Linux、およびFedoraプロジェクトは、すでにパッケージアップデートを生成しています。 Ubuntuから、RHELとSUSEのアップデートが進行中です。 エラーは深刻であるため、実際には悪用可能です コンテナからの脱出を可能にし、 グーグルはその発見を$ 10,000と見積もって、報酬をXNUMX倍にしました 脆弱性を特定し、kCTFクラスター上のKubernetesコンテナーの分離を回避する方法を特定した研究者に。
テストのために、エクスプロイトの実用的なプロトタイプが用意されています これは、KASLR、SMAP、およびSMEP保護メカニズムをバイパスします。
最後に あなたがそれについてもっと知りたいのなら、 詳細を確認できます 次のリンクで。