20.04.2017 в 09:56
Хитрая фишинговая атака на Chrome, Firefox и Opera
Атаку заметил китайский исследователь Сю Дун Чжен (Xudong Zheng), но похожие методы использовались еще с 2001 года.
Метод опирается на особенности рендеринга браузером URL в кодировке Punycode, содержащих разноязыкие символы. Punycode уже несколько лет допускается к использованию при регистрации Unicode-доменов во избежание путаницы из-за визуального сходства букв в разных языках (которым нередко пользуются фишеры).
По умолчанию браузеры должны читать URL в Punycode и «переводить» их в Unicode. Однако разработчики браузеров понимают, что Punycode может использоваться с целью маскировки фишинговых сайтов. Например, если зарегистрировать домен xn-pple-43d.com, в Unicode он будет эквивалентен apple.com, хотя на самом деле он использует кириллическую «а» вместо латинской. Поэтому создатели браузеров решили фильтровать как заведомо фишинговые адреса в кодировке Punycode, если ссылка содержит буквы из различных алфавитов. Но злоумышленники могут найти лазейку и тут.
Чжен первым увидел, как можно эксплуатировать эту особенность. Так как различные семейства символов в Unicode содержат вариации на основе латинского алфавита, исследователь зарегистрировал домен на одном из этих языков. Когда символы в Punycode, соответствующие одному языковому набору в Unicode, были распознаны браузерами, подобный адрес смог обойти защитные фильтры. Например, xn-80ak6aa92e.com отображается как арр&е.com, и заметить подмену можно только посмотрев на сертификат сайта, в котором домен остается в кодировке Punycode.
Браузеры Chrome, Firefox и Opera (в том числе Opera Neon ) уязвимы к подобной атаке, а Edge, Internet Explorer, Safari, Vivaldi и Brave правильно отображают Punycode URL. Скорее всего, это связано с настройками ОС.
Исследователь обратился к Google и Mozilla 20 января; Google уже исправила баг в версии браузера Canary 59 и начиная с Chrome Stable 58 это исправление будет в браузере постоянно. В Mozilla все еще обсуждают патч, но пользователи имеют возможность отключить поддержку кодировки Punycode.