OOB内存读取:NetScaler ADC和网关 | Bishop Fox
产品供应商
Cloud Software Group
产品描述
受影响的Citrix NetScaler ADC和网关组件用于认证、授权和审计(AAA)以及远程访问。
漏洞列表
在Citrix NetScaler ADC和网关中发现一个漏洞:
- 越界内存读取
受影响版本
- NetScaler ADC和NetScaler Gateway 14.1 低于 14.1-12.35
- NetScaler ADC和NetScaler Gateway 13.1 低于 13.1-51.15
- NetScaler ADC和NetScaler Gateway 13.0 低于 13.0-92.21
- NetScaler ADC 13.1-FIPS 低于 13.1-37.176
- NetScaler ADC 12.1-FIPS 低于 12.1-55.302
- NetScaler ADC 12.1-NDcPP 低于 12.1-55.302
NetScaler ADC和NetScaler Gateway 12.1版本现已终止生命周期(EOL)且存在漏洞。
发现摘要
该漏洞使得未认证攻击者能够从配置为网关或AAA虚拟服务器的NetScaler设备远程获取信息。虽然与CVE-2023-4966性质相似,但此问题返回高敏感信息的可能性要低得多。
影响
该漏洞允许攻击者从内存中恢复数据。虽然在大多数情况下不会返回有价值的信息,但在Bishop Fox Cosmos客户的测试中,我们观察到先前HTTP请求的POST请求体被泄露的情况。Web应用程序使用POST请求传输潜在敏感信息(如状态或凭据),这些请求数据通常应保持私有。
解决方案
按照Citrix安全公告CTX584986中的修复指南,尽快安装以下更新软件:
- NetScaler ADC和NetScaler Gateway 14.1-12.35及更高版本
- NetScaler ADC和NetScaler Gateway 13.1-51.15及更高版本
- NetScaler ADC和NetScaler Gateway 13.0-92.21及更高版本
- NetScaler ADC 13.1-FIPS 13.1-37.176及更高版本
- NetScaler ADC 12.1-FIPS 12.1-55.302及更高版本
- NetScaler ADC 12.1-NDcPP 12.1-55.302及更高版本
越界内存读取
NetScaler ADC和网关产品存在未认证越界内存读取漏洞,可被利用来捕获设备进程内存中的信息,包括HTTP请求体。
漏洞详情
CVE ID:供应商已更新CVE-2023-6549以涵盖此漏洞及原始拒绝服务漏洞,因为它们通过同一修复程序解决。
漏洞类型:越界读取
访问向量:☒ 远程,☐ 本地,☐ 物理,☐ 上下文相关,☐ 其他
影响:☐ 代码执行,☐ 拒绝服务,☐ 权限提升,☒ 信息泄露,☐ 其他
安全风险:☐ 严重,☒ 高,☐ 中,☐ 低
漏洞:CWE-125(越界读取)
Bishop Fox工作人员确定先前版本的NetScaler ADC和网关产品存在未认证越界内存读取漏洞,并利用该漏洞捕获设备进程内存中的信息,包括HTTP请求体。
Bishop Fox工作人员发现,网关或AAA虚拟服务器在处理对/nf/auth/startwebview.do
URI的HTTP GET请求时,对HTTP Host请求头进行不安全处理。易受攻击的函数尝试计算包含Host头的字符串长度,然后指示后续函数将该长度的字符串复制到HTTP响应消息中。然而,由于错误使用C snprintf方法,如果请求中提交的Host头值超过约5,394字节,会导致长度超过源缓冲区大小,并将无关数据复制到响应中。利用此漏洞不需要认证。
以下Python概念验证代码可用于演示对易受攻击设备的可利用性:
|
|
图1 - 概念验证利用代码
对/nf/auth/startwebview.do
URI的请求由ns_aaa_start_webview_for_authv3
函数处理。该函数使用snprintf函数构建XML响应,并通过调用ns_vpn_send_response
函数将此响应返回给用户,如下所示:
|
|
图2 - ns_aaa_start_webview_for_authv3函数反编译摘录
ns_vpn_send_response
函数发送HTTP响应,其中响应体和体大小作为参数提供。在上面的代码中,大小设置为snprintf函数的返回值。根据snprintf函数的文档,返回值是如果有足够空间时将写入的字符数。因此,如果构建的响应超过缓冲区大小(本例中为0x1800字节),ns_vpn_send_response
函数将响应缓冲区末端之外的额外数据。这与CVE-2023-4966(CitrixBleed)的根本原因相同。
ns_aaa_start_webview_for_authv3
函数中不安全使用sprintf函数的问题在本报告的"不安全字符串处理"发现中有更详细讨论。
Bishop Fox工作人员分析了先前版本的易受攻击Citrix部署,观察到披露的内存包含来自HTTP请求的数据,有时包括POST请求体。例如,以下响应包含设备处理的另一个HTTP请求的数据,显然与Nessus漏洞扫描相关:
|
|
图3 - NetScaler设备响应披露内存内容
受影响位置
URI
/nf/auth/startwebview.do
函数
ns_aaa_start_webview_for_authv3
in /netscaler/nsppe
致谢
Bishop Fox能力开发小组
时间线
- 2024年1月22日:初始发现
- 2024年1月25日:与供应商联系
- 2024年2月1日:供应商确认漏洞
- 2024年5月6日:漏洞公开披露
- 2024年5月10日:供应商更新安全公告,确认CVE-2023-6549的拒绝服务修复也解决了越界内存读取问题