eBPFサブシステムに、カーネル内部でハンドラを実行できる2つの新たな脆弱性が発見されました。 Linux JITコンパイラを搭載した特殊な仮想マシン内で、これらの脆弱性により、隔離されたeBPF仮想マシンの外部でカーネル権限によるコード実行が可能になります。これらの問題については、Pwn2Ownコンテストを運営し、今年3つの攻撃を実証したZero Day Initiativeチームによって公開されました。 Ubuntu Linuxこれは、これまで知られていなかった脆弱性を悪用した攻撃である(eBPFの脆弱性がこれらの攻撃に関連しているかどうかは報告されていない)。
- CVE-2021-3490 - この脆弱性は、eBPF ALU32 でビット単位の AND、OR、および XOR 演算を実行する際の 32 ビット範囲外チェックが欠如していることが原因で発生します。 攻撃者はこのエラーを利用して、割り当てられたバッファの境界外でデータを読み書きする可能性があります。 XOR 演算に関する問題はカーネル バージョン 5.7-rc1 から発生し、AND および OR (AND および OR) は 5.10-rc1 から発生します。
- CVE-2021-3489 - この脆弱性はリング バッファの実装のエラーによって引き起こされ、割り当てられたメモリ領域のサイズが実際のサイズよりも小さくなる可能性を bpf_ringbuf_reserve 関数がチェックしなかったことに起因します。リングバフの。 この問題はリリース 5.8-rc1 以降に発生しています。
ディストリビューションにおける脆弱性修正の状況は、以下のページで確認できます。 Ubuntu, DebianRHEL、Fedora、SUSE、Arch など)。修正はパッチ (CVE-2021-3489、CVE-2021-3490) としても提供されています。悪用できるかどうかは、ユーザーが eBPF システムコールにアクセスできるかどうかに依存します。たとえば、RHEL のデフォルト構成では、脆弱性を悪用するには、ユーザーが CAP_SYS_ADMIN 権限を持っている必要があります。
カーネルにおける別の脆弱性については、別途言及しておく必要がある。 Linux — CVE-2021-32606。この脆弱性により、ローカルユーザーがroot権限に昇格することが可能になります。この問題はカーネル内部で発生します。 Linux 5.11 これはCAN ISOTPプロトコル実装における競合状態が原因で、CAN_ISOTP_SF_BROADCASTフラグを処理する際にisotp_setsockopt()関数で適切なロックが設定されないため、ソケットバインディングパラメータが変更される可能性がある。
ISOTP ソケットが閉じられた後も、受信側ソケットへのバインドは有効なままであり、ソケットに関連付けられたメモリが解放された後も、ソケットに関連付けられた構造体を引き続き使用できます (isotp_sock 構造体の呼び出しによる解放後の使用)これは isotp_rcv() が呼び出されたときにすでに解放されています)。 データ操作を通じて、sk_error_report() 関数へのポインターをオーバーライドし、カーネル レベルでコードを実行できます。
出所: オープンネット.ru
