最近 マイクロソフトが示した関心についてのニュースをブログで共有します サブシステムについて eBPF、 LinuxのeBPFチェッカーと比較して、より低い誤検出率を示し、ループ分析をサポートし、優れたスケーラビリティを提供する、抽象解釈静的分析方法を使用するWindows用のサブシステムを構築したため。
この方法では、既存のeBPFプログラムの分析から得られた多くの典型的なパフォーマンスパターンが考慮されます。 このeBPFサブシステム バージョン3.18以降、Linuxカーネルに含まれています。 着信/発信ネットワークパケットの処理、パケットの転送、帯域幅の制御、システムコールの傍受、アクセスの制御、および追跡の実行を可能にします。
そしてそれはそれについて話しているのですか、最近明らかになった XNUMXつの新しい脆弱性が特定されました サブシステム内 eBPF。これにより、特別なJIT仮想マシンのLinuxカーネル内でドライバーを実行できます。
どちらの脆弱性も、カーネル権限でコードを実行する機会を提供します。 分離されたeBPF仮想マシンの外部。
情報 問題について ゼロデイイニシアチブチームによって公開されました、 これはPwn2Ownコンペティションを実行し、今年はUbuntu Linuxに対するXNUMXつの攻撃が実証され、これまで知られていなかった脆弱性が使用されました(eBPFの脆弱性がこれらの攻撃に関連している場合は報告されません)。
eBPF ALU32がビット演算(AND、OR、および XOR)32ビット制限は更新されませんでした。
RedRocket CTFチーム(@redrocket_ctf)のManfred Paul(@_ manfp)が彼と協力していますトレンドマイクロのゼロデイイニシアチブは、この脆弱性を発見しました カーネルで範囲外の読み取りと書き込みに変換できます。 これはされています ZDI-CAN-13590として報告され、CVE-2021-3490が割り当てられました。
- CVE-2021-3490: この脆弱性は、eBPF ALU32でビット単位のAND、OR、およびXOR演算を実行するときに、32ビット値の範囲外検証がないために発生します。 攻撃者はこのバグを利用して、割り当てられたバッファの制限外でデータを読み書きできます。 XOR演算の問題は、カーネル5.7-rc1以降、およびANDとORは5.10-rc1以降に発生しています。
- CVE-2021-3489: この脆弱性は、リングバッファの実装のバグが原因で発生し、bpf_ringbuf_reserve関数が、割り当てられたメモリ領域のサイズがringbufバッファの実際のサイズよりも小さい可能性をチェックしなかったという事実に関連しています。 この問題は、5.8-rc1のリリース以降明らかです。
さらに、 Linuxカーネルの別の脆弱性も観察できます:CVE-2021-32606、これ ローカルユーザーが自分の特権をルートレベルに昇格できるようにします。 この問題は、Linuxカーネル5.11以降に発生し、CAN ISOTPプロトコルの実装における競合状態が原因で発生します。これにより、iで適切なロックが構成されていないため、ソケットバインディングパラメータを変更できます。sotp_setsockopt() フラグが処理されるとき CAN_ISOTP_SF_BROADCAST.
一度 ソケット、ISOTP レシーバーソケットにバインドし続けます。レシーバーソケットは、関連付けられたメモリが解放された後も、ソケットに関連付けられた構造体を引き続き使用できます(構造体呼び出しによる解放後の使用) isotp_sock 電話するとすでにリリースされていますsotp_rcv()。 データを操作することで、関数へのポインタを上書きできます sk_error_report() カーネルレベルでコードを実行します。
ディストリビューションの脆弱性の修正状況は、次のページで追跡できます。 Ubuntu, Debianの, RHEL, フェドーラ, SUSE, アーチ).
修正はパッチ(CVE-2021-3489およびCVE-2021-3490)としても入手可能です。 問題の悪用は、ユーザーがeBPFシステムを呼び出すことができるかどうかによって異なります。 たとえば、RHELのデフォルト設定では、この脆弱性を悪用するには、ユーザーがCAP_SYS_ADMIN権限を持っている必要があります。
最後に あなたがそれについてもっと知りたいのなら、 詳細を確認できます 次のリンクで。