Обработка IKE-сообщений в strongSwan позволяет выполнить код и обойти аутентификацию

strongSwan

В strongSwan, популярной реализации IPsec VPN, обнаружили множественные уязвимости. Они затрагивают все версии вплоть до 6.1.0. Самые серьезные последствия - удаленное выполнение кода и обход проверок подлинности. Разработчики выпустили исправление в версии 6.1.0, а для старых веток подготовили отдельные патчи.

Детали уязвимостей

Найденные проблемы делятся на три категории: выполнение кода, отказ в обслуживании и обход политики безопасности. Ключевая уязвимость CVE-2026-78133 находится в библиотеке libcharon, которая отвечает за логику работы IKE. Она проявляется при одновременном повторном согласовании IKE и Child SA с несколькими обменами ключами. В такой ситуации формируется висячий указатель, то есть ссылка на уже освобожденную область памяти. Обращение к нему приводит к неопределенному поведению, в частности к выполнению произвольного кода. Для этого злоумышленник должен быть аутентифицированным пиром и контролировать обмен ключами. На практике эксплуатация требует точного совпадения условий, но теоретически это наиболее опасная находка в этом наборе.

Вторая проблема, CVE-2026-78135, примечательна тем, что может быть использована без аутентификации. Из-за недостаточной проверки состояния IKE SA сервер принимает запрос CREATE_CHILD_SA до завершения аутентификации. В конфигурациях с EAP неаутентифицированный клиент может создать Child SA, который будет работать до отключения полуоткрытого соединения, примерно тридцать секунд. Успешная атака возможна, только если на сервере не настроен пул виртуальных адресов или задан явный удалённый адресный диапазон. Эта ошибка похожа на старую CVE-2014-2338, но теперь атаке подвержен отвечающая сторона, а не инициатор соединения.

Отдельно стоит уязвимость в EAP-PEAP и EAP-TTLS. Эти протоколы используют туннелирование внутреннего EAP-метода, например EAP-MSCHAPv2. Внутренний метод передает имя пользователя, но эти данные не доходят до уровня IKE SA. В результате SA связывается с идентичностью, которую клиент заявил на внешнем уровне, и эта идентичность не подтверждена. Злоумышленник, имеющий действительные учетные данные, может выдать себя за другого пользователя, получить его виртуальный IP-адрес или доступ к ресурсам. Ошибка присутствует начиная с версии 4.5.0, но патчи для нее выпущены только для версий не ниже 5.3.0.

Остальные находки приводят к отказу в обслуживании. В их числе утечка памяти при логировании IKE-сообщений: при формировании строкового представления входящего сообщения не освобождаются перечислители, и атакующий может отправлять множество специально сформированных пакетов, постепенно исчерпывая память. Также есть проблема с неограниченным числом итераций при дешифровании PKCS#7-контейнеров, передаваемых через IKEv1. Параметры, такие как число итераций и длина ключа, не проверяются, что приводит к зависанию процесса или чрезмерному выделению памяти. В плагине разбора X.509-сертификатов найдены разыменование нулевого указателя и две утечки памяти при обработке атрибутных сертификатов, а также бесконечный цикл из-за некорректного описания правил ASN.1 для типа ietfAttrSyntax. Все эти ошибки вызывают отказ в обслуживании, но не позволяют выполнить код.

Затронуты практически все поддерживаемые ветки strongSwan. Часть уязвимостей существует с ранних версий 4.x и 5.x, другие появились только в 5.9.7 или 6.0.0. В бюллетене отмечено, что бесконечный цикл в x509-плагине повторяет проблему, исправленную в CVE-2017-9023, но в другом месте. Это указывает на сохраняющиеся сложности с корректной обработкой рекурсивных структур ASN.1.

Сведений об использовании этих уязвимостей в реальных атаках в опубликованных материалах нет, однако обновление до версии 6.1.0 настоятельно рекомендуется. Разработчики предоставили патчи для веток 5.9.x и 6.0.x, а также для отдельных версий начиная с 5.1.3. Для более старых релизов патчи не всегда доступны, поэтому единственный безопасный вариант - перейти на актуальную версию.

До установки исправления стоит проверить конфигурацию. Если нет необходимости в IKEv1, следует отключить этот протокол. Неиспользуемые плагины, в том числе x509, pkcs7, eap-peap и eap-ttls, лучше удалить из загрузки. Это уменьшит поверхность атаки, но не защитит от CVE-2026-78133, поэтому обновление остаётся необходимым.

Набор из восьми уязвимостей в одном релизе показывает, что даже у зрелых VPN-решений сохраняются ошибки в обработке протокольных состояний и форматов данных. Для систем, доступных из внешних сетей, переход на strongSwan 6.1.0 является приоритетной мерой защиты.

Ссылки

Комментарии: 0