Сайт https://www.арр?е.com/ имеет настоящий сертификат SSL (конечно же, от Let's Encrypt) и помечается в браузере как «надёжный сайт». Но на самом деле это совсем не то, что вы ожидали увидеть. Это просто демонстрация концепции — того, что некоторые современные браузеры отображают названия сайтов в Unicode вместо Punycode и вводят пользователей в заблуждение.

Punycode — это способ представления символов Unicode в названиях хостов с помощью ограниченного подмножества ASCII. Как сказано в RFC3492, Punycode — это вариант реализации более общего алгоритма Bootstring, когда строки, составленные из небольшого набора «базовых» символов (в данном случае, ASCII), могут представлять собой уникальные строки, составленные из большего набора символов (Unicode). Например, домен ?.co превращается в xn--s7y.co.

В вышеупомянутом домене https://www.арр?е.com/ первую букву хоста можно заменить на кириллический символ «а», символ кириллического алфавита (U+0430), а не ASCII (U+0041). Это старая добрая омографическая атака, с которой давно пытаются бороться разработчики браузеров и регистраторы доменных имён.

В идеальном мире доменные регистраторы не должны регистрировать домены, допускающие омографические атаки, а все браузеры будут нормально демонстрировать названия хостов в Unicode.

Поскольку мир не идеален, то разработчики браузеров внедрили собственные методы борьбы с такими атаками. В частности, в Chrome с 51-й версии и в Firefox с 22-й версии вариант домена в Unicode будет скрыт, если в хосте смешаны символы из разных алфавитов. Например, если в www.арр?е.com заменить первую букву на кириллический символ, то браузеры будут показывать адрес “xn--pple-43d.com”.

Проблема в том, что этот способ не работает, если злоумышленник заменил не часть букв, а все буквы домена на символы другого алфавита. В вышеупомянутом домене «яблочной компании» все пять символов заменены на кириллические символы. В Punycode это получается “xn--80ak6aa92e.com”, а можно выше увидеть, что браузер не защищает от такой атаки.

Поддельный адрес красиво демонстрируется и в Firefox, и в Chrome последних версий. Прописная кириллическая «?» в этом шрифте выглядит точно как латинская “l”.





Только если посмотреть на сертификат SSL, то подделку можно обнаружить.



Браузеры Internet Explorer и Safari не подвержены этой уязвимости. Например, на вкладке IE сразу отображается название сайта в Punycode.

К счастью, разработчики Chrome подготовили патч, который закрывает эту уязвимость. Его изначально подготовили для версии Chrome 59, но потом решили включить в состав Chrome 58, которая выйдет совсем скоро — 25 апреля. Судя по всему, после внедрения этого патча браузер будет демонстрировать версию Punycode во всех «спорных» ситуациях, когда есть какая-то вероятность фишинга, даже если символы принадлежат к одному алфавиту. Это означает, что некоторые адреса российских сайтов на кириллице, теоретически, теперь всегда будут демонстрироваться в «некрасивом» Punycode, а не в «красивом» Unicode. Например, http://сахар.com/ превратится в xn—80aa2cbv.com/. Что ж, владельцам таких сайтов не повезло.

Насчёт такого же патча для Firefox ситуация остаётся неопределённой: соответствующий тикет в Bugzilla поначалу пометили как «закрытый» и «не подлежащий выполнению» (WONTFIX), но сейчас его открыли заново. Так что есть надежда, что там тоже выпустят патч.

Пользователям Firefox остаётся только возможность обойти проблему: для этого можно изменить настройку network.IDN_show_punycode to true в about:config, установив её в значение true. Тогда Firefox будет показывать в виде Punycode все международные домены IDN. Не очень элегантно, но другого варианта нет.



Ещё один способ избежать некоторых проблем — использовать менеджеры паролей. Они не позволят ввести сохранённый пароль на сайте, у которого адрес в Punycode отличается от сохранённого. Таким образом, вы хотя бы сможете заметить, что на фишинговом сайте сохранённый пароль не вводится в форму — можно заподозрить неладное.

Вообще, нужно внимательно относиться к ссылкам, которые публикуются на веб-страницах или в почтовых сообщениях. Там такой защиты нет, и адреса фишинговых сайтов могут выглядеть точно как настоящие.
Поделиться с друзьями
-->

Комментарии (59)


  1. maaGames
    18.04.2017 19:19
    +6

    Не смог найти в кириллице букву " I ".


    1. Taciturn
      18.04.2017 19:27
      +3

      1. maaGames
        18.04.2017 19:30
        +4

        Безграмотный я не подумал, что в понятие кириллицы входит не только Русский алфавит, но и куча других.) Спасибо.


  1. Kalter
    18.04.2017 19:25
    +4

    Справедливости ради скажу, что Edge и Internet Explorer предупреждают пользователя о подобных доменах специальным значком в адресной строке, хотя этих мер, безусловно, недостаточно.

    Скриншоты



  1. maaGames
    18.04.2017 19:31

    Кстати, буквально пару часов назад пришло письмо от «google.com» с предложением по быстрому 300 «доллпров» заработать. Я не стал разбираться, какую там они букву подменили.


    1. Gugic
      18.04.2017 22:18
      +2

      Они выдают 300$ в качестве сайн-ин бонуса на google cloud. Возможно это было оно?


      1. maaGames
        19.04.2017 14:06
        +2

        Уверен, что они смогли бы написать слово «доллар» без ошибок.) А ещё письмо было написано комиксансом (для крутости! профессиональные дизайнеры уважают комиксанс), в несколько размеров и с выделением жирным лёгкого заработка. В общем, 100% не от гугла.


  1. xakepmega
    18.04.2017 20:01
    +1

    на macos версии хрома палочка «срезанна»
    image


    1. aivus
      19.04.2017 10:44

      Возможно это зависит от каких-то факторов, т.к. у меня в адресной строке выглядит нормально, а вот в тексте статьи — срезано.

      image


  1. qwertyk06
    18.04.2017 20:12
    -4

    Спасибо автору за статью! Огромное.
    А разработчикам браузеров пора задуматься, о том что зелёный замочек пора и разнообразить. Например ко всем сертификатам от Let's Encrypt вполне можно на зелёный замок добавлять жёлтую полоску, как говорится история отношений уже позволяет.


    1. n1nj4p0w3r
      18.04.2017 21:10
      +4

      Учитывая тот факт, что сертификат выписывается именно на punnycode-представление домена такой сертификат могут и продавцы воздухом подписать


    1. boingo-00
      18.04.2017 22:49

      Не разнообразить, а обесцветить. И вместо «безопасно» писать «шифрованое соединение»


    1. galaxy
      18.04.2017 23:11

      Например ко всем сертификатам от Let's Encrypt вполне можно на зелёный замок добавлять жёлтую полоску

      Чем провинился Let's Encrypt?


      1. QDeathNick
        20.04.2017 00:11
        +1

        1. galaxy
          21.04.2017 00:14
          -1

          А как нужно было? Фейс-контроль был ввести?


        1. MikailBag
          28.04.2017 08:37

          Он честно давал сертификат на домен, если я правильно понял новость.


          1. galaxy
            28.04.2017 14:59

            Именно.
            Я никак не могу понять, почему кто-то ожидает от сертификата и УЦ проверку и подтверждение чего-либо, кроме факта владения доменом.


            1. sumanai
              28.04.2017 17:03

              Вообще-то при выдачи расширенных сертификатов как раз и происходит проверка организации, их документации и прочего, так что абы кто EV сертификат не получит. Но это не относится к сертификатам с верификацией домена, какие выдаёт Let's Encrypt.


  1. ARD8S
    18.04.2017 20:55

    Поменял в фирефохе настройку, теперь стрёмно домены.рф отображаются.


    1. Lennonenko
      18.04.2017 22:47
      +11

      в этой зоне есть что-то полезное?


      1. tmin10
        19.04.2017 09:20
        -1

        надальнийвосток.рф — единственный сайт, который можно использовать в.рф нормально, остальные часто только зеркала из .ru


        1. Lennonenko
          19.04.2017 09:25
          +2

          эмм, так себе пример, как по мне, вся эта история дурно пахнет


          1. tmin10
            19.04.2017 10:38

            Мы же про сайты говорим. Это единственный известный мне пример нормального сайта в зоне.рф.


        1. last_hp
          19.04.2017 19:27

          там карта не работает. Так что нет, использовать не получится )


          1. tmin10
            19.04.2017 20:37

            Да вроде бы работала пару месяцев назад нормально, даже участки можно рисовать.


      1. Zufir
        19.04.2017 10:36

        да, например порталы новосибирских горводоканала и жкх, через которые идет оплата находятся в зоне.рф


  1. sumanai
    18.04.2017 21:12
    +2

    Только если посмотреть на сертификат SSL, то подделку можно обнаружить.

    Поэтому я ненавижу нововведение в FF (хотя это уже старовведение), когда название центра сертификации скрыли из выпадашки за дополнительным кликом.


    1. HKA
      18.04.2017 22:26
      +2

      В Хроме сертификат вообще запрятали в Dev Tools: https://superuser.com/questions/1160502/how-to-view-ssl-certificate-details-on-chrome.


      1. sumanai
        18.04.2017 23:13
        +1

        Нда, миленько. Такими темпами скоро придётся аккаунт разработчика покупать, чтобы запустить инструменты разработчика и увидеть домен сайта.


      1. KorDen32
        19.04.2017 12:36

        Ааа, так вот она где… А то я все думал что это разработчики Vivaldi что-то придумали, а это оказывается причуды гугла.
        Зато HTTP там где HTTPS не нужен мы уже красным цветом выделяем, несекурно же.


  1. dartraiden
    18.04.2017 21:25

    Вспоминается ещё этот баг.


  1. Mingun
    18.04.2017 21:34
    +7

    Чем думают разработчики браузеров? Красить фон нелатинских букв не вариант? Или это только мне в голову сразу же приходит такая очевиднейшая мысль?


    1. daggert
      19.04.2017 00:23
      +6

      Вопрос следует поставить иначе: Чем думали те кто разрешал не латинские символы в качестве домена?


      1. bubuq
        19.04.2017 00:36
        +2

        Не могу удержаться от цитирования себя девятилетней давности:


        в пределах имени можно употреблять символы одного, и только одного алфавита, для исключения вариантов «Microsoft» с кириллической «о» или «с». Под алфавитом мы понимаем «script» в юникоде.

        https://habrahabr.ru/post/28948/


        1. arandomic
          19.04.2017 18:15
          +1

          Ну в статье же прямо указано, что проблема не в символах разных алфавитов.
          Все слово арр?е набрано одним алфавитом — кирилицей.


          1. bubuq
            19.04.2017 18:30
            +1

            Слово apple набрано одним алфавитом, а слово "com" — другим. Я имел в виду, что один скрипт должен быть в пределах всех частей доменного имени.


            1. arandomic
              20.04.2017 14:33

              Хмм, теперь я заинтересовался, можно ли зарегистрировать кириллический домен первого уровня
              .арр в противовес гугловскому .app
              http://xn--80ak6aa92e.xn--80a6aa/

              Мне в корне не нравится подход к данной проблеме (если выполняются N условий — показываем в unicode/иначе — punicode) — я бы предпочел, чтобы для всех доменов из не-латиницы всегда дублировалось его punicode-отображение.
              (а для латиницы — дублировалась латиница)


      1. charliez
        19.04.2017 02:55

        Они хотели больше бабла, о том и думали…


      1. hdfan2
        19.04.2017 05:56

        Можно подумать, с латиницей такие атаки невозможны. Как вы от appIe.com защититесь?


        1. AFakeman
          19.04.2017 06:23

          При переходе по ссылке у меня в браузере доменное имя перешло в нижний регистр, обман вскрылся.


          1. hdfan2
            19.04.2017 06:27

            Главное, заставить людей по ссылке кликнуть. В адресную строку потом один из десяти посмотрит. В общем, отказ от нац. символов — не панацея, увы. Хотя с ними, конечно, возможности для обмана куда богаче.


            1. ilammy
              19.04.2017 06:46

              В адресную строку потом один из десяти посмотрит.

              Это если в браузере вообще есть адресная строка. Боюсь, скоро придём к тому, что она станет прибамбахой only for authorized personnel.


            1. Foreglance
              19.04.2017 09:51

              В статье помощи о безопасном соединении к сожалению несколько упростили понятие «безопасности», смешивая «защищенное соединение» и «безопасное использование сайта»:

              These symbols let you know how safe it is to visit and use a site

              Look at the address bar to make sure you're on the site you want to visit


            1. Ivanq
              19.04.2017 19:27

              Главное, заставить людей по ссылке кликнуть

              Тогда вообще достаточно google.com. (ссылка, если что, ведет на example.com)


        1. daggert
          19.04.2017 09:47
          +2

          Юникод в имени хоста не нужен, впрочем как и расширенная латиница.


    1. qwertyk06
      19.04.2017 00:37

      Хороая мысль… мне например в голову не пришла.


      1. Ghost_nsk
        19.04.2017 07:34

        Да не такая уж и плохая


    1. ragman
      19.04.2017 08:36
      +2

      На работе пользуюсь программой, в которой есть такая настройка:
      image
      Очень выручает в непонятных ситуациях.


      1. kablag
        20.04.2017 09:21
        +1

        Это что за программа?


        1. ragman
          20.04.2017 11:24
          +1

          Программа, к сожалению, к браузерам отношения не имеет. Привел просто как пример решения проблем с одинаковым начертанием не латинских символов.


          1. sumanai
            20.04.2017 17:06
            +3

            Думаю, такое пока ещё возможно реализовать в Firefox. Но с 57 версии, когда выпилят XUL и оставят WebExtensions, всё пропадёт, так что можно и не начинать (


            1. ragman
              24.04.2017 08:11
              +1

              Интересно, а представители Vivaldi не заинтересуются таким способом решения проблемы? Может хоть этот браузер сделает у себя такую расцветку адреса?


    1. Foreglance
      19.04.2017 09:46

      Как вариант — также показывать (выше\ниже) имя сайта в punicode.


    1. mazahakajay
      19.04.2017 09:52

      Боюсь, вы забываете, дизайн на первом месте. Пестрый адрес- некрасиво.


    1. arandomic
      19.04.2017 18:18

      Ну, люди, никогда не сталкивающиеся с нелатинскими названиями увидят тот же https://www.арр?е.com но при этом слово арр?е будет подкрашено.


  1. Rebel666
    19.04.2017 09:51

    Google Chrome
    Версия 60.0.3074.0 canary (64-bit)

    Справляется на ура… Правда, надежный, тоже пишет.


  1. aalebedev
    19.04.2017 10:10

    В Safari Версия 10.1 12603.1.30.0.34 в отлично. Отображается www.xn--80ak6aa92e.com
    image

    Все таки сайт apple


  1. T-362
    19.04.2017 12:14
    -2

    Нужно более элегантное решение чем, пардон, долбиться в адресную строку — как плагин флагфокс для лисы, показывающий айпи сайта региональным флагом с дополнительной информацией, только перед урл писать «ASCII» маленькой серенькой плашечкой, или «UTF» более красной плашечкой, при наведении на плашку показывать домен в пуникоде.
    Да и сам пуникод можно парсить подкрашивая его части отличимо от прямых ASCII символов.


  1. aaalllsss
    19.04.2017 12:41

    а как насчет в скобочках рядом писать «нормальный» адрес?