
Авторами материала стала команда во главе с Сэмом Карри, экспертом по безопасности, который не только умеет находить нестандартные уязвимости, но и подробно рассказывает о процессе их обнаружения. Предыдущая публикация Сэма, например,
По сравнению с предыдущими исследованиями Сэма Карри и команды, здесь процесс поиска уязвимости описывается достаточно кратко: ее, судя по всему, обнаружили очень быстро. EPP-сервер CoCCA оказался уязвим для атаки типа
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///dev/random" >]> &xxe; |
Реально работающий код для уязвимого EPP-сервера выглядит так:
print(conn.call("<?xml version=\"1.0\" standalone=\"no\"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM \"file:///etc/passwd\"> ]> <epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd\"> <command> <poll op='req' /> <clTRID>&xxe;</clTRID> </command> </epp>".format(ip))) |
Как правило, коммуникация регистратора доменов с реестром надежно защищена. Перед предоставлением доступа к базе данных инициируется сложный процесс авторизации. Однако запрос в приведенном выше примере возвращал содержимое файла /etc/passwd на сервере с реестром доменных имен в обход всякой авторизации. Программное обеспечение CoCCA написано на Java, а данные хранятся в СУБД Postgres. Встроенный обработчик XML-запросов не имел никакой защиты от атак типа XXE. Развить атаку получилось с помощью еще одной уязвимости: исследователи нашли сегмент кода, который обращался к некоей базе названий городов. Его оказалось возможным перенацелить на загрузку любого файла на сервере.
Дальнейшие исследования проводились на примере доменной зоны .ai. Исследователи смогли вытащить множество файлов из уязвимой системы, включая приватный ssh-ключ одного из администраторов. С администратором удалось связаться, и он подтвердил, что легко взламываемый сервер позволяет менять любые записи в реестре доменов. Но и это еще не все: при дальнейшем изучении кода CoCCA был обнаружен скрипт, который загружает бэкап базы данных на сервер разработчика. Как это обычно бывает, сервер с бэкапами оказался общим для всех пользователей ПО. После того как разработчика уведомили об уязвимостях, все проблемы были закрыты в новой версии программного обеспечения.
Авторы работы приводят Nomulus в качестве примера чуть более защищенного ПО для управления доменной зоной. Nomulus — разработка Google с открытым исходным кодом. И вот там показано, как надо обрабатывать XML-запросы, исключая атаки XXE:

Что еще произошло:
В новых публикациях эксперты «Лаборатории Касперского» подробно
Вышли сразу два новых исследования атак по сторонним каналам.
Western Digital