遠程利用 FreeBSD ping 實用程序中的 root 漏洞

在 FreeBSD 中,基本發行版中包含的 ping 實用程式中發現了一個漏洞 (CVE-2022-23093)。 當對攻擊者控制的外部主機執行 ping 操作時,該問題可能會導致以 root 權限遠端執行程式碼。 FreeBSD 更新 13.1-RELEASE-p5、12.4-RC2-p2 和 12.3-RELEASE-p10 中提供了修復。 目前尚不清楚其他 BSD 系統是否受到已識別漏洞的影響(目前還沒有 NetBSD、DragonFlyBSD 和 OpenBSD 中的漏洞報告)。

此漏洞是由為回應驗證請求而接收的 ICMP 訊息的解析程式碼中的緩衝區溢位所引起的。 在 ping 中傳送和接收 ICMP 訊息的程式碼使用原始套接字並以提升的權限執行(該實用程式帶有 setuid root 標誌)。 透過重建從原始套接字接收的封包的 IP 和 ICMP 標頭,在 ping 端處理回應。 選定的 IP 和 ICMP 標頭由 pr_pack() 複製到緩衝區中,而不考慮封包中 IP 標頭之後可能存在的附加擴充標頭。

此類標頭從資料包中提取並包含在標頭區塊中,但在計算緩衝區大小時不予考慮。 如果主機回應傳送的 ICMP 請求,傳回具有附加標頭的資料包,則其內容將被寫入堆疊上緩衝區邊界之外的區域。 因此,攻擊者可以覆蓋堆疊上最多 40 個位元組的數據,從而可能允許其程式碼執行。 當錯誤發生時,進程處於系統呼叫隔離(能力模式)狀態,這使得利用漏洞後很難存取系統的其餘部分,從而減輕了問題的嚴重性。

來源: opennet.ru

添加評論