Как стать автором
Обновить

Взлом тега в 100 символов

Время на прочтение 3 мин
Количество просмотров 24K
Автор оригинала: Bilaw.al Hameed
Не так давно я обнаружил, что JavaScript позволяет изменить атрибут href тега <a> после того, как вы щелкнете по нему. На первый взгляд это выглядит несерьезно, но не сомневайтесь — таким способом злоумышленник сможет получить данные пользователя.

Позвольте вам продемонстрировать: (Прим. пер.: Пример вы можете увидеть в оригинале статьи. Ссылка изначально ведет на PayPal, но после нажатия происходит редирект на другую страницу блога автора. )

Как вы убедились, вы не перешли на PayPal (кроме Opera, где, по-видимому, это поведение исправлено). Так произошло потому, что после нажатия на ссылку был запущен код, который изменил атрибут href ссылки, и что удивительно — браузер отправляет по-новому адресу. Но так не должно происходить. Посетители сайта (пожалуй, самые технически подкованные их них) по ссылке будут предполагать куда они переходят, в данном случае, на сайт PayPal. В прошлом году PayPal в течение нескольких месяцев производил редирект с главной страницы (UK) на paypal-business.co.uk. По моему мнению, пользователи уже привыкли к таким перенаправлениям, что уже само по себе является уязвимостью и представляет реальную угрозу, как я её называю «Фишинг 2.0».

Взглянем на код:
// Несжатый
var links = document.links;
for(i in links) {
    links[i].onclick = function(){
        this.href = 'http://bit.ly/141nisR';
    };
}

// Сжатый (было 100 символов; сейчас 67, исключая сссылку)
// Благодаря sgoel из HN
o=document.links;for(i in o){o[i].onclick=function(){this.href='//bit.ly/141nisR'}}

Это событие очень сложно обнаружить. Почти все, кто использует JavaScript/jQuery, пользуются обработчиками события тега <a>, а не навешиванием атрибута «onclick» прямо на ссылку, что обнаружить намного сложней. К тому же, можно использовать обертку setTimeout для обхода любых способов обнаружить обработчик. Любой мало-мальски способный хакер может сделать компьютерный вирус или использовать встраиваемый JavaScript код для инъекции. Очень легко можно обновить JavaScript код (инъекцией, в частности), и я бы сказал, что такие инструменты, как McAfeeSecure и PhishTank, не в состоянии противостоять «Фишингу 2.0»

Т.к. реальной пользы изменение атрибута ссылки по событию «onclick» не несёт, я предлагаю World Wide Web Consortium (W3C) и основным браузерам отключить данную возможность. Это невероятно простой недостаток, кому-то и вовсе такое поведение может показаться нормальным, но оно, вероятнее всего, может быть использовано во вред, а не на пользу. Я понимаю, Google и другие сайты могут использовать это поведение, но если мы хотим сделать интернет безопасным, мы не должны допустить существование такой, пусть и маленькой, уязвимости.

UPD (19/3) — Появилась идея — предупреждать пользователей, что при нажатии по ссылке будет произведен переход на другой домен (+1 to abididea). Сайты, такие как Google and Facebook, продолжат нормально функционировать, т.к. используют один домен, а это исключит возможность фишинга. В этом случае выиграют все (кроме фишеров, конечно же!). Мне нужна ваша помощь, чтобы основные браузеры приняли эту идею как можно быстрее. Давайте отнимем у злоумышленников один легкий способ обманывать простых пользователей.
UPD (19/3) — Предложил исправление Firefox, жду ответа.
UPD (20/3) — Ходят слухи что Google Chrome выпустит исправление, но подтверждения этому не слышал.

(Это мой первый перевод, прошу не судить строго, %username%, с радостью приму в личку все замечания и постараюсь исправить.)

UPD: Хочу обратить внимание — моё мнение не всегда совпадает с автором оригинальной статьи, особенно в идее уведомления при редиректе. И я поддерживаю уже высказанную в комментариях точку зрения, что необходимо проверять адресную строку, перед вводом данных.
Теги:
Хабы:
+24
Комментарии 64
Комментарии Комментарии 64

Публикации

Истории

Работа

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн