Остерегайтесь идентификации в социальных сетях

Трудно удержаться, чтобы не щелкнуть ссылку на бесплатное предложение iPhone. Но будьте осторожны: ваш клик может быть легко перехвачен, и результаты могут быть катастрофическими.

Clickjacking — это метод атаки, также известный как исправление пользовательского интерфейса, потому что он настраивается путем маскировки (или исправления) ссылки с наложением, которое обманом заставляет пользователя делать что-то другое, чем он или она думает.

Большинству пользователей социальных сетей нравится удобство постоянного входа в них. Злоумышленники могут легко воспользоваться этой привычкой, чтобы незаметно заставить пользователей поставить лайк или подписаться на что-либо. Для этого киберпреступник может разместить заманчивую кнопку, например, с заманчивым текстом, таким как «Бесплатный iPhone — предложение ограничено по времени», на свою веб-страницу и наложить на нее невидимую рамку со страницей социальной сети, в таком так, как кнопка «Мне нравится» или «Поделиться» располагается над кнопкой «Бесплатный iPhone».

Этот простой трюк с кликджекингом может заставить пользователей Facebook лайкать группы или фан-страницы, даже не подозревая об этом.

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

Поскольку большинство методов кликджекинга требуют социальной инженерии, социальные сети становятся идеальным вектором атаки.

Давайте посмотрим, как они используются.

Кликджекинг в Твиттере

Около десяти лет назад социальная сеть Twitter подверглась массированной атаке, которая быстро распространила сообщение, заставившее пользователей переходить по ссылке, пользуясь своим естественным любопытством.

Твиты с текстом «Не нажимайте», за которым следует ссылка, быстро распространились по тысячам аккаунтов в Твиттере. Когда пользователи нажимали на ссылку, а затем на, казалось бы, невинную кнопку на целевой странице, из их учетных записей отправлялся твит. Этот твит содержал текст «Не нажимайте», за которым следовала вредоносная ссылка.

Инженеры Twitter исправили атаку кликджекинга вскоре после ее начала. Сама атака оказалась безобидной и послужила сигналом тревоги, сообщающим о потенциальных рисках, связанных с инициативами по захвату кликов в Твиттере. Вредоносная ссылка вела пользователя на веб-страницу со скрытым iframe. Внутри рамки находилась невидимая кнопка, которая отправляла вредоносный твит с аккаунта жертвы.

Кликджекинг на Facebook

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

Чего они не знали, так это того, что декларация находилась под невидимой рамкой.

Когда пользователи приняли декларацию, они попали на страницу с забавными картинками. Но тем временем ссылка была опубликована в хронике пользователей Facebook. Это стало возможным, потому что компонент веб-браузера в приложении Facebook для Android несовместим с заголовками параметров фрейма (ниже мы объясним, что это такое) и, следовательно, допускает наложение вредоносного фрейма.

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

Clickjacking в меньших социальных сетях

Это не только Twitter и Facebook. Другие менее популярные социальные сети и платформы для ведения блогов также имеют уязвимости, позволяющие осуществлять кликджекинг. В LinkedIn, например, была уязвимость, которая давала злоумышленникам возможность обманным путем заставить пользователей делиться и публиковать ссылки от их имени, но без их согласия. До исправления уязвимость позволяла злоумышленникам загружать страницу LinkedIn ShareArticle в скрытом фрейме и накладывать этот фрейм на страницы с, казалось бы, невинными и привлекательными ссылками или кнопками.

Другой пример — Tumblr, общедоступная платформа для ведения веб-блогов. Этот сайт использует код JavaScript для предотвращения кликджекинга. Но этот метод защиты становится неэффективным, поскольку страницы могут быть изолированы во фрейме HTML5, что не позволяет им запускать код JavaScript. Для кражи паролей может быть использован тщательно продуманный метод, сочетающий упомянутую уязвимость с плагином для браузера, помогающим с паролями: обманывая пользователей, вводя ложный текст капчи, они могут непреднамеренно отправлять свои пароли на сайт злоумышленника.

Подделка межсайтовых запросов

Один из вариантов атаки кликджекинга называется подделкой межсайтовых запросов или сокращенно CSRF. С помощью социальной инженерии киберпреступники направляют CSRF-атаки на конечных пользователей, заставляя их выполнять нежелательные действия. Вектор атаки может быть ссылкой, отправленной по электронной почте или в чате.

Атаки CSRF не предназначены для кражи данных пользователя, поскольку злоумышленник не может увидеть ответ на фальшивый запрос. Вместо этого атаки нацелены на запросы на изменение состояния, такие как смена пароля или перевод средств. Если у жертвы есть административные привилегии, атака может скомпрометировать все веб-приложение.

Атака CSRF может храниться на уязвимых веб-сайтах, особенно на веб-сайтах с так называемыми «сохраненными недостатками CSRF». Этого можно добиться, введя теги IMG или IFRAME в поля ввода, которые позже отображаются на странице, например в комментариях или на странице результатов поиска.

Предотвращение фреймовых атак

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

Методы смягчения последствий на стороне клиента называются блокировкой кадров или уничтожением кадров. Хотя в некоторых случаях они могут быть эффективными, их также можно легко обойти. Вот почему методы на стороне клиента не считаются лучшими практиками. Вместо блокировки кадров эксперты по безопасности рекомендуют методы на стороне сервера, такие как X-Frame-Options (XFO), или более современные, такие как Content Security Policy.

X-Frame-Options — это заголовок ответа, который веб-серверы включают в веб-страницы, чтобы указать, разрешено ли браузеру отображать его содержимое внутри фрейма.

Заголовок X-Frame-Option допускает три значения.

  • DENY, запрещающий отображение страницы во фрейме
  • SAMEORIGIN, который позволяет отображать страницу во фрейме, пока она находится в том же домене.
  • РАЗРЕШЕННЫЙ ОТ URI, который позволяет отображать страницу внутри фрейма, но только в указанном URI (унифицированном идентификаторе ресурса), например, только в пределах конкретной конкретной веб-страницы.

Более современные методы защиты от кликджекинга включают политику безопасности содержимого (CSP) с директивой предков фреймов. Этот вариант широко используется для замены XFO. Одним из основных преимуществ CSP по сравнению с XFO является то, что он позволяет веб-серверу авторизовать несколько доменов для кадрирования своего контента. Однако пока он поддерживается не всеми браузерами.

Директива CSP frame-ancestors допускает три типа значений: «none», чтобы запретить отображение контента в любом домене; ‘self’, чтобы текущий сайт отображал содержимое только во фрейме, или список URL-адресов с подстановочными знаками, например, ‘*.some site.com’ ‘https://www.example.com/index.html,’ и т. д., чтобы разрешить кадрирование только на любой странице, которая соответствует элементу из списка.

Как защититься от кликджекинга

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

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

Здравый смысл — эффективное средство самозащиты от кликджекинга. Когда вы видите необычный контент, в том числе ссылку, размещенную другом в какой-либо социальной сети, прежде чем что-либо делать, вы должны спросить себя, будет ли ваш друг публиковать такой контент. Если нет, вы должны предупредить своего друга, что он или она могли стать жертвой кликджекинга.

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