Chrome 58 залатает защиту от омографических атак



    Сайт 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 отличается от сохранённого. Таким образом, вы хотя бы сможете заметить, что на фишинговом сайте сохранённый пароль не вводится в форму — можно заподозрить неладное.

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

    Подробнее
    Реклама

    Комментарии 63

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


        0
        Кстати, буквально пару часов назад пришло письмо от «google.com» с предложением по быстрому 300 «доллпров» заработать. Я не стал разбираться, какую там они букву подменили.
          +2
          Они выдают 300$ в качестве сайн-ин бонуса на google cloud. Возможно это было оно?
            +2
            Уверен, что они смогли бы написать слово «доллар» без ошибок.) А ещё письмо было написано комиксансом (для крутости! профессиональные дизайнеры уважают комиксанс), в несколько размеров и с выделением жирным лёгкого заработка. В общем, 100% не от гугла.
          +1
          на macos версии хрома палочка «срезанна»
          image
            0
            Возможно это зависит от каких-то факторов, т.к. у меня в адресной строке выглядит нормально, а вот в тексте статьи — срезано.

            image
            –4
            Спасибо автору за статью! Огромное.
            А разработчикам браузеров пора задуматься, о том что зелёный замочек пора и разнообразить. Например ко всем сертификатам от Let's Encrypt вполне можно на зелёный замок добавлять жёлтую полоску, как говорится история отношений уже позволяет.
              +4
              Учитывая тот факт, что сертификат выписывается именно на punnycode-представление домена такой сертификат могут и продавцы воздухом подписать
                0
                Не разнообразить, а обесцветить. И вместо «безопасно» писать «шифрованое соединение»
                  0
                  Например ко всем сертификатам от Let's Encrypt вполне можно на зелёный замок добавлять жёлтую полоску

                  Чем провинился Let's Encrypt?
                      –1
                      А как нужно было? Фейс-контроль был ввести?
                        0

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

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

                              Он разве EV выдавал?

                                +1
                                Нет и не может. Я к тому написал, что не все центры сертификации выдают только подтверждающие домен сертификаты, и что есть сертификаты, которым действительно можно доверять.
                                  +1
                                  Ну а я писал про обычные серты.

                                  которым действительно можно доверять

                                  Доверять можно и сертификатам Let's Encrypt, вопрос в предмете доверия.
                                  Я сталкивался с процедурой EV: они проверяют существование компании (чаще всего через агрегаторы реестров вроде http://www.dnb.com/), владение доменом, прозвонят телефон, проверят какую-нибудь админскую почту. Причем проверяют зачастую нерезиденты, не знающие национальной специфики люди (максимум, владеющие языком), и задурить им голову при желании, думаю, не сложно. Естественно, EV сертификат не гарантирует, чтосайт не мошеннический.
                                    –1
                                    Ну, он стоит денег и времени, так что хоть это и не гарантия, но вероятность зайти на мошеннический сайт с EV сертификатом мала.
                    0
                    Поменял в фирефохе настройку, теперь стрёмно домены.рф отображаются.
                      +11
                      в этой зоне есть что-то полезное?
                        –1
                        надальнийвосток.рф — единственный сайт, который можно использовать в.рф нормально, остальные часто только зеркала из .ru
                          +2
                          эмм, так себе пример, как по мне, вся эта история дурно пахнет
                            0
                            Мы же про сайты говорим. Это единственный известный мне пример нормального сайта в зоне.рф.
                            0
                            там карта не работает. Так что нет, использовать не получится )
                              0
                              Да вроде бы работала пару месяцев назад нормально, даже участки можно рисовать.
                            0
                            да, например порталы новосибирских горводоканала и жкх, через которые идет оплата находятся в зоне.рф
                          +2
                          Только если посмотреть на сертификат SSL, то подделку можно обнаружить.

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

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

                              +1
                              Нда, миленько. Такими темпами скоро придётся аккаунт разработчика покупать, чтобы запустить инструменты разработчика и увидеть домен сайта.
                                0
                                Ааа, так вот она где… А то я все думал что это разработчики Vivaldi что-то придумали, а это оказывается причуды гугла.
                                Зато HTTP там где HTTPS не нужен мы уже красным цветом выделяем, несекурно же.
                              0
                              Вспоминается ещё этот баг.
                                +7

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

                                  +6

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

                                    +2

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


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

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

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

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

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

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

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

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

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

                                                0
                                                В статье помощи о безопасном соединении к сожалению несколько упростили понятие «безопасности», смешивая «защищенное соединение» и «безопасное использование сайта»:
                                                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
                                                  0
                                                  Главное, заставить людей по ссылке кликнуть

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

                                                +2

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

                                              0
                                              Хороая мысль… мне например в голову не пришла.
                                                0
                                                Да не такая уж и плохая
                                                +2
                                                На работе пользуюсь программой, в которой есть такая настройка:
                                                image
                                                Очень выручает в непонятных ситуациях.
                                                  +1

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

                                                    +1
                                                    Программа, к сожалению, к браузерам отношения не имеет. Привел просто как пример решения проблем с одинаковым начертанием не латинских символов.
                                                      +3
                                                      Думаю, такое пока ещё возможно реализовать в Firefox. Но с 57 версии, когда выпилят XUL и оставят WebExtensions, всё пропадёт, так что можно и не начинать (
                                                        +1
                                                        Интересно, а представители Vivaldi не заинтересуются таким способом решения проблемы? Может хоть этот браузер сделает у себя такую расцветку адреса?
                                                  0
                                                  Как вариант — также показывать (выше\ниже) имя сайта в punicode.
                                                    0
                                                    Боюсь, вы забываете, дизайн на первом месте. Пестрый адрес- некрасиво.
                                                      0
                                                      Ну, люди, никогда не сталкивающиеся с нелатинскими названиями увидят тот же https://www.аррӏе.com но при этом слово аррӏе будет подкрашено.
                                                      0
                                                      Google Chrome
                                                      Версия 60.0.3074.0 canary (64-bit)

                                                      Справляется на ура… Правда, надежный, тоже пишет.
                                                        0
                                                        В Safari Версия 10.1 12603.1.30.0.34 в отлично. Отображается www.xn--80ak6aa92e.com
                                                        image

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

                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                            Самое читаемое