Веб-атака gesture jacking похожа на кликджекинг, но надежнее

Веб-атака gesture jacking похожа на кликджекинг, но надежнее

Обман пользователя по методу gesture jacking позволяет перехватить нажатие кнопки на веб-странице и перенаправить поданный через браузер запрос на другой сайт, пока пользователь давит на клавишу.

Новый вектор атаки, по сути, представляет собой вариант кликджекинга, он же UI redress (переадресация интерфейса). Обнаруживший его эксперт Amazon назвал свою находку cross window forgery (дословно: межоконный подлог). Ознакомившись с новой угрозой, Эрик Лоуренс (Eric Lawrence) из Microsoft решил, что gesture jacking (перехват жеста) будет точнее.

Автору атаки лишь нужно убедить визитера нажать и удержать клавишу ввода или пробела при посещении сайта с вредоносным скриптом. Этот жест будет воспринят как разрешение для всплывающего окна и приведет к активации кнопки на целевой странице.

Если в результате будет выполнен вход или перевод денег, последствия для жертвы могут оказаться необратимыми. И браузерный блокировщик всплывающих окон в этом случае не спасет: он прибивает только те окна, которые открываются самопроизвольно.

Добиться от посетителя нужного жеста можно с помощью встроенного интерактивного элемента, который выводит, к примеру, такое сообщение: «Нажмите и удерживайте клавишу ввода, чтобы продолжить».

 

Подобные атаки возможны из-за того, что браузеры при обработке URL с фрагментом (идентификатором после знака «#») автоматически прокручивают страницу до первого элемента с совпадающим по значению ID и устанавливают фокус. В итоге клавиатурный ввод направляется этому элементу.

 

«Атака gesture-jacking более надежна [в сравнении с кликджекингом], так как при этом не нужно тщательно позиционировать окна, рассчитывать время клика и учитывать особенности настройки дисплея пользователя», — отметил в своем блоге Лоуренс.

Кликджекинг может использоваться для накрутки кликов в реферальной программе, раздачи вредоносов, кражи учетных данных. Сбор лайков в соцсети таким методом даже получил отдельное название — лайкджекинг.

Разработчики браузеров пытаются бороться с этой неистребимой проблемой. Компания Google, например, ввела опцию принудительной загрузки страниц без фокуса на указанных в URL фрагментах. В Mozilla обсуждают такую возможность, но пока обходятся патчами (CVE-2023-34414, CVE-2023-6206), хотя это вряд ли уязвимость — скорее фича.

Веб-разработчики тоже могут внести свою лепту: не добавлять ID-атрибуты кнопкам высокой степени риска или рандомизировать значения при каждой загрузке страницы. Можно также предусмотреть для таких страниц механизм, подобный редиректу, чтобы фрагменты в URL сбрасывались.

Хорошо помогает запрет демонстрации страниц в фреймах через настройки Content Security Policy. Использование опции frame-ancestors позволит контролировать список URL прямых родителей по DOM, которым разрешено использовать контейнеры <frame>, <iframe>, <object>, <embed>. Как вариант, можно организовать спецпроверки (размер окна при загрузке контента, длительность подачи запроса через клавиатурный ввод) и активировать элементы интерфейса на страницах лишь по сигналу об отсутствии угрозы.