Уязвимость в EPP-серверах позволяла получить контроль над 19 доменами первого уровня

Исследователи безопасности из группы Hackcompute опубликовали результат своих экспериментов по изучению защищённости регистраторов доменных имён, атака на которых может привести, например, к изменению DNS-серверов для перенаправления запросов на хост злоумышленника. В результате исследования в одной из реализаций XML-протокола EPP (Extensible Provisioning Protocol), применяемого для организации обмена данными между регистратором и оператором реестра доменных имён, выявлена критическая уязвимость, позволяющая прочитать содержимое любых файлов на сервере.

Используя уязвимость исследователям удалось получить содержимое закрытого SSH-ключа администратора сервера, отвечающего за доменную зону “ai” и учётные данные для хранения резервных копий всего содержимого. Персонал регистратора, отвечающего за домен первого уровня “ai” подтвердил, что уязвимость позволяет скомпрометировать сервер и получить полный контроль над любыми доменами в DNS-зоне “.ai”, в том числе можно изменить DNS-серверы для любого домена. Кроме инфраструктуры зоны “.ai” проявление уязвимости удалось выявить на серверах, отвечающих за ведение реестра доменных имён в зонах .bj, .bw, .ci, .gl, .ke, .kn, .lb, .ly, .mr, .ms, .mz, .ng, .pyc, .rw, .so, .ss, .td и .zm.


Отдельный интерес представляет то, как была найдена уязвимость. Так как протокол EPP использует XML и принимает соединения на 700 сетевом порту, исследователи через сканирование портов в глобальной сети построили список хостов, на которых открыт 700 порт и попытались отправить запросы, используя известные типовые приёмы атак на уязвимые XML-библиотеки. На серверах c ПО CoCCA Registry Software сработал приём с подстановкой внешних ресурсов через манипуляции с элементом XXE (XML external entity). Например, для чтения файла /etc/passwd с сервера достаточно было отправить запрос:

]> &xxe;

Далее исследователи изучили Web API, предоставляемый на серверах с CoCCA Registry Software и доступный на стадии до прохождения аутентификации. В Java-классе CitiesServlet была найдена ещё одна уязвимость, позволяющая передать содержимого локального файла из-за отсутствия проверок наличия символов “/..” при формировании имени файла на основе одного из параметров URI. Сочетание данной уязвимости с XXE-уязвимостью в парсере XML позволило получить доступ к любым файлам в системе, так как ПО CoCCA Registry Software выполняется с правами root. В ходе атаки XXE-уявзимость использовалась для определения структуры файлов и каталогов на сервере, а уязвимость в Web API для простой загрузки нужных файлов с сервера (например, для загрузки /etc/shadow достаточно выполнить запрос “https://epp.whois.ai/cities?country=/../../../../../../../../etc/shadow”). Исследователи сообщили о проблемах разработчикам ПО CoCCA Registry Software и в настолящее время уязвимости уже устранены.

Release. Ссылка here.