Terrapin - уязвимость в протоколе SSH, позволяющая снизить защиту соединения

Группа исследователей из Рурского университета в Бохуме (Германия) представила новую технику MITM-атаки на SSH - Terrapin, эксплуатирующую уязвимость (CVE-2023-48795) в протоколе. Атакующий, способный организовать MITM-атаку, имеет возможность в процессе согласования соединения блокировать отправку сообщения с настройкой расширений протокола для снижения уровня защиты соединения. Прототип инструментария для совершения атаки опубликован на GitHub. При применении OpenSSH уязвимость позволяет откатить соединение на использование менее защищённых алгоритмов аутентификации или отключить защиту от атак по сторонним каналам, воссоздающим ввод через анализ задержек между нажатиями клавиш на клавиатуре. В Python-библиотеке AsyncSSH в сочетании с уязвимостью (CVE-2023-46446) в реализации внутреннего конечного автомата (internal state machine) атака Terrapin позволяет вклиниться в SSH-сеанс. Уязвимость затрагивает все реализации SSH, поддерживающие ChaCha20-Poly1305 или шифры в режиме CBC в сочетании с режимом ETM (Encrypt-then-MAC). Например, подобные возможности доступны в OpenSSH уже более 10 лет. Уязвимость блокирована в сегодняшнем выпуске OpenSSH 9.6, а также в обновлениях PuTTY 0.80, libssh 0.10.6/0.9.8 и AsyncSSH 2.14.2. В Dropbear SSH исправление уже добавлено в код, но новый выпуск пока не сформирован. Уязвимость вызвана тем, что атакующий, контролирующий трафик соединения (например, владелец вредоносной беспроводной точки), может откорректировать порядковые номера пакетов в процессе согласования соединения и добиться незаметного удаления произвольного числа служебных SSH-сообщений, отправленных клиентом или сервером. Среди прочего, атакующий может удалить сообщения SSH_MSG_EXT_INFO, используемые для настройки применяемых расширений протокола. Для того чтобы другая сторона не определила пропадание пакета из-за разрыва в порядковых номерах, атакующий для сдвига порядкового номера инициирует отправку фиктивного пакета с тем же порядковым номером, что и у удалённого пакета. Фиктивный пакет содержит сообщение с флагом SSH_MSG_IGNORE, которое игнорируется при обработке. Атака не может быть проведена при использовании потоковых шифров и CTR, так как нарушение целостности будет выявлено на уровне приложения. На практике атаке подвержены только шифр ChaCha20-Poly1305 (chacha20-poly1305@openssh.com), при котором состояние отслеживается только по порядковым номерам сообщений, и связка из режима Encrypt-Then-MAC (*-etm@openssh.com) и шифров CBC. В OpenSSH 9.6 и других реализациях для блокирования атаки реализовано расширение протокола "strict KEX", которое автоматически включается при наличии поддержки на стороне сервера и клиента. Расширение завершает соединение при поступлении любых нештатных или лишних сообщений (например, с флагом SSH_MSG_IGNORE или SSH2_MSG_DEBUG), полученных в процессе согласования соединения, а также сбрасывает счётчик MAC (Message Authentication Code) после завершения каждого обмена ключами.

Анализ
×
Рурский университет в Бохуме
Сфера деятельности:Образование и наука