Интернет продолжает трещать по швам. На прошлой неделе вскрылись PHP, GitLab и Node.js, теперь очередь Tailscale. 25 октября исследовательница Erica Windisch выложила в открытый доступ 11 уязвимостей в этой программе. Исправлений к ним пока нет.

Tailscale — популярный способ связать свои компьютеры, серверы и телефоны в одну частную сеть, чтобы они безопасно видели друг друга через интернет. Так соединяют домашние серверы, рабочие ноутбуки и целые парки серверов в компаниях.

Самое громкое в отчёте: если в такой сети взломан хотя бы один компьютер и включён встроенный удалённый вход Tailscale SSH, атака в лаборатории перескакивала на соседние серверы меньше чем за секунду и получала там полный контроль. Исследовательница называет это червём. О реальных атаках пока не сообщалось. Tailscale подтвердила, что получила отчёт, нашла проблемы и готовит исправления.

Карточка Cyber Security News о находках в Tailscale SSH. Источник: cybersecuritynews.com
Карточка Cyber Security News о находках в Tailscale SSH. Источник: cybersecuritynews.com

Что сделать сейчас

  • Включите автообновление Tailscale: его советует сама компания, и исправление придёт сразу после выхода.
  • Не откатывайтесь на старые версии. Исправлений Tailworm в них тоже нет, а текущая 1.104.2 закрывает другую проблему, с сертификатами.
  • Если не пользуетесь Tailscale SSH, выключите его командой tailscale set --ssh=false. Перед этим убедитесь, что на сервер можно зайти другим способом.
  • Следите за страницей бюллетеней безопасности Tailscale: исправления появятся там.

Для тех, кто хочет подробнее

Отчёт Tailworm охватывает Tailscale 1.104.2 и headscale 0.29.5 — открытый сервер, на котором сеть Tailscale держат у себя вместо облачного сервиса компании. Все 11 находок автор воспроизвела в своей лаборатории 22–24 октября. На 26 октября у Tailscale нет ни бюллетеня, ни номеров CVE, ни исправленной версии. Независимо находки пока никто не воспроизвёл.

Tailscale SSH проверяет не пароль или ключ пользователя, а устройство: вход разрешает одно правило в политике доступа. Сама служба tailscaled работает с правами root. Если правило разрешает проброс Unix-сокетов (ssh -L и ssh -R), служба открывает и подменяет сокеты тоже от root. В лаборатории обычная SSH-сессия так получила root и прочитала файл паролей /etc/shadow. Через гонку между проверкой пути и его использованием удалось перехватить ключ для подключения устройств и добавить в сеть чужую машину под видом доверенного сервера. До конца эта цепочка прошла только в сетях без Tailnet Lock.

Первый взлом Tailscale не создаёт: нужен уже захваченный компьютер — через уязвимый сайт, заражённый пакет, фишинг или украденные пароли. Но в сети, где устройства доверяют друг другу, такой компьютер открывает путь ко всем серверам, куда ему разрешён вход. В лаборатории распространение остановили только правила «одно устройство — один сервер». Часть исследователей публично сомневается в слове «червь», другие называют находку с root серьёзной.

Остальные находки касаются экспериментальных коннекторов приложений conn25 (обход сетевых правил, в том числе до сервиса метаданных облака), функции serve, ретрансляторов DERP и headscale (отказ в обслуживании).

Записка исследовательницы в начале отчёта Tailworm: инфраструктура уязвима уже сейчас, поэтому находки опубликованы сразу. Источник: tailworm.com
Записка исследовательницы в начале отчёта Tailworm: инфраструктура уязвима уже сейчас, поэтому находки опубликованы сразу. Источник: tailworm.com

Вице-президент Tailscale по разработке Mike Shaver написал на Reddit, что компания уже изучала эти области с внешними специалистами, выясняет, какие конфигурации затронуты, и не советует всем отключать Tailscale SSH, передаёт The Hacker News. Компания также предлагает включить режим check для SSH: он добавляет вход перед сессией, но от повышения прав не защищает. Windisch называет раскрытие «сообщённым, но не согласованным»: отчёт и код атак она отправила в службу безопасности Tailscale до публикации, но сроки с компанией не обсуждались. Новость разошлась и в X, например через пост IntCyberDigest.

Похожие ошибки в Tailscale SSH и работе с сокетами компания уже закрывала летом в версии 1.98.9.

Администраторам до исправления в отчёте советуют:

  • писать SSH-правила парами «одно устройство — один сервер»;
  • запретить проброс в каждом правиле; в headscale 0.29.5 он не отключается, так что любой SSH-доступ там равен root;
  • убрать права на коннекторы приложений у устройств, которым они не нужны, и удалить пробросы serve на Unix-сокеты;
  • включить истечение ключей узлов, а при подозрении на взлом удалять устройство в панели управления: переустановка системы украденные ключи не отзывает.

Следующий шаг

Если ваши серверы связаны через Tailscale или другую частную сеть, начните с простой карты: какое устройство на какой сервер ходит и с какими правами.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov