关键漏洞信息 漏洞标题 [Bugs] NSSF panic due to nil pointer dereference when expiry field is omitted in NSSAIAvailability POST api request #704 漏洞描述 问题:当在 POST 请求中省略可选的 expiry 字段时,Nsssf_NSSAIAvailability API 触发 500 Internal Server Error。 原因:虽然 OpenAPI 和对应的 Go API 模型定义 expiry 为可选,但在 nssaiavailability_subscription.go 中,服务器端实现错误地假定它总是存在,导致在省略该字段时出现空指针引用和服务器端 panic。 复现步骤 1. 使用 Docker Compose 启动 free5gC。 2. 检查 NSSF 组件的 IP 和端口。 3. 如果 OAuth 已启用,为 Nsssf_NSSAIAvailability 服务获取有效的 Authorization Token。 4. 运行以下命令: 预期行为 NSSF 服务不应假设请求体中存在可选的 expiry 字段。当在 POST 请求中省略 expiry 字段时,服务应优雅地处理空指针并返回成功的 201 Created 响应,避免 panic 和 500 Internal Server Error。 关键日志信息 触发 panic 的日志: 完整堆栈跟踪: 环境信息 free5GC 版本:v4.0.0 操作系统:Ubuntu 24.04 Server 内核版本:6.8.0-63-generic Go 版本:go1.21.8 linux/amd64 解决方案 修复是在处理请求之前添加空指针检查,以避免在 expiry 字段被省略时调用 .IsZero() 函数而导致的 panic。