Для отображения 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) я ничего не получил в ответ. Я решил опубликовать свое наблюдение чтобы узнать мнение большего числа специалистов: или я крайне заблуждаюсь в своем наблюдении или ему действительно нужно дать ход.
Комментарии (21)
ValdikSS
12.03.2016 20:23+5Чисто для справки: все остальные домены с сочетаниями разных алфавитов Firefox отображает как punycode.
steff
13.03.2016 11:14+1Вот банкам «повезло» :)
steff
14.03.2016 10:25http://onlinebankingreport.com/resources/100.html
и вперёд :)
P.S. «Сайт» Bank Of America уже занят.
kafeman
12.03.2016 21:15+5Что же вы в выходной день опубликовали, тут сейчас нет никого.
А тема очень интересная. Хотелось бы, чтобы о ней узнало больше людей.
Если ValdikSS выше прав, то неплохо бы написать об этом разработчикам FF.ValdikSS
12.03.2016 21:19+2Привет. Касаемо бага с punicode (https://habrahabr.ru/post/279113/) я завёл тикет, если вдруг что (https://bugzilla.mozilla.org/show_bug.cgi?id=1256009)
В качестве защитной меры стоит включить опцию network.IDN_show_punycode, чтобы всегда показывать любые адреса с нелатиницей в punicode
На хабре комментировать не могу, увы :(
YoungSkipper
12.03.2016 22:13+3https://en.wikipedia.org/wiki/IDN_homograph_attack
Таким образом, существует угроза использования доменных имен с подменой буквы “k” на “?” и мне кажется что этот символ должен быть удален из таблицы латинских символов и не должен допускаться для регистрации доменных имен.
Почему только этот символ, а не множество других?kafeman
12.03.2016 23:22+3Вероятно потому, что:
Для избежания таких колизий существуют таблицы национальных алфавитов, которые содержат допустимые для регистрации домена символы. Благодаря этим таблицам, если домен содержит кириллицу, то он уже не может содержать латиницу. Таким образом у вас не получится зарегистрировать еще один twittеr.
Для символа «?» это не работает.
Reeze
12.03.2016 23:52+4С этой буквой уже давно зарегистрировано несколько популярных доменов: faceboo?.com, например.
Любой читающий эти строки может прямо сейчас стать домейнером: вложиться и брать свободные: linkedin, flickr, stackexchange.
Эта буква явно отличается начертанием и поэтому (скорее всего) осталась в доступных на латинице символах:
Но всё равно автору статьи спасибо.kafeman
12.03.2016 23:56-3No match for "FACEBOO?.COM".
>>> Last update of whois database: Sat, 12 Mar 2016 20:54:54 GMT <<<
Reeze
13.03.2016 00:01+2Задумайтесь над сменой инструмента, которым пробиваете домены или проверьте строку на ошибки:
Domain Name: XN--FACEBOO-JHB.COM
Registrar: MONIKER ONLINE SERVICES LLC
Sponsoring Registrar IANA ID: 228
Whois Server: whois.moniker.com
Referral URL: www.moniker.com
Name Server: NS1.MONIKERDNS.NET
Name Server: NS2.MONIKERDNS.NET
Name Server: NS3.MONIKERDNS.NET
Name Server: NS4.MONIKERDNS.NET
Status: clientDeleteProhibited www.icann.org/epp#clientDeleteProhibited
Status: clientHold www.icann.org/epp#clientHold
Status: clientTransferProhibited www.icann.org/epp#clientTransferProhibited
Updated Date: 26-apr-2015
Creation Date: 07-may-2010
Expiration Date: 07-may-2016
>>> Last update of whois database: Sat, 12 Mar 2016 20:57:08 GMT <<<
mittus
13.03.2016 01:16-3Полезное наблюдение. Надеюсь, мошенники не догадаются об этом, так как по такой ссылке в скайпе я и сам кликнул бы.
pansa
13.03.2016 14:26Интересная заметка, которая рождает много вопросов =)
Например, зачем вообще была оставлена такая возможность (смешивать символы)? Каким образом происходят преобразования таких доменов в браузерах?
И проблема несколько шире. Оказывается, есть целый блок символов — https://en.wikipedia.org/wiki/Latin_Extended-A, которые, как я понимаю, можно смешивать с латинскими символами в DN.tyomitch
13.03.2016 16:06Например, зачем вообще была оставлена такая возможность (смешивать символы)?
http://unicode.org/mail-arch/unicode-ml/y2005-m02/0110.html
VaKonS
15.03.2016 01:54В Firefox можно включить Юникод-имена только в доменных зонах из «белого списка», для остальных зон будет отображаться Punicode:
1) Зайти в настройки ФФ (по адресу «about:config»).
2) Установить «network.IDN.restriction_profile» = «strict» (на всякий случай, по умолчанию там «moderate»).
3) «network.IDN.use_whitelist» = «true».
4) Список доменных зон находится в ключах «network.IDN.whitelist.имя_зоны».
— Для зон, где нужен Юникод (например, ".РФ" = «network.IDN.whitelist.xn--p1ai»), поставить «true».
— Если нужно отсечь нелатинские символы (например, в зоне ".com" = «network.IDN.whitelist.com»), поставить «false» – там национальные символы будут выводиться в формате Punicode.
alexanderzaytsev
15.03.2016 13:31+2Имхо, но турецкие I/? выглядят привлекательней https://en.wikipedia.org/wiki/Dotted_and_dotless_I
http://xn--twitter-8he.com/ — в FF вообще не отлечить от реального twitter.com
pansa
15.03.2016 20:08Действительно, несмотря на то, что в исходной статье автор говорит о символе ?, разрешенных к смешиванию намного больше. Вот из интересного:
https://en.wikipedia.org/wiki/Latin_Extended-A
https://en.wikipedia.org/wiki/Latin_Extended-B
https://en.wikipedia.org/wiki/Latin_Extended-C
https://en.wikipedia.org/wiki/Latin_Extended_Additional
Из которых можно составить такие красивые вещи, как:
?oogle.com
yandex.com
tw?tter.com
twitter.com
twitter.com
twitter.com
twitter.com
yahoo.com
yahoo.com
yahoo.com
yahoo.com
yahoo.com
flickr.com
flickr.com
flickr.com
dropbox.com
dropbox.com
dropbox.com
dropbox.com
И тп. На всякий случай замечу, что ВСЕ вышеперечисленные компании были проинформированы о такой возможности с вот этим вот списком доменов, и все в лучшем случае заявили, что принимают эти риски, а в худшем — что я вообще ерунду какую-то им пишу, что ничего тут опасного и что им теперь — скупить все комбинации, типа twitter.xyz, чтоли?
Так что, смело разбирайте, кому интересно. На godaddy видел акцию скидок на домены на 1 год, там можно зарегать домены с такими символами =)
dkuzevanov
В дополнении:
http://www.unicode.org/reports/tr36/#TableSafeDomainNames
http://www.unicode.org/reports/tr36/#TableMixedScriptSpoofing
Ну и вообще, документ интересный.