# SO_REUSEPORT_LB 限制 UDP 连接
## 漏洞概述
当一个 socket 被设置为 `SO_REUSEPORT_LB` 并连接到某个主机后,应用本身不会立即观察到问题。然而,由于该 socket 加入了负载均衡组,它可能会接收来自任意主机的数据包,破坏了 `connect(2)` 的预期行为,可能导致应用程序面临数据包欺骗攻击(spoofing attacks)。
## 影响版本
无明确版本号指定,影响使用 `SO_REUSEPORT_LB` 选项并将 socket 连接到特定主机的 Linux 系统。
## 漏洞细节
1. **连接状态检查缺失**:
内核未正确检查 socket 的连接状态,便将其加入负载均衡组。
2. **违反连接 socket 的通信限制**:
对于入站数据包,内核在查找目标 socket 时,即使该 socket 已连接(connected),仍然会匹配负载均衡组中的 socket,违背了已连接 socket 仅应接收来自连接主机的数据包的原则。
3. **潜在的数据包接收范围扩大**:
设置 `SO_REUSEPORT_LB` 的 socket 可能会接收并处理并非来自预期连接对象的数据包。
## 漏洞影响
该漏洞可能导致如下安全问题:
- **数据包欺骗攻击面扩大**:
因为 socket 接收到来自任意主机的数据,而非连接主机限定的数据源,可能被恶意主机利用进行欺骗攻击。
- **协议通信完整性受损**:
一些依赖于 `connect(2)` 提供的主机限制来确保通信安全的应用(如基于 IP 地址身份验证的协议)可能会受到影响。
- **潜在DoS或数据泄露风险**:
如果应用未验证数据来源,攻击者可以发送特定内容导致错误处理或获取敏感信息。
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
暂无评论