[Bug]: UPF (open5gs-upfd) 在滥用 GTP-U 流量下出现严重的用户面性能退化 漏洞概述 Open5GS 的 UPF (open5gs-upfd) 在处理恶意的 GTP-U Echo Requests 和无效 TEID 时,会在数据面(hot-path)执行昂贵的同步诊断和日志记录操作。这导致合法用户面流量出现严重的延迟增加(RTT 飙升)和丢包,甚至使合法会话不可用。 影响范围 受影响组件: Open5GS UPF (open5gs-upfd) 触发条件: 遭受恶意的 GTP-U Echo Requests 或包含无效/未知 TEID 的 G-PDUs 的持续流量。 具体表现: 合法流量 RTT 从基线的 ~1-3ms 飙升至 >100ms (p95) 甚至 >300ms。 合法流量丢包率从 ~0% 增加到 >5-10%。 合法 PDU 会话可能保持“up”状态,但用户面数据无法及时传输。 修复方案 根本原因: 代码路径 中的 回调函数(即用户面接收回调)在处理 Echo 请求和无效 TEID 时,执行了同步的日志记录( )和错误响应生成。 建议修复方向: 1. 限制日志频率/级别: 对 和 的日志记录进行限流(rate limiting)或降级为 debug 级别,避免在热路径上频繁执行昂贵的同步日志操作。 2. 异步处理: 将错误响应生成和诊断工作从热路径的同步回调中移出,改为异步处理或丢弃(如果安全策略允许),以避免阻塞转发循环。 3. 快速失败: 对于无效 TEID,应尽快丢弃数据包,避免进行复杂的同步诊断。 POC / 利用代码