网络安全研究人员披露了最近修补的 Citrix NetScaler ADC 和 Gateway 中一个关键安全漏洞的技术细节,该漏洞已在野外被积极利用。
该漏洞被追踪为 CVE-2026-88772(CVSS 分数:9.5),被描述为 Datagram Transport Layer Security (DTLS) 协议处理中的内存溢出错误,根源于 NetScaler Packet Processing Engine (NSPPE)。
美国网络安全和基础设施安全局 (CISA) 表示:“Citrix NetScaler ADC 和 NetScaler Gateway 存在对内存缓冲区边界内操作的不当限制漏洞,这可能允许远程代码执行或拒绝服务。”
根据 watchTowr 的说法,NetScaler 隐式信任 DTLS 握手头部的 fragment_length 字段中声明的片段大小(即 1 字节),而头部同时声称完整消息的长度字段为 120 字节。
这种解析不一致性可以被攻击者利用,制作一个恶意记录,使记录看起来很小,而实际复制到缓冲区的数据则大得多,导致溢出。
“例如,一个 120 字节的握手消息可以以 120 个片段到达。每个片段的长度=120,但每个片段的 fragment_length=1,”安全研究员 Sina Kheirkhah 解释道。“它们的偏移量将是 0、1、2,依此类推,直到 119。一旦每个位置都到达,服务器就认为 120 字节的消息已完成。将这些片段组合在一起称为重组。”
每个接收的 1,459 字节的数据包存储在 NetScaler Buffers (NSBs) 中,然后被拼接成一个仅有 35,840 字节的单一临时缓冲区。由于易受攻击的版本未检查下一个数据包是否可以适合临时缓冲区,数据被写入缓冲区末尾之外,导致缓冲区溢出。
“Kheirkhah 说:“恶意记录告诉重组代码,每个记录仅提供一个 120 字节握手消息的字节。然而,NSPPE 在 NSB 中保留几乎整个记录。在 120 个记录之后,握手消息被认为是完整的,但其 NSB 链中包含约 174 KB 的数据。”
watchTowr 的分析进一步发现,这种溢出可以被武器化,以通过使用 mprotect() 系统调用来转移控制流到具有根级权限的任意 shellcode,从而击败 NX(不可执行)保护。
该披露是在预防性暴露管理公司发布 CVE-2026-88771 的概念验证 (PoC) 一天后,该漏洞在现实世界攻击中与 CVE-2026-88772 一起被滥用。
觉得这篇文章有趣吗?请在 Google News、Twitter 和 LinkedIn 上关注我们,以阅读我们发布的更多独家内容。