內核網路協定棧中的漏洞(CVE-2023-6200)資訊已公開。 Linux在某些情況下,攻擊者可以透過傳送特製的 ICMPv6 封包來執行本地網路上的程式碼,該封包包含一個 RA(路由器通告)訊息,旨在通告有關路由器的資訊。
該漏洞只能從本機網路使用,並且出現在啟用了 IPv6 支援且 sysctl 參數「net.ipv6.conf.<網路介面名稱>.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, UbuntuSUSE、RHEL、Fedora、Arch LinuxGentoo、Slackware 等發行版也值得一提。在提供 6.6 核心軟體套件的發行版中,Arch 也值得一提。 Linux在 Gentoo、Fedora、Slackware、OpenMandriva 和 Manjaro 等發行版中,此變更可能會被錯誤地移植到使用較舊核心分支的軟體包中(例如,在…中)。 Debian (據稱存在漏洞的軟體包包含在內核 6.5.13 中,而有問題的變更是在 6.6 分支中引入的。)作為一種解決方法,您可以停用 IPv6 或將「net.ipv6.conf.*.accept_ra」參數的值設為 0。
來源: opennet.ru
