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