網路安全研究人員揭露了 Citrix NetScaler ADC 和 Gateway 中一項近期已獲修補的嚴重安全漏洞的技術細節,該漏洞已被用於野外攻擊。

此漏洞追蹤代碼為 CVE-2026-88772(CVSS 評分為 9.5),被描述為 NetScaler 封包處理引擎(NSPPE)中 Datagram Transport Layer Security (DTLS) 協定處理的記憶體溢位錯誤。

美國網路安全和基礎設施安全局(CISA)表示:「Citrix NetScaler ADC 和 NetScaler Gateway 包含記憶體緩衝區邊界內操作限制不當的漏洞,可能允許遠端程式碼執行或阻斷服務。」

根據 watchTowr 的說法,問題在於 NetScaler 隱含地信任 DTLS 握手標頭中 fragment_length 欄位宣告的片段大小(即 1 位元組),但同時標頭又聲稱,由 length 欄位表示的完整訊息長度為 120 位元組。

這種解析不一致性可能被攻擊者利用來構造惡意記錄,使其看起來很小,而實際複製到緩衝區的資料卻大得多,從而導致溢位。

安全研究員 Sina Kheirkhah 解釋說:「例如,一個 120 位元組的握手訊息可以作為 120 個片段到達。每個片段的長度為 120,但每個片段的 fragment_length 可能為 1。它們的偏移量將是 0、1、2,依此類推,直到 119。一旦所有片段都到達,伺服器就會認為 120 位元組的訊息已完成。將這些片段組合起來稱為重組。」

每個接收到的 1,459 位元組的封包會儲存在 NetScaler 緩衝區(NSBs)中,然後被縫合成一個僅 35,840 位元組的單一暫存緩衝區。由於易受攻擊的版本不會檢查下一個封包是否能放入暫存緩衝區,資料就會寫入緩衝區的末端之外,導致緩衝區溢位。

Kheirkhah 表示:「惡意記錄告知重組程式碼,每個記錄僅提供 120 位元組握手訊息中的一個位元組。然而,NSPPE 會將幾乎整個記錄保留在 NSB 中。在 120 個記錄之後,握手訊息被認為已完成,但其 NSB 鏈包含約 174 KB 的資料。」

watchTowr 的分析進一步發現,可以利用此溢位,透過使用 mprotect() 系統呼叫來繞過 NX(禁止執行)保護,將控制流程轉移到具有 root 級別權限的任意 shellcode。

Citrix NetScaler 零時差漏洞 CVE-2026-88772 攻擊細節揭露:無需驗證即可執行 ShellcodeCitrix NetScaler 零時差漏洞 CVE-2026-88772 攻擊細節揭露:無需驗證即可執行 ShellcodeCitrix NetScaler 零時差漏洞 CVE-2026-88772 攻擊細節揭露:無需驗證即可執行 ShellcodeCitrix NetScaler 零時差漏洞 CVE-2026-88772 攻擊細節揭露:無需驗證即可執行 Shellcode