Гайнуллина Екатерина, Security Vision
Введение
Современный дизайн, стремящийся к удобству и интуитивности, может стать опасным оружием в руках злоумышленников. Минималистичные интерфейсы, копирующие стиль популярных брендов, вызывают доверие, позволяя обманом получить данные пользователя. Темные паттерны — яркие кнопки «Согласиться» вместо почти невидимых «Отклонить» или ложные таймеры с надписью «Действуйте срочно!» подталкивают к поспешным действиям. А эмоциональные триггеры вроде фейковых уведомлений «Ваш аккаунт будет заблокирован!» отключают критическое мышление. Более того, стремление к простоте нередко скрывает важные детали, такие как URL сайта или текст разрешений. В результате пользователь, полагаясь на удобство и привычный вид интерфейса, становится лёгкой добычей. Невнимательность пользователей — главный союзник злоумышленников в успешных атаках. Человеческий мозг устроен так, чтобы экономить усилия: мы привыкли доверять знакомым интерфейсам, делать привычные действия автоматически и не вчитываться в мелкий текст. Злоумышленники умело используют эти особенности, создавая атаки, которые маскируются под обычные задачи. Например, фейковые уведомления или поддельные окна входа, внешне идентичные настоящим, опираются на нашу невнимательность: мы просто не проверяем детали, такие как URL или разрешения. Еще один важный фактор — перегрузка информацией. Когда интерфейсы переполнены текстом или действия нужно выполнять быстро, пользователь не успевает анализировать происходящее. Именно поэтому атаки через привычные действия вроде кликов или сканирования QR-кодов оказываются столь успешными. Невнимательность позволяет атакующему обойти логику и критическое мышление, превращая каждое неосознанное действие в точку уязвимости.
Цель этой статьи — показать, как киберпреступники используют самые неожиданные и тонкие механизмы для атак, опираясь на привычное поведение пользователей. В статье будут рассмотрены интересные и необычные техники, которые не сразу бросаются в глаза, но способны нанести серьезный ущерб.
Clickjacking (захват кликов)
Clickjacking или захват кликов — это техника, при которой злоумышленники манипулируют действиями пользователя, заставляя его кликать не туда, куда он собирался. Обычно это достигается с помощью невидимых слоев интерфейса или фреймов, которые накладываются поверх легитимных элементов. Пользователь думает, что нажимает на кнопку «Воспроизвести видео» или «Лайкнуть пост», но на самом деле активирует скрытую функцию: подписку на спам, передачу данных или запуск вредоносного кода. Один из классических примеров — поддельные кнопки на веб-сайтах, которые на вид безобидны, но приводят к подписке на платные услуги. Clickjacking использует доверие пользователя к интерфейсу и его привычку к автоматическим действиям, превращая обыденные клики в инструмент кибератак. И даже в 2024 году уязвимости, связанные с clickjacking, остаются актуальными:
Рисунок 1. Уязвимость захват клика в БДУ [1]
В зависимости от специфики операции, атака может принимать разные формы и названия. Существуют следующие варианты [2]:
· Likejacking (кража лайков): Этот тип атаки направлен на перехват кликов пользователей, чтобы перенаправить их на нажатие кнопки «Лайк» на странице Facebook или других социальных сетях.
· Cookiejacking (кража cookies): Пользователь вынуждается взаимодействовать с элементом интерфейса, например, через перетаскивание (drag and drop), предоставляя злоумышленнику доступ к cookies, хранящимся в браузере. Это может позволить атакующему выполнять действия на целевом сайте от имени пользователя.
· Filejacking (кража файлов): При этом типе атаки пользователь позволяет злоумышленнику получить доступ к своей локальной файловой системе и забрать файлы.
· Cursorjacking (подмена курсора): Эта техника изменяет положение курсора на экране таким образом, что пользователь думает, что совершает одно действие, но на самом деле выполняет другое.
· Атаки на менеджеров паролей: Этот вид атак направлен на обман менеджеров паролей, чтобы воспользоваться функцией автозаполнения (auto-fill) и получить доступ к учетным данным.
Каждый из этих видов атак демонстрирует изощренность злоумышленников, манипулирующих взаимодействием пользователей с интерфейсом.
Рисунок 2. Процесс clickjacking-атаки [3]
1. Отправка ссылки
Злоумышленник создаёт вредоносный веб-сайт или страницу и отправляет пользователю ссылку через электронную почту, социальные сети или другие каналы связи.
2. Жертва открывает ссылку
Жертва открывает эту ссылку в своём браузере, не подозревая, что страница содержит вредоносный элемент.
3. Открытие целевого веб-сайта через фрейм
Веб-сайт злоумышленника встраивает целевой сайт (например, социальную сеть или онлайн-банкинг) в скрытый или невидимый iframe. Это создаёт иллюзию, что пользователь взаимодействует с безопасной страницей.
4. Жертва выполняет действие, думая, что оно безопасно
Жертва нажимает на кнопку или элемент интерфейса, который выглядит безобидно (например, кнопка «Лайк» или «Подтвердить»). Но на самом деле это действие выполняется внутри iframe, а результат уходит на целевой сайт. Злоумышленник получает контроль над выполненным действием — например, активирует подписку, передаёт доступ к данным или взламывает учётную запись.
Итог
Clickjacking основывается на доверии пользователя к видимым элементам интерфейса. Жертва не осознаёт, что клики перенаправляются на другой, скрытый слой. Таким образом, злоумышленник может выполнить действия от имени пользователя без его согласия.
Как же защититься от подобных атак?
OWASP (Open Web Application Security Project) предлагает несколько методов защиты от атак типа clickjacking, включая использование заголовков HTTP и директив Content Security Policy (CSP).
1. Заголовок X-Frame-Options
Заголовок X-Frame-Options позволяет контролировать, может ли ваша веб-страница быть загружена в <iframe> на других сайтах. Это помогает предотвратить несанкционированное встраивание вашего контента.
Варианты значений:
-
DENY: Полностью запрещает загрузку страницы в <iframe>.
-
SAMEORIGIN: Разрешает загрузку страницы в <iframe> только если запрос исходит с того же домена.
-
ALLOW-FROM uri: Разрешает загрузку страницы в <iframe> только с указанного URI.
Пример настройки:
X-Frame-Options: SAMEORIGIN
Ограничения:
-
X-Frame-Options не поддерживает указание нескольких источников.
-
Некоторые старые браузеры могут не поддерживать этот заголовок.
2. Директива frame-ancestors в Content Security Policy (CSP)
Директива frame-ancestors в CSP определяет, какие источники имеют право встраивать вашу страницу в <iframe>. Она предоставляет более гибкий и современный способ защиты по сравнению с X-Frame-Options.
Пример настройки:
Content-Security-Policy: frame-ancestors 'self' https://trusted.com;
Этот заголовок разрешает встраивание страницы только самим собой и доменом trusted.com.
Преимущества:
-
Поддерживает указание нескольких источников.
-
Обеспечивает более точный контроль над встраиванием контента.
Ограничения:
-
Требует поддержки CSP браузером.
-
Некоторые старые браузеры могут не поддерживать эту директиву.
Манипуляции с прокруткой страницы (Scrolljacking)
Scrolljacking (или перехват прокрутки) — это техника, при которой злоумышленники изменяют стандартное поведение прокрутки веб-страницы, чтобы манипулировать действиями пользователей. Эта техника используется как для улучшения UX в легальных проектах, так и для вредоносных целей. В случае атак, злоумышленники используют прокрутку для запуска скрытых действий, которые пользователь не осознаёт.
Примеры атак Scrolljacking
Пример 1: Автоматическая покупка товара
Злоумышленник создает сайт, предлагающий «бесплатный» продукт. Во время прокрутки страницы пользователь видит больше информации о продукте, но в какой-то момент незаметно срабатывает скрытая кнопка «Купить». Прокрутка автоматически отправляет форму с данными пользователя, если он ранее заполнил их.
Механизм: Злоумышленники используют JavaScript для перехвата событий прокрутки (onscroll
) и вызывают функции, имитирующие клик или отправку формы.
Пример 2: Подмена ссылок (Link Hijacking)
Пользователь посещает сайт с длинным текстом или статьёй. При прокрутке вниз страницы срабатывает редирект, который перенаправляет его на фишинговый сайт.
Механизм: Код JavaScript отслеживает положение прокрутки и вызывает window.location.href
, чтобы автоматически загрузить другой URL.
Пример 3: Незаметная подписка
На сайтах с поддельными акциями или розыгрышами прокрутка страницы незаметно активирует подписку на платный сервис. Пользователь даже не осознаёт, что это произошло, пока не получает счёт.
Механизм: Прокрутка вниз вызывает JavaScript, который имитирует нажатие на невидимую кнопку подписки.
Схема атаки Scrolljacking
Этап 1: Приманка
· Злоумышленник создаёт сайт с привлекательным содержанием: акции, бесплатные продукты, скидки или важную информацию.
· Пользователю предлагается просмотреть страницу, часто с длинным текстом или списком продуктов.
Этап 2: Изменение поведения прокрутки
Через JavaScript добавляются обработчики событий (onscroll
), которые перехватывают каждое действие пользователя при прокрутке страницы.
Этап 3: Скрытые действия
Прокрутка инициирует выполнение следующих скрытых действий:
· Автоматическое нажатие на скрытую кнопку или ссылку (через element.click()
).
· Отправка формы с данными пользователя, если они уже были заполнены.
· Редирект на вредоносный сайт.
· Добавление товара в корзину и завершение покупки.
Этап 4: Завершение атаки
Пользователь либо не осознаёт, что стал жертвой атаки, либо понимает это слишком поздно (например, при списании денег или загрузке вредоносного файла).
Как защититься?
Для пользователей:
1. Используйте современные браузеры:
Обновлённые версии браузеров, такие как Chrome, Firefox или Edge, имеют встроенные механизмы защиты от вредоносных скриптов.
2. Блокируйте скрипты:
Установите расширения вроде uBlock Origin или NoScript, чтобы предотвращать выполнение подозрительных скриптов.
3. Будьте внимательны:
Если сайт ведёт себя странно при прокрутке (например, происходит что-то неожиданное), закройте страницу и не вводите свои данные.
Для разработчиков:
1. Ограничивайте использование onscroll
:
Если прокрутка используется для анимаций или UX-улучшений, избегайте автоматических кликов или изменений.
2. Защищайте формы и кнопки:
Проверяйте действия пользователей (например, подтверждение перед отправкой формы).
3. Добавляйте уведомления:
Если пользователь выполняет важные действия (покупка, подписка), требуйте дополнительного подтверждения.
Scrolljacking — это пример того, как UX-улучшения могут стать инструментом для манипуляции пользователями. Злоумышленники используют простые трюки с прокруткой, чтобы заставить пользователей выполнять действия без их согласия. Поэтому важно оставаться внимательными и использовать современные инструменты безопасности.
Заключение
Баланс между удобством интерфейса и безопасностью — это одна из ключевых задач для разработчиков. Интерфейсы должны оставаться простыми и понятными, но при этом защищать пользователя. Подсказки, предупреждения, проверка действий в критические моменты — всё это помогает пользователям быть более осознанными, не жертвуя удобством. Грамотно продуманный дизайн и современные меры защиты, такие как двухфакторная аутентификация или использование Content Security Policy, позволяют минимизировать риски.
Однако никакие технологии не заменят внимательности и осведомлённости самих пользователей. Проверяйте ссылки, осторожно относитесь к уведомлениям и обновляйте программное обеспечение. Помните: в цифровом мире ваша безопасность начинается с вашего выбора. Только объединяя усилия разработчиков и пользователей, мы можем противостоять новым угрозам и сделать интернет более безопасным местом.