Уязвимость отказа в обслуживании в OpenVPN

В OpenVPN < 2.3.6 обнаружена уязвимость, которая позволяет аутентифицированным клиентам удаленно уронить VPN-сервер, т.е. выполнить атаку отказа в обслуживании.

Уязвимость заключается в некорректном использовании assert(): сервер проверяет минимальный размер control-пакета от клиента именно этой функцией, из-за чего сервер аварийно завершится, если получит от клиента control-пакет длиной менее 4 байт.

Следует отметить, что для совершения атаки достаточно установить коммуникацию через control channel, т.е. в случае с TLS, сам TLS-обмен. VPN-провайдеры, которые реализуют аутентификацию с использованием логина/пароля и общего TLS-ключа, подвержены уязвимости еще до стадии проверки логина и пароля.

Уязвимость имеется во всех версиях OpenVPN второй ветки, т.е. начиная, как минимум, с 2005 года. Ветка OpenVPN 3, на которой основаны мобильные клиенты, не подвержена данной уязвимости. Следует либо обновиться до версии 2.3.6, либо наложить патч на вашу версию OpenVPN. Уязвимости присвоен номер CVE-2014-8104.