Linux 核心 IPv6 堆疊中允許遠端執行程式碼的漏洞

關於Linux核心網路堆疊中的漏洞CVE-2023-6200)的資訊已被披露,該漏洞在某些情況下允許來自本地網路的攻擊者透過發送專門設計的ICMPv6封包來實現其程式碼的執行RA(路由器通告)訊息,旨在通告有關路由器的資訊。

該漏洞只能從本地網路利用,並且出現在啟用了IPv6 支援且sysctl 參數“net.ipv6.conf.<network_interface_name>.accept_ra”處於活動狀態的系統上(可以使用命令“sysctl net.ipv6.conf”進行檢查) | grep Accept_ra”) ,在 RHEL 和 Ubuntu 中預設對外部網路介面停用該功能,但對環回介面啟用,從而允許來自同一系統的攻擊。

該漏洞是由垃圾收集器處理過時的 fib6_info 記錄時的競爭條件引起的,這可能導致存取已釋放的記憶體區域(釋放後使用)。當收到帶有路由器通告訊息(RA,Router Advertising)的 ICMPv6 封包時,網路堆疊會呼叫 ndisc_router_discovery() 函數,如果 RA 訊息包含有關路由生存期的信息,則呼叫 fib6_set_expires() 函數並填入 gc_link結構。若要清理過時的條目,請使用 fib6_clean_expires() 函數,該函數會分離 gc_link 中的條目並清除 fib6_info 結構使用的記憶體。在這種情況下,在某個時刻,fib6_info 結構的記憶體已經被釋放,但到它的連結仍然位於 gc_link 結構中。

漏洞從6.6分支開始出現,並在6.6.9和6.7版本中修復。可以在以下頁面評估發行版中修復漏洞的狀態:Debian、Ubuntu、SUSE、RHEL、Fedora、Arch Linux、Gentoo、Slackware。在使用6.6 核心發佈軟體包的發行版中,我們可以注意到Arch Linux、Gentoo、Fedora、Slackware、OpenMandriva 和Manjaro;在其他發行版中,有錯誤的變更可能會反向移植到具有舊核心分支的軟體包中(例如,在 Debian 中,提到核心 6.5.13 的軟體包存在漏洞,而有問題的更改出現在 6.6 分支中)。作為安全解決方法,您可以停用 IPv6 或將「net.ipv0.conf.*.accept_ra」參數設為 6。

來源: opennet.ru

添加評論