Уязвимость в протоколе RADIUS, позволяющая подделать ответ при аутентификации

in #ru28 days ago

Группа исследователей из нескольких американских университетов и компаний Cloudflare и Microsoft разработала новую технику атаки на протокол RADIUS, применяемый операторами связи, облачными сервисами и VPN-провайдерами для аутентификации, авторизации и аккаунтинга пользователей. Атака, которая получила кодовое имя Blast-RADIUS, даёт возможность подделать ответ RADIUS-сервера при прохождении аутентификации и организовать подключение абонента без знания пароля доступа.

Для эксплуатации уязвимости (CVE-2024-3596) атакующий должен иметь возможность перехвата транзитного трафика и проведения полноценной MITM-атаки, позволяющей читать, перехватывать, блокировать и изменять входящие и исходящие транзитные UDP-пакеты, отправляемые точками доступа для запроса аутентификации клиентов (Access-Request) и возвращаемые RADIUS-сервером с подтверждением или отклонением операции. Перехватив запрос аутентификации атакующий может направить фиктивный ответ, указав в этом ответе иной тип результата (например, Access-Accept вместо Access-Reject). Атакующий также потенциально может перехватить ответ Access-Challenge, используемый при двухфакторной аутентификации, и заменить его на ответ Access-Accept для обхода прохождения дополнительного этапа проверки.

Атака основана на том, что протокол RADIUS использует в качестве транспорта UDP и верифицирует целостность передаваемых сообщений при помощи алгоритма MD5. Для верификации сообщений, передаваемых между сервером доступа и RADIUS-сервером, применяется секретный ключ, известный точке доступа и RADIUS-серверу, но неизвестный атакующему. В ответ на запрос аутентификации RADIUS-сервер генерирует MD5-хэш, при помощи которого сервер доступа может удостовериться, что сообщение отправлено авторизированным сервером. MD5-хэш охватывает присланное в запросе случайное значение, идентификатор запроса, возвращаемые атрибуты и секретный ключ.

Атакующий в ходе MITM-атаки может перехватить переданный в запросе идентификатор и случайное значение, а также может предсказать код операции, размер и атрибуты. Задача сводится к формированию корректного проверочного хэша, который бы соответствовал изменённому результату операции и проходил проверку через хэширование с использованием секретного ключа. Алгоритм MD5 подвержен дифференциальной атаке поиска второго прообраза (не является стойким к подбору коллизий), что позволяет атакующему, манипулируя с не имеющим значения добавочным заполнением, подобрать сочетание данных с нужными параметрами, MD5-хэш которого будет совпадать с MD5-хэшем исходного ответа, и отправить фиктивный ответ с кодом успешного прохождения аутентификации (Access-Accept) вместо сообщения с информацией об ошибке.

Так как при обработке пакетов с запросом доступа (Access-Request) не применяется аутентификация и проверка целостности, в ходе атаки в исходный запрос от сервера доступа атакующий может подставить дополнительный атрибут "Proxy-State", который будет отражён RADIUS-сервером в своём ответе. Содержимое "Proxy-State" подбирается с учётом коллизии так, что значение проверочного MD5-хэша в реальном и поддельном ответах будут идентичны. При проведении эксперимента поиск коллизии в MD5 для совершения атаки занял 3-6 минут, что больше чем типовой таймаут в 30-60 секунд, но время поиска коллизии может быть сокращено за счёт использования более мощного оборудования, привлечения GPU и распараллеливания операций.

В качестве основной меры для защиты от уязвимости предлагается задействовать протокол 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.

Источник: https://www.opennet.ru/opennews/art.shtml?num=61517

Coin Marketplace

STEEM 0.15
TRX 0.12
JST 0.025
BTC 55528.94
ETH 2373.33
USDT 1.00
SBD 2.36