幾天之前e 發布了有關發現漏洞的消息 子系統 網絡過濾器 (用於攔截和操縱網路資料包),該漏洞 編目為 CVE-2023-6817 它的嚴重性評分為 7.8,代表著需要考慮的威脅,因為它允許本地用戶升級其在系統上的權限。
Netfilter 是一個關鍵元件,充當看門人的角色,管理網路堆疊中的資料包流並促進各種操作,例如修改地址、丟棄資料包和記錄活動。
有人提到 失敗可能會導致釋放後使用的情況,一種危險的場景,系統在釋放內存後繼續使用內存,這為攻擊者利用該故障創造了條件,還可能導致應用程序崩潰、信息洩露,或者換句話說,更令人擔憂的是升級的本地特權。
脆弱性 從 Linux 核心版本 5.6 開始出現 (不包括 Linux 5.10.204),以及 Linux 5.11(不含 Linux 5.15.143)、Linux 5.16(不含 Linux 6.1.68)、Linux 6.2(不含 6.6.7)以及 RC1、2、3 和Linux 4的6.7 版(儘管後者已經發布了其穩定版本,但該漏洞自RC5 以來已解決)。
關於這個問題,有提到 我知道這是由於 nf_tables 模組中免費使用後的記憶體存取造成的, 這是由 nftables 封包過濾器提供的,是由於一個錯誤造成的 在 nft_pipapo_walk 函數中, 由於元素迭代的過程 PIPAPO (堆包策略) 在對其進行操作之前不驗證元素的活動,l或可能導致釋放後使用漏洞。
其他集合後端中的nft_rhash_walk() 函數在集合遍歷期間也不會跳過不活動的元素,因此,可以在事務中呼叫NFT_MSG_DELSETELEM 命令兩次,以刪除該集合中的每個元素兩次,從而導致雙重釋放 1
如果後端是 pipapo 數組,則會呼叫 nft_pipapo_walk()。此函數在操作元素之前不會檢查元素的活動,就像其他集合後端中的類似函數一樣,例如 nft_rhash_walk()。因此,可以在交易中呼叫 NFT_MSG_DELSETELEM 命令兩次,以刪除該集合中的每個元素兩次,從而導致雙重釋放。
此外,也提到,要讓漏洞利用過程成功, 此攻擊需要存取nftables,可以透過擁有CAP_NET_ADMIN權限來獲得 在任何使用者命名空間或網路命名空間中,例如可以在隔離容器中提供。為了演示漏洞,已發布原型漏洞進行測試。
最後,應該提到的是 該裁決早在披露前就已解決, 因為正如我們所提到的, Linux核心6.7-rc5的測試版本中提出了對此漏洞的修復。 並遷移到目前穩定的 Linux 分支 5.10.204、5.15.143、6.1.68 和 6.6.7。
據稱,該解決方案涉及對「nft_pipapo_walk」函數的操作模式進行一些更改,因為為了解決該錯誤,它必須在已建立的遍歷期間省略不活動的元素。這種方法有效地防止了PIPAPO(Pile Packet Policies)元素的雙重停用,從而消除了發布後使用的情況。
最後但並非最不重要的一點是,正如我們一貫所做的那樣,我們建議所有親愛的讀者實施相關的修正,因為雖然該漏洞很難被遠端利用,但實施相應的修正總沒有壞處。
如果你是 有興趣了解更多關於它的信息, 您可以在中查看詳細信息 以下鏈接。對於有興趣測試漏洞原型的人,可以參考這個程式碼 在下面的鏈接中。