Golang MPTCP 漏洞
Go 1.24 及以上版本在 Linux 上默认启用 MPTCP 监听,这会让部分 Go 网络服务在管理员不知情的情况下暴露于一个 9.8 分的高危漏洞(CVSS 9.8),该漏洞可在约 53 分钟内获取 root 权限。
🔍 漏洞背景
这是 Linux 内核 TCP/IP 栈中的一个 use-after-free(UAF)漏洞,核心问题在 tcp_v4_syn_recv_sock() 函数:处理重复 SYN 包时,IP 选项未正确拷贝,多线程竞争下可能触发内存释放后使用,最终导致远程代码执行。
漏洞与 MPTCP 的关联来自 Anthropic 的研究描述,原始漏洞记录并未提到 MPTCP。安全厂商 Aviatrix 也提示,在完整复现攻击链之前,该路径仅作为厂商单方面研究结论参考。
⚠️ 影响范围
Linux 内核:需要核对版本是否在修复列内(>= 5.10.272 / 5.15.223 / 6.1.190 / 6.6.159 / 6.12.113 / 6.18.56 / 7.2.10 / 7.3)
Go 服务:从 Go 1.24 开始,只要内核支持 MPTCP,Go 在 Linux 上会为 TCP 监听器默认启用 MPTCP,这意味着很多 Go 服务可能无意中暴露了攻击面
普通 TCP 连接同样受影响,只是目前还没有公开演示过在未开 MPTCP 监听的服务器上实现远程代码执行
🛠️ 排查与缓解措施
核查内核版本:uname -r,确认是否已包含修复补丁
检查 MPTCP 是否启用:cat /proc/sys/net/mptcp/enabled(1 = 启用)
查看监听套接字是否为 MPTCP:ss -tlnp | grep -i mptcp
系统层关闭 MPTCP:sudo sysctl -w net.mptcp.enabled=0
Go 服务禁用 MPTCP:启动时加 GODEBUG=multipathtcp=0,或在 go.mod 中加 godebug multipathtcp=0
- 点赞
- 收藏
- 关注作者
评论(0)