Уязвимость вызвана тем, что TLS-обработчик некорректно принимает открытые ключи из сертификата соседнего узла (peer), считая их заслуживающими доверия, даже если сертификат не может быть успешно верифицирован. В частности, при вызове функции tls_find_public_key(), для определения заслуживающих доверия сертификатов, используется выборка на основе типа открытого ключа. Проблема в том, что переменная, используемая для определения типа ключа для операции поиска, выставляется в любом случае, даже если сертификат не заслуживает доверия.
Более того, через манипуляцию с ключом можно добиться уменьшения счётчика ссылок (если сертификат не заслуживает доверия, ссылка на объект освобождается после определения типа ключа) и освобождения памяти под ещё используемый объект с ключом. Рассмотренная недоработка не исключает создание эксплоитов для организации утечки информации из памяти и выполнения своего кода.
Атака на сервер осуществляется через отправку клиентом самоподписанного сертификата для аутентификации клиента с использованием методов EAP-TLS, EAP-TTLS, EAP-PEAP и EAP-TNC. Атака на клиента может быть совершена через возвращение сервером специально оформленного сертификата. Узвимость проявляется в выпусках strongSwan 5.9.8 и 5.9.9. Публикацию обновлений пакетов в дистрибутивах можно проследить на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD.
Источник: http://www.opennet.ru/opennews/art.shtml?num=58736
