Наблюдение об интернационализованных доменных именах и букве K

Наверняка многие используют или слышали про про интернационализованные доменные имена (IDN) — доменные имена, состоящие из символов национального алфавита, например тест.рф. Так же многие знают что латиница и кириллица имеют визуальные схожие символы, например латинская “a” и кириллистическая “а” выглядят одинаково, однако имеют разные коды, т.e. !“a”.equals(“а”). В этой статье речь пойдет о доменных именах которые выглядят очень схоже благодаря одной букве К. В будущем этой схожестью могут воспользоваться злоумышленники, поэтому чтобы избежать этого я хочу рассказать об одном своем наблюдении из области интернационализованных доменных имен.

Для отображения IDN может использоваться unicode или punycode. В punycode домен выглядит как-то так: xn--e1aybc.xn--p1ai, а в unicode это тест.рф.

Как было сказано выше, в латинице и кириллице есть схожие символы, поэтому два домена twitter.com и twittеr.com выглядят одинаково в unicode кодировке. Как вы догадались, один из доменов содержит латинскую “e”, а другой кирилистическую “е”. Для избежания таких колизий существуют таблицы национальных алфавитов, которые содержат допустимые для регистрации домена символы. Благодаря этим таблицам, если домен содержит кириллицу, то он уже не может содержать латиницу. Таким образом у вас не получится зарегистрировать еще один twittеr.



Более подробно про таблицы и правила именования IDN можно почитать по следующим ссылкам:


И вот я когда-то изучал информацию об 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) я ничего не получил в ответ. Я решил опубликовать свое наблюдение чтобы узнать мнение большего числа специалистов: или я крайне заблуждаюсь в своем наблюдении или ему действительно нужно дать ход.
Share post

Comments 25

  • UFO just landed and posted this here
      +5
      Чисто для справки: все остальные домены с сочетаниями разных алфавитов Firefox отображает как punycode.
      +5
      Что же вы в выходной день опубликовали, тут сейчас нет никого.

      А тема очень интересная. Хотелось бы, чтобы о ней узнало больше людей.

      Если ValdikSS выше прав, то неплохо бы написать об этом разработчикам FF.
        +2
        dartraiden

        Привет. Касаемо бага с punicode (https://habrahabr.ru/post/279113/) я завёл тикет, если вдруг что (https://bugzilla.mozilla.org/show_bug.cgi?id=1256009)

        В качестве защитной меры стоит включить опцию network.IDN_show_punycode, чтобы всегда показывать любые адреса с нелатиницей в punicode

        На хабре комментировать не могу, увы :(
          +2
          Спустя два года, баг исправлен. Так долго тянули, потому что хотели решить вопрос через технический комитет Unicode (добавить этот символ в категорию «исторических»), но те, при выпуске очередной редакции стандарта, об этом забыли, поэтому проблемный символ просто добавили в стоп-лист Firefox.
          +1
          Интересно, через сколько часов зарегистрируют OΚ.ru...
            +3
            В зоне .ru нет поддержки IDN.
            +3
            https://en.wikipedia.org/wiki/IDN_homograph_attack

            Таким образом, существует угроза использования доменных имен с подменой буквы “k” на “ĸ” и мне кажется что этот символ должен быть удален из таблицы латинских символов и не должен допускаться для регистрации доменных имен.

            Почему только этот символ, а не множество других?
              +3
              Вероятно потому, что:
              Для избежания таких колизий существуют таблицы национальных алфавитов, которые содержат допустимые для регистрации домена символы. Благодаря этим таблицам, если домен содержит кириллицу, то он уже не может содержать латиницу. Таким образом у вас не получится зарегистрировать еще один twittеr.
              Для символа «ĸ» это не работает.
              +4
              С этой буквой уже давно зарегистрировано несколько популярных доменов: facebooĸ.com, например.
              Любой читающий эти строки может прямо сейчас стать домейнером: вложиться и брать свободные: linkedin, flickr, stackexchange.

              Эта буква явно отличается начертанием и поэтому (скорее всего) осталась в доступных на латинице символах:


              Но всё равно автору статьи спасибо.
                –3
                No match for "FACEBOOĸ.COM".
                >>> Last update of whois database: Sat, 12 Mar 2016 20:54:54 GMT <<<
                +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 <<<
                  0
                  Проверял стандартной утилитой whois в OS X. Домен копировал из вашего комментария.

                  Сейчас попробовал через какой-то online-сервис, сработало.
                    +2
                    просто у вас whois без поддержки idn, поэтому нужно было перегонять перед использованием
                  –3
                  Полезное наблюдение. Надеюсь, мошенники не догадаются об этом, так как по такой ссылке в скайпе я и сам кликнул бы.
                    0
                    Я осознаю, что комментарий оставлен совершенно не к месту и извиняюсь за это. Удалить или что-либо сделать с ним не могу и так, как этот комментарий аукается мне по сей день, огромная просьба последующим читателям не осуществлять каких-либо негативных действий в моем отношении.

                    Надеюсь на понимание и извиняюсь за данный пост. Спасибо!
                    0
                    Интересная заметка, которая рождает много вопросов =)
                    Например, зачем вообще была оставлена такая возможность (смешивать символы)? Каким образом происходят преобразования таких доменов в браузерах?
                    И проблема несколько шире. Оказывается, есть целый блок символов — https://en.wikipedia.org/wiki/Latin_Extended-A, которые, как я понимаю, можно смешивать с латинскими символами в DN.
                    0
                    В 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.
                      +2
                      Имхо, но турецкие İ/ı выглядят привлекательней https://en.wikipedia.org/wiki/Dotted_and_dotless_I

                      http://xn--twitter-8he.com/ — в FF вообще не отлечить от реального twitter.com
                        0
                        Действительно, несмотря на то, что в исходной статье автор говорит о символе ĸ, разрешенных к смешиванию намного больше. Вот из интересного:

                        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
                        yanďex.com
                        twſtter.com
                        tŵitter.com
                        ţwitter.com
                        twitťer.com
                        twįtter.com

                        yăhoo.com
                        ŷahoo.com
                        yąhoo.com
                        yaĥoo.com
                        yahŏo.com

                        fļickr.com
                        flįckr.com
                        flīckr.com

                        ďropbox.com
                        dŕopbox.com
                        dřopbox.com
                        drŏpbox.com

                        И тп. На всякий случай замечу, что ВСЕ вышеперечисленные компании были проинформированы о такой возможности с вот этим вот списком доменов, и все в лучшем случае заявили, что принимают эти риски, а в худшем — что я вообще ерунду какую-то им пишу, что ничего тут опасного и что им теперь — скупить все комбинации, типа twitter.xyz, чтоли?
                        Так что, смело разбирайте, кому интересно. На godaddy видел акцию скидок на домены на 1 год, там можно зарегать домены с такими символами =)
                          0
                          Привет из будущего.
                          Домен ɢoogle.com успешно забрали и теперь гугл с ним воюет: https://geektimes.ru/post/285398/
                            0
                            Очень подозреваю, что мой коммент и подтолкнул этого товарища к покупке. =)
                            whois:
                            Creation Date: 2016-03-23T10:41:46Z

                            Но и поделом ему.

                        Only users with full accounts can post comments. Log in, please.