Citrix NetScaler又爆内存越读漏洞CVE-2026-8451:披露不到24小时即遭在野利用

导语:Citrix Bleed(内存越读)家族又添新成员。2026年6月30日,Citrix正式发布CVE-2026-8451漏洞公告——又是一个NetScaler在解析SAML认证请求时的内存越读。CVSS 8.8分,影响所有配置为SAML身份提供商的NetScaler ADC和Gateway。漏洞由安全公司watchTowr Labs(就是那个每几个月就要”不小心”从NetScaler里读出一堆内存的团队)于2026年3月发现并报告。然而更讽刺的是——披露不到24小时,攻击者已经在利用它了。


一、漏洞概述:又一个CitrixBleed

CVE-2026-8451( watchTowr 团队称之为”CitrixBleed To Infinity And Beyond”,无限出血)是一个NetScaler ADC和NetScaler Gateway在配置为SAML身份提供商(SAML IDP)时的内存越读漏洞。

Citrix官方描述Insufficient input validation leading to memory overread(输入验证不足导致内存越读)。

基础信息

项目内容
CVE编号CVE-2026-8451
CVSS评分8.8(高危)
影响产品NetScaler ADC / NetScaler Gateway
利用前提必须配置为SAML IDP
认证要求无需认证(预认证)
利用方式发送畸形SAML AuthnRequest
在野利用已确认(Lupovis 6月30日发现)

受影响版本

  • NetScaler ADC & Gateway 14.1 —— 14.1-72.61 之前的版本
  • NetScaler ADC & Gateway 13.1 —— 13.1-63.18 之前的版本
  • NetScaler ADC FIPS —— 14.1-72.61 FIPS 之前的版本
  • NetScaler ADC FIPS & NDcPP —— 13.1-37.272 之前的版本

修复版本

  • 14.1-72.61 及之后版本
  • 13.1-63.18 及之后版本

二、漏洞原理:XML属性解析器的边界失控

这是理解这个漏洞最核心的部分,也是它最有趣的地方。

2.1 问题出在哪里

watchTowr Labs的研究人员在分析今年3月的CVE-2026-3055时,顺藤摸瓜发现了这个同源漏洞。问题出在NetScaler处理SAML AuthnRequest(认证请求)时调用的XML属性解析代码。

Citrix没有使用标准的XML解析库,而是自己写了一段解析逻辑,专门用来提取XML标签中类似foo="bar"这种属性值。结果这段代码有两个致命缺陷:

缺陷一:无边界检查的字符串扫描

解析器在扫描属性值时,没有对输入缓冲区做任何边界检查。如果属性值没有被正确终止(比如缺少引号或换行),解析器会一直读下去,直到遇到特定控制字符才停下。

缺陷二:引号外属性值的特殊处理

在引号内的属性值,会在遇到匹配引号时正常终止。但对于不带引号的属性值,解析器只在遇到NULL字节或>时才停止——换行符(0x0A)不是终止符。

这意味着如果发送这样的请求:

<samlp:AuthnRequest Version="2.0" AssertionConsumerServiceURL=
id=
<saml:Issuer>watchtowr</saml:Issuer>
</samlp:AuthnRequest>

解析器会认为AssertionConsumerServiceURL=后面没有引号包裹的值,于是它会一直读到下一个>才停——而这个>可能出现在很多行之后,甚至在内存的其他位置。

2.2 日志里的证据

watchTowr的研究人员在/var/log/ns.log中直接看到了解析器越读的后果。正常情况下,解析日志应该像这样:

AuthnReq start tag parsed, id=<_99d3e71118f42305e05acb14ad0bd917>,
acs=<http://sp.example.com/demo1/index.php?acs>, forceAuth=<0>, binding=<POST>

但发送畸形请求后,日志变成了这样:

AuthnReq start tag parsed, id=<>, acs=<▒^M▒ᆳ▒="2.0" id="11"
AssertionConsumerServiceURL="22"ᆳ▒mple.com/demo1/index.php</saml:Issuer>,
forceAuth=<0>, binding=<Unknown>

acs字段的值里出现了"2.0" id="11" AssertionConsumerServiceURL="22"这样的二进制数据——这些数据根本不在请求的XML里,是从请求缓冲区之外的内存中读取的。

2.3 数据如何泄露出去

NetScaler在处理SAML请求后,会生成一个NSC_TASS cookie,其中嵌入了从XML解析出的各个字段值。这个cookie通过HTTP响应返回给客户端。

当解析器越读后,超出边界的内存数据会被写入这个cookie——就这样,NetScaler进程内存中的敏感数据被送到了攻击者手上。

watchTowr的PoC脚本成功读取到了0xdeadbeef填充模式和疑似内存指针的数据:

Leaked bytes:
00000000 f0 0d 90 de de de de de de de de de de de de de |................|
00000010 de de de de de de de de de de de de de de de de |................|
00000020 de de de de de de de de de de de de de de de de |................|
00000030 de de de de de de de de de de de de de de de de |................|
00000040 de de de de de de de de ed a7 |................|
00000050 0c a1 35 00 |..5.|

0xf00d是 Citrix 用于测试的魔数,0xdeadbeef是内存填充数据,而0xa10ca7ed看起来像是一个有效的进程内存指针。如果这确实是一个指针,那这个漏洞的价值就不只是”信息泄露”了——它可以成为进一步内存破坏利用的基石。

2.4 与CVE-2026-3055的区别

今年3月爆出的CVE-2026-3055(CitrixBleed4)也能导致大量内存泄露(可达数KB),而CVE-2026-8451的越读量相对较小,因为解析器在遇到NULL、>等控制字符时会停止越读。watchTowr在测试中每次只能挤出几个字节。但这不意味着它不危险——哪怕几个字节的进程内存指针,配合其他漏洞,也可能组合出完整的利用链。


三、在野利用:披露不到24小时

安全公司Lupovis在2026年6月30日(漏洞披露当天)即监测到来自法兰克福(IP:146.70.139.154)的定向攻击。

攻击者的行为模式很有意思:

  1. 先对目标发送验证请求(返回404则跳过)
  2. 确认目标存在后,才投递完整Payload
  3. 监测HTTP 200响应(表示漏洞利用成功)

这说明攻击者不是广撒网式扫描,而是有针对性的定向攻击——先侦察目标版本,再精准投放Exploit。Lupovis确认,攻击者使用的Payload与watchTowr Labs发布的检测工具完全一致。

攻击路径示意图

四、检测Artifact工具:手把手复现攻击

watchTowr Labs在GitHub上发布了CVE-2026-8451的检测工具:

GitHubhttps://github.com/watchtowrlabs/watchTowr-vs-Netscaler-CVE-2026-8451

使用方法极其简单,Python脚本直接打目标URL即可:

git clone https://github.com/watchTowr/watcTowr-vs-Netscaler-CVE-2026-8451
cd watchTowr-vs-Netscaler-CVE-2026-8451
python watchTowr-vs-Netscaler-CVE-2026-8451.py https://<target>

如果目标存在漏洞,脚本会输出泄露的内存字节:

c:>python watchTowr-vs-Netscaler-CVE-2026-8451.py https://192.168.80.125
..
Leaked bytes:
00000000 f0 0d 90 de de de de de de de de de de de de de |................|
00000010 de de de de de de de de de de de de de de de de |................|
...

同时请注意:过于简单的畸形请求也会直接导致NetScaler的nsppe进程崩溃,造成DoS。

发送这个请求就能让设备宕机:

<samlp:AuthnRequest ID=

base64编码后POST到/saml/login,nsppe进程直接崩溃重启。


五、 CitrixBleed家族史:一个持续失血的伤口

从2023年的CitrixBleed(CVE-2023-4966)开始,Citrix NetScaler的内存泄露类漏洞就像打开了潘多拉魔盒:

CVE时间类型说明
CVE-2023-49662023.10内存泄露CitrixBleed,Sessions劫持
CVE-2025-57772025内存泄露CitrixBleed 2
CVE-2025-121012025内存泄露+RXSSCitrixBleed 4(?)
CVE-2026-30552026.03内存越读CitrixBleed 4
CVE-2026-84512026.06内存越读CitrixBleed To Infinity

watchTowr的研究人员在报告中无奈地写道:

“CitrixBleed now refers to not a single vulnerability, but an entire class of Memory Disclosure-esque vulnerabilities in Citrix NetScaler devices.”

翻译成人话:Citrix的NetScaler在内存管理上一塌糊涂,连”不小心配置一下都能导致内存泄露”。这不是某个函数的bug,这是Citrix整个代码审计体系的系统性失败。


六、修复建议

立即行动

  1. 升级到安全版本
  • NetScaler ADC/Gateway 14.1 → 升级到 14.1-72.61 及以上
  • NetScaler ADC/Gateway 13.1 → 升级到 13.1-63.18 及以上
  1. 检查是否为SAML IDP配置

CVE-2026-8451的利用前提是NetScaler配置为SAML身份提供商。检查方法:

  • 登录NetScaler管理界面
  • 查看Configuration → Citrix Gateway → SAML IdP
  • 如未配置SAML IDP,该漏洞无法直接利用
  1. 监测异常SAML请求
  • 关注/var/log/ns.log中异常的AuthnRequest解析日志
  • 监测来自单个IP的频繁/saml/login请求
  1. 网络层防护
  • 如条件允许,在边界防火墙对/saml/login端点实施速率限制
  • 监控来自可信出口IP的异常出站流量

七、总结

CVE-2026-8451再一次证明:Citrix NetScaler的内存管理问题不是个案,是一个系统性的顽疾。从2023年CitrixBleed算起,三年三个主要版本,内存越读/泄露漏洞层出不穷。

对于防御者:

  • 立即打补丁,特别是暴露在互联网的VPN网关设备
  • 检查是否配置SAML IDP,未配置的暂时规避风险
  • 关注CVE-2026-13474等其他6个同批漏洞

对于攻击者:

  • 几个字节的越读听起来不起眼,但如果能稳定泄露进程指针,配合其他漏洞,完整的RCE利用链不是梦
  • watchTowr的工具已经开源,有NetScaler目标的可以动手测试

安全,从来都是攻防两端的速度竞赛。

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容