Мэтью Брайант (Matthew Bryant), специализирующийся на безопасности DNS-серверов, опубликовал оригинальный метод атаки на всю систему доменов первого уровня, который позволил получить полный контроль над всеми доменами в зоне «.io».

Исследователю удалось получить контроль над 4 из 7 первичных DNS-серверов зоны «.io», пользуясь тем, что DNS-серверы, отвечающие за обслуживание домена первого уровня, имеют имена в той же зоне и рассматриваются некоторыми регистраторами на общих основаниях. Атака сводится к поиску просроченных в базе регистратора имён первичных DNS-серверов и регистрации домена с тем же именем, после чего атакующий получает контроль над первичным DNS-сервером зоны первого уровня.

Для автоматизации атаки написан инструментарий, который осуществляет поиск и перебор имён DNS-серверов, оценку задействования сервера в цепочке обслуживания доменной зоны и проверку доступности домена для регистрации через API регистратора. Анализ зоны .io показал, что несколько доменов серверов DNS для данной зоны оказались доступны для регистрации при проверке через API регистратора Gandi. Часто подобные домены включаются в список зарезервированных имён и регистрация блокируется на одной из последних стадий, но в случае имени «ns-a1.io» этого не было сделано, и домен был доступен для свободной продажи на общих основаниях по цене 96 долларов.

Исследователь не удержался и купил этот домен через сервис nic.io. Вскоре ему пришло уведомление об активации домена, а запуск утилиты dig показал, что он действительно получил контроль над одним из первичных DNS-серверов зоны .io и в качестве DNS-серверов для него теперь выставлены хосты ns1/ns2.networkobservatory.com, заданные в настройках исследователем, а другие корневые серверы содержат данный хост в списке первичных DNS-серверов:

$ dig NS ns-a1.io

;; QUESTION SECTION:
;ns-a1.io. IN NS

;; ANSWER SECTION:
ns-a1.io. 86399 IN NS ns2.networkobservatory.com.
ns-a1.io. 86399 IN NS ns1.networkobservatory.com.

$ dig NS io. @k.root-servers.net.

;; QUESTION SECTION:
;io. IN NS

;; AUTHORITY SECTION:
io. 172800 IN NS ns-a1.io.
io. 172800 IN NS ns-a2.io.
io. 172800 IN NS ns-a3.io.
io. 172800 IN NS ns-a4.io.
io. 172800 IN NS a0.nic.io.
io. 172800 IN NS b0.nic.io.
io. 172800 IN NS c0.nic.io.

;; ADDITIONAL SECTION:
ns-a1.io. 172800 IN A 194.0.1.1
ns-a2.io. 172800 IN A 194.0.2.1
ns-a3.io. 172800 IN A 74.116.178.1
ns-a4.io. 172800 IN A 74.116.179.1
a0.nic.io. 172800 IN A 65.22.160.17
b0.nic.io. 172800 IN A 65.22.161.17
c0.nic.io. 172800 IN A 65.22.162.17

Кроме того, анализ локального трафика через tcpdump показал, что на систему исследователя обрушилась волна запросов, адресованных первичному серверу, число которых было относительно невелико в силу инертности DNS и нахождения старого адреса в кэшах. Не рассчитывая на такой исход, исследователь отключил свой DNS-сервер и сразу написал уведомление организации, администрирующей зону .io, попутно указав ещё несколько имён DNS-серверов, свободных для регистрации, аналогично имени ns-a1.io.

Письмо вернулось с сообщением о недоступности адреса, несмотря на то, что этот email был указан в качестве контактного в официальной базе IANA. Тогда исследователь решил не тратить время на поиск и преодоление кордонов поддержки, а зарегистрировал на себя оставшиеся имена ns-a2.io, ns-a3.io и ns-a4.io, чтобы не дать возможность злоумышленникам захватить контроль над доменами аналогичным способом. После этого был направлен запрос в службу поддержки NIC.IO, которая, как часто бывает, перенаправила его на другой адрес (abuse@101domain.com). К обеду следующего дня пришло уведомление о блокировке доменов, устранении проблемы и возврате потраченных средств.