Эрика Виндиш из Cyberdione Labs опубликовала исследование «Tailworm» — цепочку уязвимостей в Tailscale SSH. Тестирование проводилось на Tailscale 1.104.2 и headscale 0.29.5.
Суть
Атакующий, который контролирует одно устройство в tailnet и которому ACL разрешают доступ к целевому узлу, может получить на этом узле root. CVE, патча и бюллетеня пока нет; Tailscale сообщила, что работает над исправлениями.
Оговорки
Результаты получены в лабораторных условиях и не воспроизведены независимо, а заявление о «червеобразности» оспаривается. Tailnet Lock заблокировал финальный шаг атаки.
Что делать уже сейчас
- Сузить SSH-гранты в ACL до конкретных пар «источник → назначение» вместо широких групп.
- Отключить проброс портов через SSH.
- Убрать
tailscale serve, проксирующие Unix-сокеты. - Включить срок действия ключей узлов и Tailnet Lock.
- Скомпрометированные узлы удалять на уровне control plane: переустановка ОС не отзывает скопированные ключи.
Это хорошее напоминание, что mesh-VPN — не замена принципу наименьших привилегий: доверие к узлу внутри сети должно быть явным и минимальным.
Erica Windisch of Cyberdione Labs published “Tailworm”, a chain of flaws in Tailscale SSH. Testing was done against Tailscale 1.104.2 and headscale 0.29.5.
The gist
An attacker who controls one tailnet device, and whom ACLs allow to reach a target node, can gain root on that node. There is no CVE, patch or bulletin yet; Tailscale says it is working on fixes.
Caveats
The results are lab-only and not independently reproduced, and the “wormable” claim is disputed. Tailnet Lock blocked the final step of the attack.
What to do now
- Narrow SSH grants in ACLs to specific source → destination pairs instead of broad groups.
- Disable SSH port forwarding.
- Remove
tailscale serveforwards to Unix sockets. - Enable node-key expiry and Tailnet Lock.
- Delete compromised nodes at the control plane: reimaging does not revoke copied keys.
A good reminder that a mesh VPN is no substitute for least privilege: trust between nodes inside the network should be explicit and minimal.