TS-2026-009:Tailscale SSH 中的不安全参数处理允许 root 访问
原文链接:https://tailscale.com/security-bulletins
2026 年 7 月 13 日描述:Tailscale SSH 中不安全的命令行参数处理允许违反 ACL 的 root 用户访问。
Tailscale SSH 之前接受包含前导 - 字符的用户名。在 Linux 平台上,这些用户名作为参数传递给 getent(1) 以检索相应的 passwd 条目,其中它们被解释为允许攻击者控制行为的标志。具体来说,如果用户使用用户名 -i 连接,这将被解释为 --no-idn 并且 getent 会打印从 root 用户开始的整个 passwd 文件内容,导致 Tailscale 打开交互式 root 会话。
Tailscale SSH 现在拒绝带有前导破折号的用户名。此漏洞已在 Tailscale 版本 1.98.9 或更高版本中修复。通过 SSH 访问 Linux 节点的用户可以通过使用用户名 -i 进行连接来获取根会话,这违反了 ACL 策略。
Linux 主机上的 Tailscale SSH 用户依赖于 Tailscale ACL 中的 autogroup:nonroot 用户限制。如果您使用 Tailscale SSH,请升级到 Tailscale 版本 1.98.9 或更高版本。我们要感谢 Anthropic 和 Ada Logics 报告此问题。描述:对运行 Tailscale Serve 或 Funnel 的节点的单个格式错误的 HTTP 请求可能会无限期地固定 CPU 核心,从而导致拒绝服务。
Tailscale Serve 和 Tailscale Funnel 通过将请求路径与配置的挂载点进行匹配,将传入的 HTTP 请求代理到本地后端。解析请求的处理程序时,Tailscale 一次沿着请求路径向上一个目录,期望该遍历最终在根路径 / 处终止。对于路径不以 / 开头的请求,此遍历从未到达 / 且从未匹配挂载点,导致循环永远旋转。由于服务器没有强制执行请求超时,因此没有任何事情会中断旋转,并且 Goroutine 在进程的生命周期中将一个核心保持在 100%。
Tailscale 现在终止非绝对路径的路径遍历,不返回任何处理程序并关闭请求。此漏洞已在 Tailscale 版本 1.98.9 或更高版本中修复。攻击者可以发送精心设计的 HTTP 请求来永久消耗目标节点上的一个 CPU 核心。对于 Tailscale Serve,请求可以来自 tailnet 上有权访问该节点的任何对等方。对于 Tailscale Funnel,请求可能来自互联网上任何未经身份验证的主机。在 1.98.9 之前的版本上运行 Tailscale Serve 或 Tailscale Funnel 的节点。如果您运行 Tailscale Serve 或 Tailscale Funnel,请升级到 Tailscale 版本 1.98.9 或更高版本。我们要感谢 Anthropic 和 Ada Logics 报告此问题。
2026 年 7 月 10 日描述:服务中的入站数据包过滤不足,允许访问环回绑定侦听器。
Tailscale 服务是虚拟尾网目的地,可以从尾网上的一个或多个节点托管。它们允许您独立于支持它们的节点来管理网络资源(例如数据库)。在 1.98.9 之前的 Tailscale 版本中,通告服务的节点可以接受它们未通告的端口上的服务 IP 的入站流量。在这些场景中,Tailscale 会将这些数据包转发到侦听同一端口的主机环回接口上的任何进程,从而允许远程访问它们。当服务端口不存在相应的处理程序时,Tailscale 现在会使用适当的 TCP RST 响应过滤并拒绝这些数据包。此漏洞已在 Tailscale 版本 1.98.9 或更高版本中修复。拥有 Tailscale 服务 ACL 授权的用户可以在非通告端口上对其进行寻址,并到达在托管该服务的节点上侦听环回的进程。
Tailscale 服务的用户依赖于其所使用的节点上的仅环回网络访问限制