漏洞概述 在Open5GS AMF的 函数中存在一个内存泄漏漏洞。当AMF接收到一个带有未识别或无效NAS安全头类型的NAS PDU时,函数会分配一个数据包缓冲区( ),但在返回错误代码( )之前未能释放该缓冲区。由于注册请求是NR注册过程的首条消息,缺乏安全保护,因此容易被恶意利用。 影响范围 产品:Open5GS 组件:AMF(Access and Mobility Management Function) 受影响文件: 函数: 版本:最高至v2.7.7 漏洞类型:CWE-401: Missing Release of Memory after Effective Lifetime 修复方案 修复方案未在页面中明确提及,但根据漏洞描述,修复措施应包括在返回错误代码之前释放分配的缓冲区。 POC代码 攻击场景 1. 攻击者通过拥有网络访问权限的SCTP关联与AMF建立连接。 2. 发送一个带有无效安全头类型(例如,0x09,不属于5个定义的安全头类型之一)的NAS PDU的NGAP InitialUEMessage。 3. AMF分配一个数据包缓冲区,命中 语句中的 情况,并返回 而不释放缓冲区。 4. 重复此过程以逐渐耗尽AMF内存。 实际确认 使用AddressSanitizer(ASAN)确认了内存泄漏。 概念验证 任何非0x00到0x04的值都会触发 分支,导致内存泄漏。我们使用修改后的srUE并发送7e69作为NAS PDU的Registration请求的起始hex流来触发默认分支。 参考 Open5GS GitHub仓库:https://github.com/open5gs/open5gs srSRAN项目:https://docs.srsran.com/projects/project/en/latest/tutorials/source/srUE/source/index.html