漏洞概述 漏洞名称: Open5GS AMF Heap Buffer Overflow 漏洞类型: CWE-122: Heap-based Buffer Overflow 漏洞描述: 在NAS SGS解码链中存在堆缓冲区溢出漏洞,当NAS PDU的消息类型字节被篡改时触发。通过将消息类型从0x57(Authentication Response)改为0x4e(Service Accept),解码器错误地将Authentication Response IE解释为Service Accept IE。这种类型混淆导致解码器尝试从数据包缓冲区末尾读取1字节,最终导致堆缓冲区溢出。 影响范围 产品名称: Open5GS 组件: AMF (Access and Mobility Management Function) 受影响文件: - - 函数: - - 版本: 最高至v2.7.2 供应商: Open5GS (https://github.com/open5gs/open5gs) 许可证: AGPL-3.0 语言: C 修复方案 类型混淆: 在 函数中,通过检查消息类型字节来避免类型混淆。 漏洞解码: 在 函数中,确保读取的数据不会超出分配的堆缓冲区。 攻击场景 1. 建立与AMF的SCTP关联(伪装成gNB)。 2. 捕获或构造有效的Authentication Response NAS PDU。 3. 将消息类型字节从0x57改为0x4e。 4. 将畸形NAS PDU发送到NGAP UplinkNASTransport消息。 5. AMF尝试将消息解码为Service Accept,触发IE解析循环中的类型混淆。 6. 读取堆缓冲区末尾的1字节,导致堆缓冲区溢出。 真实世界确认 使用AddressSanitizer (ASAN) 确认了溢出。 概念验证 (POC) 参考 Open5GS GitHub Repository: https://github.com/open5gs/open5gs srsRAN Project: https://docs.srsran.com/projects/project/en/latest/tutorials/source/srsUE/source/index.html