Специалисты по информационной безопасности обнаружили критическую уязвимость в open-source-проекте strongSwan, широко используемом для построения VPN-каналов с протоколом IPsec. Проблема, зарегистрированная под номером CVE-2026-47895, позволяет злоумышленнику инициировать удаленное выполнение кода на уязвимом сервере. Анализ инцидента показывает, что под угрозой находятся все версии strongSwan начиная с релиза 4.3.3 и до актуальной ветки 6.0.x.
Уязвимость CVE-2026-47895
Корень уязвимости кроется в библиотеке libstrongswan, которая отвечает за обработку идентификаторов (учетных записей). Внутри класса identification_t объект хранит бинарное представление идентичности в виде структуры chunk_t - это пара "длина" и "указатель на область памяти". При клонировании объекта метод clone() сначала копирует всю структуру с помощью memcpy, а затем, если длина кодировки (поле len) не равна нулю, создает независимую копию данных через функцию chunk_clone(). Однако разработчик не проверил сам указатель: если длина равна нулю, но указатель при этом не равен NULL (такое случается, например, при разборе пустой строки с префиксами @# или <type>:#), оба клона и оригинал продолжают ссылаться на один и тот же участок памяти. Когда один из объектов уничтожается, память освобождается, а второй при уничтожении попытается освободить уже освобожденный блок. Возникает так называемое двойное освобождение (double-free), которое может привести к неопределенному поведению программы - от отказа в обслуживании до выполнения произвольного кода.
Особенно опасным этот сценарий делает то, что атакующему не требуется предварительная аутентификация. Вектор атаки связан с протоколом EAP (Extensible Authentication Protocol - расширяемый протокол аутентификации). При установке соединения сервер strongSwan может запросить у клиента идентификатор EAP, который затем разбирается с помощью тех же конструкторов, что и обычные конфигурационные строки. Если злоумышленник передает пустой идентификатор с особым префиксом, память выделяется, но длиной ноль, и последующее клонирование приводит к двойному освобождению. После завершения обмена сервер уничтожает временный объект, и уязвимость срабатывает. Как отмечают эксперты, большинство EAP-методов внутренне обрабатывают идентификацию похожим образом, поэтому под ударом оказываются не только явно настроенные EAP-сеансы, но и сценарии, использующие внутреннюю аутентификацию.
Дополнительный риск связан с XAuth (расширенная аутентификация для IKEv1). Если сервер применяет модуль xauth-eap, уязвимость становится доступной уже на этапе аутентификации. В других случаях XAuth требует успешного входа, что сужает круг атак, но не исключает их полностью. Кроме того, серверы, делегирующие EAP удаленному RADIUS-серверу, уязвимы только в том случае, если они сами запрашивают EAP-идентификатор. Если же используется плагин eap-radius с включенной обработкой атрибутов Class и Filter-Id, поддельный RADIUS-сервер может спровоцировать проблему.
Патч уже выпущен - strongSwan версии 6.0.7 исправляет ошибку. Для более ранних веток (5.9.x, 5.8.x и так далее) предоставлены отдельные исправления, которые можно применить с ручной корректировкой смещений (hunk offsets). Разработчики настоятельно рекомендуют как можно скорее обновить систему, особенно если она используется в публичных сетях. В случае невозможности немедленного обновления временной мерой защиты может стать отключение EAP и XAuth, если они не являются критически важными для работы. Однако такой подход снижает функциональность VPN. Также стоит проверить, не привязана ли версия библиотеки к реализации malloc(), которая возвращает NULL для запросов нулевой длины - например, в некоторых встраиваемых системах такая особенность делает уязвимость неэксплуатируемой. Но в большинстве дистрибутивов Linux с библиотекой glibc указатель на выделенную область будет ненулевым, и сервер остается под угрозой.
Обнаружение принадлежит исследователю безопасности Р. Эллиоту Чайлдру, который сообщил о проблеме разработчикам strongSwan еще в начале июня. Сейчас компания-разработчик опубликовала подробное техническое описание и рекомендации. Специалистам по защите периметра следует немедленно проверить версии strongSwan, установленные на шлюзах, и запланировать обновление. Учитывая широкую распространенность этого VPN-решения в корпоративном сегменте, задержка с установкой патча может привести к серьезным инцидентам: атакующий, получивший контроль над VPN-сервером, способен перехватывать трафик между сегментами сети, внедрять вредоносные программы или использовать сервер как плацдарм для дальнейших атак. В условиях растущей сложности угроз быстрая реакция на такие уязвимости становится критически важной задачей для любой организации, полагающейся на удаленный доступ.
Ссылки