
SSH стал практически стандартом де-факто для подключения к серверу или удалённому десктопу. Поэтому уязвимости вызывают определённое беспокойство. Тем более в нынешних условиях, когда весь трафик в интернете записывается и сохраняется в хранилищах провайдеров и хостеров. То есть в будущем его могут расшифровать, будь найдена уязвимость, подрывающая базовую криптографию.
Опасную уязвимость нашли исследователи из Рурского университета в Бохуме. Атака получила название Terrapin (CVE-2023-48795). Правда, её вряд ли можно использовать именно на сохранённом трафике, потому что схема MiTM предусматривает подбор значений во время рукопожатия сервера и клиента. У злоумышленника должен быть доступ к каналу и возможность подменять пакеты.
Практическое применение Terrapin показывает иллюстрация на КДПВ. Продублируем здесь двумя схемами из научной статьи. Ниже показано нормальное рукопожатие SSH с использованием бинарного пакетного протокола BPP (SSH2 Binary Packet Protocol) и обмена ключами Диффи — Хеллмана с конечным полем. Номера последовательности поддерживаются BPP:
Snd
— это счётчик отправленных пакетов, а Rcv
— принятых. Жирным выделены номера последовательностей, проверенные путём аутентификации и шифрования:
А вот как происходит усечение префикса в процессе атаки на BPP. Сервер отправляет пакеты SC1 и SC2, а клиент получает только SC2:

На КДПВ показано, что благодаря удалению/добавлению пакетов злоумышленник может незаметно для клиента и сервера убрать сообщение
EXT_INFO
, которое используется для согласования нескольких расширений протокола. Внедрение пакетов на этапе рукопожатия позволяет понизить уровень расширений (extension downgrade attack) и понизить уровень защиты SSH. Конкретные последствия зависят от версий используемого ПО на сервере и клиенте, а также используемых расширений.Метод работает только если для SSH используется шифр ChaCha20-Poly1305 или другой шифр в режиме сцепления блоков (CBC) в режиме шифрования Encrypt-then-MAC.
Для проверки своего сервера и клиентов на наличие уязвимостей можно использовать этот сканер.
TunnelCrack: взлом туннелей VPN
Не только протокол SSH в последнее время подвергся атакам.
Напомним, что в августе 2023 года были опубликованы опасной атаки TunnelCrack, которая использует две широко распространённые уязвимости в VPN (LocalNet и ServerIP). Злоумышленник может использовать их для извлечения трафика за пределы зашифрованного VPN-туннеля.
Тесты показали, что уязвимостям подвержены все протестированные сервисы VPN как минимум на одном устройстве, выключая iPhone, iPad, MacBook, а также большинство VPN на Windows и Linux. Клиенты под Android оказались наиболее безопасны — уязвима только четверть VPN-приложений. Обнаруженные уязвимости могут быть использованы независимо от протокола VPN.
Обе атаки применяются, когда пользователь подключается к недоверенному Wi-Fi. Кроме того, атаку ServerIP можно использовать со стороны интернет-провайдера. В процессе атаки зловред изменяет таблицы маршрутизации, чтобы перенаправить трафик за пределы защищённого VPN-туннеля.
Атака LocalNet работает в том случае, если жертва подключается к чужому хотспоту, например, в кафе или гостинице. Там ей присваивается новый IP-адрес. Поскольку большинство сервисов VPN позволяет доступ в локальную сеть во время работы тоннеля, трафик можно беспрепятственно перенаправлять в местную локальную сеть, то есть злоумышленнику. Тестирование показало, что уязвимы все приложения под iOS.

Атака ServerIP использует тот факт, что многие VPN не шифруют трафик от клиента на IP-адрес сервера VPN:

Технические подробности атаки TunnelCrack см. в научной статье «Обход туннелей: Утечка трафика VPN-клиентов путём злоупотребления таблицами маршрутизации», которую авторы представили на конференции по безопасности USENIX Security 2023.
SSH3
Чтобы защититься от существующих и будущих атак, а также улучшить эффективность передачи данных, уже разработана третья версия протокола SSH3. Если вкратце, то SSH3 — это SSH2, который работает по протоколу HTTP/3 и QUIC + TLS 1.3, с механизмом авторизации пользователей HTTP Authorization.

Помимо прочего, в SSH3 реализованы следующие усовершенствования:
- Значительно более быстрое установление сеанса
- Новые методы HTTP-аутентификации, такие как OAuth 2.0 и OpenID Connect, кроме классической аутентификации SSH
- Поддержка сертификатов X.509
- Защита от сканирования портов: SSH3-сервер можно сделать невидимым в интернете
- Проброс UDP-портов в дополнение к классическому форвардингу TCP
- Все функции QUIC, включая миграцию соединений (скоро) и соединения по множественным путям (multipath connections)
Если внимательно посмотреть, то в SSH3 реализованы многие функции OpenSSH.
Уже сейчас можно скачать последнюю версию SSH3-сервера (бинарникиWindows, Linux, ARM), установить его и поиграть с этой экспериментальной разработкой на секретном адресе, так что никто не заметит.
Секретная ссылка реализуется следующим образом:
ssh3-server -bind 192.0.2.0:443 -url-path <длинный_секрет>
Если заменить
<длинный_секрет>
на какое-нибудь случайное значение вроде M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU
, то SSH3-сервер будет доступен только по адресу https://192.0.2.0:443/M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU
, возвращая 404 по всем остальным запросам.