← 文章 / 科技资讯
tailscale 10天前 · 2026-07-15 21:41:13 · 0 阅读

TS-2026-009: Tailscale SSH 不安全的参数处理允许root访问

漏洞描述: 向运行 Tailscale Serve 或 Funnel 的节点发送单个畸形 HTTP 请求,即可使一个 CPU 核心无限期卡死,导致拒绝服务攻击。

发生了什么?

Tailscale ServeTailscale Funnel 通过将请求路径与配置的挂载点进行匹配,将传入的 HTTP 请求代理到本地后端服务。在解析请求的处理程序时,Tailscale 会沿着请求路径逐级向上遍历,预期这个遍历最终会在根路径 / 处终止。

然而,对于路径不以 / 开头的请求,这个遍历过程永远无法到达 /,也永远无法匹配到任何挂载点,导致循环无限运行。由于服务器没有设置请求超时机制,没有任何东西能够中断这个死循环,对应的 goroutine 会一直占用一个 CPU 核心 100% 的资源,直到进程结束。

现在,Tailscale 会对非绝对路径的遍历进行终止处理,直接返回无匹配处理程序并关闭请求。

此漏洞已在 Tailscale 1.98.9 及更高版本中修复。

影响范围

攻击者可以发送精心构造的 HTTP 请求,永久占用目标节点的一个 CPU 核心。

对于 Tailscale Serve,攻击请求可以来自 tailnet 中任何有权访问该节点的 peer。对于 Tailscale Funnel,攻击请求可以来自互联网上的任何未认证主机。

受影响用户

运行 Tailscale Serve 或 Tailscale Funnel 且版本低于 1.98.9 的节点。

需要采取的措施

如果你正在运行 Tailscale Serve 或 Tailscale Funnel,请升级到 Tailscale 1.98.9 或更高版本。

致谢

感谢 Anthropic 和 Ada Logics 报告此问题。

漏洞描述: Tailscale SSH 中不安全的命令行参数处理允许用户违反 ACL 规则获得 root 用户访问权限。

发生了什么?

Tailscale SSH 此前接受包含前导 - 字符的用户名。在 Linux 平台上,这些用户名会被作为参数传递给 getent(1) 来获取对应的 passwd 条目,而在 getent 眼中,这些参数会被解释为命令行选项,从而允许攻击者控制程序行为。具体来说,如果用户使用用户名 -i 连接,系统会将其解释为 --no-idn 选项,getent 就会打印整个 passwd 文件内容(从 root 用户开始),导致 Tailscale 打开一个交互式 root 会话。

现在,Tailscale SSH 会拒绝包含前导短横线的用户名。

此漏洞已在 Tailscale 1.98.9 及更高版本中修复。

影响范围

拥有 SSH 访问权限的 Linux 节点用户本可以

原始来源: tailscale

评论 (0)