Исследователи по ИБ из Бостонского университета, Cloudflare, BastionZero, Microsoft, Centrum Wiskunde&Informatica и Калифорнийского университета в Сан-Диего обнаружили уязвимость CVE-2024-3596 в популярном протоколе RADIUS, которая позволяет опытному злоумышленнику реализовать эксплойты для аутентификации любого пользователя в локальной сети, обходя защитные средства MFA в рамках атаки. Эта техника атаки получила название Blast-RADIUS.
Эксперты из InkBridge Networks предоставили полное техническое описание атаки Blast-RADIUS и предупредили о серьёзных рисках для корпоративных сетей, включая внутренние сети предприятий, сети интернет-провайдеров (ISP) и телекоммуникационных компаний.
Согласно пояснению профильных специалистов, в протоколе RADIUS некоторые пакеты Access-Request не аутентифицированы и не имеют проверки целостности, что позволяет провести атаку Blast-RADIUS с помощью уязвимости CVE-2024-3596.
Фактически злоумышленник может выполнить атаку Blast-RADIUS с выбранным префиксом, которая позволяет изменить Access-Request, чтобы заменить допустимый ответ в протоколе RADIUS на тот, который не является легитимным. Несмотря на то, что ответ аутентифицирован и проверен целостность, уязвимость выбранного префикса позволяет злоумышленнику изменить пакет ответа практически по своему желанию.
Протокол RADIUS, впервые стандартизированный в конце 1990-х годов, используется для управления доступом к сети посредством аутентификации, авторизации и учёта и до сих пор широко применяется в коммутаторах, маршрутизаторах, точках доступа и продуктах VPN.
Эксперты их InkBridge Networks описали проблему Blast-RADIUS как фундаментальный недостаток конструкции протокола и отметили, что все соответствующие стандартам клиенты и серверы RADIUS, вероятно, уязвимы для этой атаки.
Поскольку вся безопасность протокола RADIUS для транспортов UDP и TCP основана на общем секрете, эта атака, возможно, является самой серьёзной атакой на протокол. В InkBridge Networks рекомендует системным администраторам как минимум обновить каждый сервер RADIUS на рабочих системах, чтобы устранить эту уязвимость.
В InkBridge Networks разработали рабочий эксплойт для атаки Blast-RADIUS. В компании заявили, что не обнаружили признаков того, что эта уязвимость активно эксплуатируется в реальных условиях.
В качестве основной меры для защиты от уязвимости CVE-2024-3596 предлагается задействовать протокол EAP (Extensible Authentication Protocol, RFC 3579), в котором для дополнительной верификации сообщений используется атрибут Message-Authenticator. Для защиты от атаки также можно использовать расширения протокола (RadSec), включающие передачу RADIUS-сообщений через шифрованные каналы на базе TLS или DTLS. Кроме того, можно сократить до минимума значения таймаутов получения ответа и заблокировать ответы с атрибутом Proxy-State. Передача RADIUS-сообщений поверх TCP усложняет атаку, но не исключает её проведение.
Код эксплойты для проведения атаки пока не опубликован в открытом доступе, но проекту hashclash переданы изменения, улучшающие подбор коллизий в MD5 с учётом специфики атаки. В RADIUS-сервере FreeRADIUS проблема устранена в выпусках 3.0.27 и 3.2.5 через включение обязательного применения атрибута Message-Authenticator и добавление настройки для ограничения обработки пакетов с атрибутом Proxy-State.
Согласно данным OpenNET, для эксплуатации уязвимости CVE-2024-3596 атакующий должен иметь возможность перехвата транзитного трафика и проведения полноценной MITM-атаки, позволяющей читать, перехватывать, блокировать и изменять входящие и исходящие транзитные UDP-пакеты, отправляемые точками доступа для запроса аутентификации клиентов (Access-Request) и возвращаемые RADIUS-сервером с подтверждением или отклонением операции.
В этом случае, перехватив запрос аутентификации, атакующий может направить фиктивный ответ, указав в этом ответе иной тип результата (например, Access-Accept вместо Access-Reject). Атакующий также потенциально может перехватить ответ Access-Challenge, используемый при двухфакторной аутентификации, и заменить его на ответ Access-Accept для обхода прохождения дополнительного этапа проверки.
Атака Blast-RADIUS основана на том, что протокол RADIUS использует в качестве транспорта UDP и верифицирует целостность передаваемых сообщений при помощи алгоритма MD5. Для верификации сообщений, передаваемых между сервером доступа и RADIUS-сервером, применяется секретный ключ, известный точке доступа и RADIUS-серверу, но неизвестный атакующему. В ответ на запрос аутентификации RADIUS-сервер генерирует MD5-хэш, при помощи которого сервер доступа может удостовериться, что сообщение отправлено авторизированным сервером. MD5-хэш охватывает присланное в запросе случайное значение, идентификатор запроса, возвращаемые атрибуты и секретный ключ.
Атакующий в ходе MITM-атаки может перехватить переданный в запросе идентификатор и случайное значение, а также может предсказать код операции, размер и атрибуты. Задача сводится к формированию корректного проверочного хэша, который бы соответствовал изменённому результату операции и проходил проверку через хэширование с использованием секретного ключа. Алгоритм MD5 подвержен дифференциальной атаке поиска второго прообраза (не является стойким к подбору коллизий), что позволяет атакующему, манипулируя с не имеющим значения добавочным заполнением, подобрать сочетание данных с нужными параметрами, MD5-хэш которого будет совпадать с MD5-хэшем исходного ответа, и отправить фиктивный ответ с кодом успешного прохождения аутентификации (Access-Accept) вместо сообщения с информацией об ошибке.
Так как при обработке пакетов с запросом доступа (Access-Request) не применяется аутентификация и проверка целостности, в ходе атаки Blast-RADIUS в исходный запрос от сервера доступа атакующий может подставить дополнительный атрибут Proxy-State, который будет отражён RADIUS-сервером в своём ответе. Содержимое Proxy-State подбирается с учётом коллизии так, что значение проверочного MD5-хэша в реальном и поддельном ответах будут идентичны. При проведении эксперимента поиск коллизии в MD5 для совершения атаки занял 3-6 минут, что больше чем типовой таймаут в 30-60 секунд, но время поиска коллизии может быть сокращено за счёт использования более мощного оборудования, привлечения GPU и распараллеливания операций.
Источник: habr.com