Linux核心中TIPC協定實現的遠端漏洞

Linux 核心中提供的 TIPC(透明進程間通訊)網路協定的實作中已發現一個嚴重漏洞 (CVE-2021-43267),該漏洞可讓您透過傳送專門設計的網路套件。由於攻擊需要在系統中明確啟用 TIPC 支援(載入和配置tipc.ko 核心模組),因此緩解了該問題的危險,而在非專用 Linux 發行版中預設不會這樣做。

Linux核心3.19開始支援TIPC協議,但導致漏洞的程式碼包含在內核5.10中。該漏洞已在內核 5.15.0、5.10.77 和 5.14.16 中修復。該問題在 Debian 11、Ubuntu 21.04/21.10、SUSE(尚未發布的 SLE15-SP4 分支)、RHEL(尚未詳細說明漏洞修復是否已向後移植)和 Fedora 中出現且尚未修復。 Arch Linux 的核心更新已經發布。核心版本早於 5.10 的發行版(例如 Debian 10 和 Ubuntu 20.04)不受該問題的影響。

TIPC協定最初由愛立信開發,旨在組織叢集中的進程間通信,主要在叢集節點上啟動。 TIPC 可以透過乙太網路或 UDP(網路連接埠 6118)運作。 當透過乙太網路工作時,可以從本地網路進行攻擊;當使用 UDP 時,如果連接埠未被防火牆覆蓋,則可以從全球網路進行攻擊。 主機的非特權本機使用者也可以執行該攻擊。 要啟動 TIPC,您需要下載tipc.ko 核心模組並使用netlink 或tipc 實用程式配置與網路介面的綁定。

此漏洞表現在tipc_crypto_key_rc函數中,是由於在解析MSG_CRYPTO類型的資料包時,沒有正確驗證標頭中指定的資料與資料的實際大小之間的對應關係而導致的,該類型用於從其他節點獲取加密金鑰以便對從這些節點發送的訊息進行後續解密。複製到記憶體中的資料大小是根據訊息大小和標頭大小的欄位值之間的差值計算的,但不考慮加密演算法名稱和訊息內容的實際大小。訊息中傳輸的金鑰。假設演算法名稱的大小是固定的,並且為密鑰額外傳遞一個帶有大小的單獨屬性,攻擊者可以在該屬性中指定一個與實際不同的值,這將導致寫入訊息尾部超出了分配的緩衝區。 structtipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME];無符號整數 keylen; /* 以位元組為單位 */ char key[]; };

Linux核心中TIPC協定實現的遠端漏洞


來源: opennet.ru

添加評論