🖱️ Clickjacking: Вас взламывают прямо под курсором
Кратко: Вы кликаете по кнопке «Подписаться», а на самом деле нажимаете «Перевести деньги». Вы не видите обмана, потому что злоумышленник накрыл настоящую кнопку прозрачным слоем. Это clickjacking (UI redress attack) — одна из самых старых, аккуратных и до сих пор опасных уязвимостей в вебе. Классика из OWASP Top 10.
▫️ Как это работает Хакер размещает на своём сайте вредоносную страницу, которая выглядит как безобидная игра или статья. Внутри прозрачного элемента (iframe) загружается ваш банковский сайт.
<\div class="game"> <\iframe src="https://bank.com/transfer" style="opacity:0;"><\/iframe> <\button>🔥 Забрать бонус!<\/button>
Жертва видит кнопку «Забрать бонус!», но клик проваливается прямо и попадает на кнопку «Перевести 1000 рублей». Банк получит запрос, сгенерированный действиями ничего не подозревающего человека.
▫️ Варианты атак 1. Лайки и подписки — невидимый слой поверх кнопки «Подписаться/Like». 2. Включение камеры и микрофона — жертва кликает, давая разрешение. 3. Подмена нажатий (Cursor Hijacking): курсор отрисовывают заново, чтобы обманом заставить нажать на невидимый элемент. 4. Файловые загрузки: жертва «открывает картинку», но на самом деле разрешает запустить вредоносный файл. 5. Корпоративные сети: внутренние приложения без CSRF-токенов особенно уязвимы.
▫️ Как защититься (X-Frame-Options) Самый простой способ: запретить сайту загружаться внутри чужих iframe. X-Frame-Options (устаревает, но работает):
X-Frame-Options: DENY # полный запрет X-Frame-Options: SAMEORIGIN # только свои страницы
Content-Security-Policy (современный стандарт 2026): Content-Security-Policy: frame-ancestors ‘none’; Content-Security-Policy: frame-ancestors ‘self’ https://trusted.com;
CSP frame-ancestors пришёл на смену X-Frame-Options и поддерживается всеми современными браузерами.
▫️ Культурный феномен · «Невидимая кнопка» — классическая шутка: «Я нажал на рекламу “Вы выиграли iPhone”, а произошёл перевод денег, может, я просто щедрый?». · UI Redress Attack — официальное название уязвимости, которую обнаружили ещё в 2002 году. · Clickjacking — спуфинг сетевого интерфейса — иногда называют так, из-за маскировки интерфейса. · OWASP — включает clickjacking в список уязвимостей с самого начала существования организации.
▫️ Современное положение (2026) Clickjacking не умер. Причины: · Старые приложения без CSP-заголовков (десятилетние CRM без обновлений). · Мобильные браузеры — ранние версии плохо поддерживали frame-ancestors. · Неправильные настройки — разработчики ставят X-Frame-Options: SAMEORIGIN, но не думают о том, что злоумышленник может подставить страницу с другого поддомена. Clickjacking до сих пор есть в банковских приложениях и корпоративных порталах, где не закрыли эту дыру.
▫️ Чек-лист для разработчика 1. Добавьте X-Frame-Options: DENY (или SAMEORIGIN). 2. Добавьте frame-ancestors в CSP (перекроет все старые косяки). 3. Используйте JavaScript-защиту (для старых браузеров): отлавливать, если страница загружена в чужой frame, и показывать баннер «Опасно!».
▫️ Коротко о главном Clickjacking — это атака не на код, а на интерфейс. Вы можете быть самым опытным пользователем, но если злоумышленник подменил кнопку в браузере — вы нажмёте туда, куда он хочет. Защита: два заголовка (X-Frame-Options и frame-ancestors) и тест в браузере перед релизом. Открываете свою страницу в iframe на тестовом сайте — не должно работать.
#clickjacking #веббезопасность #инфобез #csp #xframeoptions #owasp