# 漏洞总结 ## 漏洞概述 Open5GS 系统中存在协议配置选项(PCO)解析和构建过程中的健壮性问题。当 PCO 数据格式不正确时,系统会触发 `ogs_assert` 断言失败,导致 SMF 进程无条件中止。 ## 影响范围 - 影响所有使用 PCO 功能的模块: - 通用解析器 - SMF 构建例程 - 包括 SM、SGM、SSC 模块在内的所有下游构建路径 ## 修复方案 将 `ogs_assert` 替换为条件检查: - 在 `ogs_pco_parse()` 中,将 `ogs_assert(size == data_len)` 替换为 `ogs_expect(size == data_len)` - 在 SMF 的 PCO 构建函数中,将 `ogs_assert(pco_len > 0)` 替换为显式的 `if (pco_len 0); + if (pco_len ngtp.ue_pco.data, sess->ngtp.ue_pco.len); + return NULL; + } // src/smf/gsm-build.c - ogs_assert(epco_len > 0); + if (epco_len nas.ue_epco.buffer, sess->nas.ue_epco.length); + goto cleanup; + } // src/smf/ssc-build.c - ogs_assert(pco_len > 0); + if (pco_len ngtp.ue_pco.data, sess->ngtp.ue_pco.len); + goto cleanup; + } - ogs_assert(epco_len > 0); + if (epco_len ngtp.ue_epco.data, sess->ngtp.ue_epco.len); + goto cleanup; + } ```