[Bug]: PCF crash on delayed BSF discovery response after client disconnect during POST /npcf-smpolicycontrol/v1/sm-policies #4438 漏洞概述 在 5G 核心网 PCF(策略控制功能)中,当客户端在发起 SM Policy Association 请求后断开连接,而 PCF 随后收到延迟的 BSF(绑定会话功能)发现响应时,会导致 PCF 崩溃。 具体流程为: 1. SM Policy Association 请求触发 BSF MANAGEMENT 发现。 2. 客户端在发现完成前断开连接。 3. 延迟的 BSF 发现响应到达后,PCF 尝试通过发送回退响应来恢复。 4. 此时原始请求者的 HTTP/2 流已关闭, 返回 。 5. 代码中对 指针进行断言( ),导致 PCF 崩溃。 影响范围 组件: Open5GS PCF 模块 版本: v2.7.7 触发条件: 客户端在 SM Policy Association 请求处理期间断开连接,且 BSF 发现响应延迟到达。 修复方案 页面中未提供具体的代码修复方案,但描述了预期行为: > If the requester disconnects before delayed BSF discovery completes, PCF should discard the late result or fail the transaction without dereferencing a dead stream. 即:PCF 应在延迟的 BSF 发现完成前丢弃该结果或失败事务,避免解引用已关闭的流指针。 POC / 复现步骤 1. 配置临时 NRF 端点 修改 ,指向一个返回延迟空响应的 fake NRF: 2. 重启 PCF 3. 运行 fake HTTP/2 cleanest NRF 该 NRF 需满足: 返回 204 给注册相关路径 返回 204 给订阅创建 返回 200(空 列表)给 ,并在 3 秒后延迟响应 4. 发送带 1 秒超时的 VPLMN SM Policy Association 请求 5. 等待延迟发现响应到达,检查 PCF 日志和容器状态 日志示例 预期行为 如果请求者在延迟的 BSF 发现完成前断开连接,PCF 应丢弃该延迟结果或失败事务,而不解引用已死亡的流指针。 实际行为 原始客户端超时,HTTP/2 流被移除,延迟发现响应导致 PCF 对 流指针进行断言并崩溃。 其他信息 eNodeB/gNodeB: 不需要 UE 模型和版本: 不需要