eBPF 子系統中允許在 Linux 核心層級執行程式碼的漏洞

eBPF 子系統中發現了兩個新漏洞,該子系統可讓您使用 JIT 在特殊虛擬機器中的 Linux 核心中執行處理程序。 這兩個漏洞都使得您可以在隔離的 eBPF 虛擬機器之外以核心權限執行程式碼。 有關這些問題的資訊由負責舉辦 Pwn2Own 競賽的 Zero Day Initiative 團隊發布,在競賽中,今年針對 Ubuntu Linux 的三起攻擊被證明使用了以前未知的漏洞(eBPF 中的漏洞是否與這些攻擊有關) 。

  • CVE-2021-3490 - 此漏洞是由於在 eBPF ALU32 中執行位元 AND、OR 和 XOR 運算時缺乏 32 位元越界檢查而導致的。 攻擊者可以利用此錯誤在分配的緩衝區範圍之外讀取和寫入資料。 XOR 運算的問題從核心版本 5.7-rc1 開始出現,AND 和 OR 運算的問題從 5.10-rc1 開始出現。
  • CVE-2021-3489 - 此漏洞是由環形緩衝區實作中的錯誤引起的,並且是由於 bpf_ringbuf_reserve 函數沒有檢查分配的記憶體區域的大小可能小於實際大小的可能性環緩衝區的。 問題從 5.8-rc1 版本開始出現。

可以在以下頁面上追蹤發行版中修補漏洞的狀態:Ubuntu、Debian、RHEL、Fedora、SUSE、Arch)。 修復程序也可以作為補丁提供(CVE-2021-3489、CVE-2021-3490)。 該問題是否可以被利用取決於使用者是否可以存取 eBPF 系統呼叫。 例如,在RHEL的預設設定中,利用該漏洞需要使用者俱有CAP_SYS_ADMIN權限。

另外,我們還可以注意到 Linux 核心中的另一個漏洞 - CVE-2021-32606,該漏洞允許本地用戶將權限提升到 root 等級。 這個問題從 Linux 核心 5.11 開始就很明顯,是由 CAN ISOTP 協定實作中的競爭條件引起的,由於在 isotp_setsockopt() 函數中缺少設定正確的鎖,因此可以更改套接字綁定參數處理CAN_ISOTP_SF_BROADCAST 標誌時。

ISOTP套接字關閉後,與接收套接字的綁定仍然有效,在與套接字關聯的記憶體被釋放後,可以繼續使用與套接字關聯的結構(由於呼叫isotp_rcv()而導致釋放後使用)存取已釋放的 isotp_sock 結構)。 透過資料操作,您可以覆寫 sk_error_report() 函數的指標並在核心層級執行程式碼。

來源: opennet.ru

添加評論