Фишинг через автозаполнение в Chrome (демо)
Давно известно, что функция автозаполнения в браузере — отличный вектор атаки. Браузер с легкостью отдает любому желающему сохраненную информацию для заполнения в форм, даже если этих форм не видно. А среди сохраненной информации в профиле автозаполнения могут быть и конфиденциальные данные. Например, домашний адрес пользователя или даже данные банковской карточки. Человек не всегда хочет делиться такой информацией, вводя просто адрес электронной почты в каком-нибудь списке рассылки. А придется поделиться, если у него браузер Chrome (в Firefox фичу обещают реализовать в ближайшее время, но пока не работает).
В браузере эта функция работает таким образом: при вводе одного из полей в большой форме профиль предлагает заполнить это поле и другие поля автоматически. Если пользователь соглашается, то поля заполняются и помечаются при этом желтым цветом.
Для большинства пользователей автозаполнение — удобная функция, которая позволяет экономить время, чтобы не заполнять вручную 10, 20 или больше полей. Мало кто из них задумывается, что передавая на сторону серверу всего лишь одно поле для автозаполнения он автоматически соглашается передать и все остальные. Но так оно и есть.
Финский веб-разработчик Вильями Куосманен (Viljami Kuosmanen) написал простую демку, которая наглядно демонстрирует, как происходит фишинг через автозаполнение.
Эта демка представляет собой простую страничку всего с двумя полями: имя и адрес электронной почты. Как обычно, вы начинаете заполнять имя, появляются варианты профилей автозаполнения — вы выбираете автозаполнение. После этого автоматически заполняются оба поля: и имя, и адрес электронной почты. Как и положено, они помечаются желтым цветом.
Далее нажимаете кнопку «Submit» — и наблюдаете весь набор данных из профиля автозаполнения, которые браузер передал удаленному хосту. Впечатляет.
Фишинг лучше всего работает в браузере Google Chrome. Там передача информации происходит совершенно незаметно для пользователя. В браузере Safari пользователь все-таки увидит, какая лишняя информация отправляется хосту. В Firefox пользователю нужно вручную нажимать правой кнопкой мыши по каждому полю, которое он хочет автоматически заполнить. Таким образом, фишинг вообще не сработает. Возможно, разработчики Firefox решили пожертвовать удобством пользователей ради дополнительной безопасности при активации профилей автозаполнения. Может быть, и зря. История показывает, что при выборе между удобством и безопасностью большинство пользователей часто выбирают удобство.
Возможно и то, что разработчики Firefox просто еще не закончили разработку такой удобной функции как профили автозаполнения, но в будущем обязательно реализуют ее по образцу Chrome.
В браузере Opera, судя по всему, профили автозаполнения передают информацию незаметно для пользователя точно так же, как и в Chrome.
Исходный код опубликован на Github, так что при желании вы можете внедрить такую демку на своем сайте. Сейчас энтузиасты вносят в код маленькие изменения, но пока что фишинговая форма выглядит следующим образом:
Browser Autofill Phishing
Из исходного кода страницы index.html
сразу понятно, что на ней спрятаны еще с десяток полей для ввода данных, но все они отформатированы с атрибутом «margin-left:-500 px»: там телефон, место работы, адрес, почтовый индекс, город, страна, месяц и год окончания действия кредитной карты, номер кредитной карты.
Пользователь их не видит из-за «margin-left:-500 px», а браузер спокойно заполняет каждое поле — и передает данные.
Как несложно понять, такую атаку легко провести, чтобы узнать номер кредитной карточки пользователя Chrome и другие данные о нем, если только он активирует функцию автозаполнения на вашей странице.
Возможно, атака работает не только в Chrome, но и в других браузерах на его кодовой базе. Например, в «Яндекс.Браузере». Этот браузер раньше вообще сливал кому угодно данные для синхронизации через простой CSRF-баг. Там не только информация для автозаполнения форм, но и пароли, закладки, история браузера и т.д. По сравнению с тем багом фишинг через автозаполнение в Chrome — это так, детская шалость. Уязвимость была устранена только в мае 2016 года.
Вообще, специалисты давно предупреждали об опасности использования профилей автозаполнения. Предупреждения прозвучали буквально сразу после того как эта функция появилась в браузере Chrome в 2013 году. С тех пор разработчики браузера так и не сумели реализовать грамотную защиту от автозаполнения скрытых полей.
Кстати, похожий трюк с заполнением невидимых форм давно используется для выявления ботов. Нормальные пользователи не заполняют поля, смещенные за пределы видимой области экрана, а боты — заполняют. Финский программист Вильями Куосманен просто применил тот же не трюк, но не против ботов, а против людей.
Чтобы уберечься от передачи нежелательных данных, достаточно просто отключить профили автозаполнения в браузере (функция включена по умолчанию).