Наверняка многие используют или слышали про про интернационализованные доменные имена (IDN) — доменные имена, состоящие из символов национального алфавита, например тест.рф. Так же многие знают что латиница и кириллица имеют визуальные схожие символы, например латинская “a” и кириллистическая “а” выглядят одинаково, однако имеют разные коды, т.e. !“a”.equals(“а”). В этой статье речь пойдет о доменных именах которые выглядят очень схоже благодаря одной букве К. В будущем этой схожестью могут воспользоваться злоумышленники, поэтому чтобы избежать этого я хочу рассказать об одном своем наблюдении из области интернационализованных доменных имен.
Для отображения IDN может использоваться unicode или punycode. В punycode домен выглядит как-то так: xn--e1aybc.xn--p1ai, а в unicode это тест.рф.
Как было сказано выше, в латинице и кириллице есть схожие символы, поэтому два домена twitter.com и twittеr.com выглядят одинаково в unicode кодировке. Как вы догадались, один из доменов содержит латинскую “e”, а другой кирилистическую “е”. Для избежания таких колизий существуют таблицы национальных алфавитов, которые содержат допустимые для регистрации домена символы. Благодаря этим таблицам, если домен содержит кириллицу, то он уже не может содержать латиницу. Таким образом у вас не получится зарегистрировать еще один twittеr.
Более подробно про таблицы и правила именования IDN можно почитать по следующим ссылкам:
- www.iana.org/domains/idn-tables
- www.verisign.com/en_US/channel-resources/domain-registry-products/idn/idn-policy/registration-rules/index.xhtml
И вот я когда-то изучал информацию об IDN по одной из приведенных ссылок и обнаружил интересный символ Κʻ / ĸ (U+0138, *Kra*). Можно заметить, что в прописном варианте он выглядит как латинская “k” или кирилистическая “к”. И знаете что самое интересное? Этот символ можно использовать в сочетании с латинским алфавитом. Т.е. вы можете зарегистрировать еще один vĸ.com или sĸype.com, точнее могли когда-то.
В качестве PoC я зарегистрировал пару таких доменных имен. Например vĸ.com. Браузеры по разному отображают такой домен в адресной строке.
Chrome показывает в punycode формате:
А вот Firefox (то же самое и в Safari) в unicode:
Это может запутать пользователя. Некоторые сервисы, например Twitter показывают такой домен в unicode формате — опять же потенциально тут может развернуться злоумышленник и использовать фишинговую ссылку:
Тоже самое и Skype:
Таким образом, существует угроза использования доменных имен с подменой буквы “k” на “ĸ” и мне кажется что этот символ должен быть удален из таблицы латинских символов и не должен допускаться для регистрации доменных имен. Две недели назад я отправил свое наблюдение в iana-questions@iana.org (как я понял эта организация занимается IDN). Однако кроме номера тикета (887309) я ничего не получил в ответ. Я решил опубликовать свое наблюдение чтобы узнать мнение большего числа специалистов: или я крайне заблуждаюсь в своем наблюдении или ему действительно нужно дать ход.
Автор: mityal