Кликджекинг

Кликджекинг — это вредоносная техника, при которой пользователь обманывается и нажимает на элемент, который отличается от того, что он воспринимает визуально. Это может привести к раскрытию конфиденциальной информации или передаче управления его компьютером другим лицам путём манипулирования, казалось бы, безопасными объектами интерфейса, включая элементы веб-страниц[1][2][3][4][5]. Кликджекинг представляет собой разновидность атаки типа «запутанный заместитель» (confused deputy), при которой пользователь вводится в заблуждение и непреднамеренно использует свои полномочия для выполнения несанкционированных действий[6].

undefined

История

Ещё в 2002 году было замечено, что возможно наложить прозрачный слой поверх веб-страницы, и пользовательские действия будут применяться к этому слою без ведома пользователя[7]. Однако первые исправления начали появляться лишь с 2004 года[8], и общая проблема долгое время не воспринималась как серьёзная до 2008 года[7].

В 2008 году Джереми Гроссман и Роберт Хансен обнаружили, что уязвимым к кликджекингу оказался Adobe Flash Player, что позволяло злоумышленникам получить доступ к компьютеру пользователя без его ведома[7]. Термин «кликджекинг» предложили именно Гроссман и Хансен[9], составив портманто из слов «клик» и «угон»[7].

По мере обнаружения схожих атак термин «UI redressing» стали использовать для обозначения целого класса подобных атак, а не только самого кликджекинга[7].

Описание

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

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

Виды кликджекинга

  • Классический: осуществляется в веб-браузере[7];
  • Лайкджекинг: использует возможности Фейсбука и других соцсетей[10][11];
  • Вложенный: атакует Google+ с использованием наложенных фреймов[12];
  • Курсорджекинг: манипулирует визуальным отображением и положением курсора[7];
  • Маусджекинг: внедряет ввод с клавиатуры или мыши по беспроводному RF-каналу[13];
  • Вне браузера: задействует программы без использования браузера[7];
  • Кукиджекинг: похищение cookies из браузеров[7][14];
  • Файлджекинг: превращает атакуемое устройство в файловый сервер[7][15][16]
  • Атака на менеджер паролей: эксплуатирует уязвимости автозаполнения в браузерных менеджерах паролей[7].

Классический кликджекинг

Предполагает, что злоумышленник с помощью невидимых слоёв на веб-странице перенаправляет действия мыши пользователя на другие элементы, что приводит к неправильной интерпретации действий пользователем[17].

Пользователь может получить по электронной почте ссылку на видео с новостями, но поверх или под кнопкой «PLAY» может быть «спрятана» ещё одна страница, например, с товаром на Amazon. Пользователь пытается запустить видео, но на деле заказывает товар, если у него включен быстрый заказ и учётная запись активна.

Техническая реализация подобных атак может быть сложна из-за несовместимости браузеров, однако такие инструменты, как BeEF или Metasploit, позволяют почти полностью автоматизировать эксплуатацию уязвимых сайтов. Кликджекинг может сочетаться с другими веб-атаками, например межсайтовым скриптингом (XSS)[18][19].

Лайкджекинг

Лайкджекинг — это вредоносная технология, при которой пользователь обманывается и «ставит лайк» странице в Facebook или другим постам/аккаунтам в соцсетях без своего осознанного желания. Термин «лайкджекинг» предложил Кори Баллу в статье «How to „Like“ Anything on the Web»[20], что стало одним из первых задокументированных упоминаний этой уязвимости «лайк»-кнопки[21].

В издании IEEE Spectrum отмечается, что решение для противодействия лайкджекингу было разработано компанией Facebook на одном из хакатонов[22]. Существуют специальные букмарклеты, которые позволяют обезопасить «лайк» вне стандартной кнопки Facebook[23].

Вложенный кликджекинг

В отличие от классического варианта, вложенный кликджекинг использует вредоносный веб-фрейм между двумя уровнями исходной страницы: исходным фреймом и отображаемым окном. Это возможно благодаря уязвимости HTTP-заголовка X-Frame-Options, когда при значении SAMEORIGIN браузер проверяет только внешние два слоя, не учитывая наличие дополнительных вложенных[12].

В частности, злоумышленники использовали ошибку Google+ и поисковика изображений Google, чтобы вставлять свои скрытые фреймы между уровнями отображения графики.

Курсорджекинг

Курсорджекинг представляет собой приём по смещению или изменению отображения курсора, открыт в 2010 году исследователем Эдди Борди из vulnerability.fr[24]. Маркус Нимиц показал это с помощью специального значка курсора, а Марио Хайдерих в 2012 году реализовал скрытие курсора[25].

Жорди Шансель обнаружил уязвимость курсорджекинга во Firefox на Mac OS X, позволяющую выполнить произвольный код либо шпионить через веб-камеру[26]. Эта проблема была решена в Firefox 30.0, а ещё одна схожая уязвимость устранена в Firefox 37.0[27].

Маусджекинг

В отличие от других техник кликджекинга, маусджекинг связан с аппаратными уязвимостями: впервые описан в 2016 году Марком Ньюлином из Bastille.net, позволяет отправлять произвольные команды клавиатуры через уязвимые радиомодули[28]. Logitech выпустила исправления, но другие производители отреагировали с опозданием[29].

Вне браузера

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

Данная форма атаки наиболее часто встречается на мобильных устройствах, особенно Android из-за специфики toast-уведомлений: между запросом уведомления и его отображением есть задержка, в течение которой под уведомлением можно создать невидимую кнопку, уязвимую к клику[7].

Кукиджекинг

Кукиджекинг представляет собой атаку, в ходе которой cookies похищаются из браузера пользователя путём обмана его видимыми объектами, которые на самом деле заставляют пользователя выделять и отправлять содержимое cookie[14].

Файлджекинг

В атаках файлджекинга цель — использовать функции браузера по навигации по файловой системе и доступу к файлам для получения личных данных пользователя. Пользователь обманом переводит браузер в состояние активного файлового сервера, позволив тем самым злоумышленнику загружать необходимые файлы[15].

Атака на менеджер паролей

Исследование 2014 года, проведённое в Университете Карнеги — Меллон, выявило, что некоторые менеджеры паролей неправильно заполняли пароли для HTTP-страницы, если изначально пароль сохранялся для HTTPS, а также были уязвимы к iframe- и редирект-атакам, что позволяло раскрывать ещё больше паролей при синхронизации между устройствами[16].

Защита

NoScript

Защита от кликджекинга (в том числе лайкджекинга) реализована в виде расширения NoScript для Mozilla Firefox: функция ClearClick, представленная 8 октября 2008 года, предотвращает щелчки по невидимым или подменённым элементам веб-документов и апплетов[30]. По данным Browser Security Handbook от Google, ClearClick обеспечивает «значительный уровень защиты» от кликджекинга[31]. С версии NoScript 2.2.8 RC1 добавлена защита и от курсорджекинга[25].

NoClickjack

Расширение NoClickjack реализует защиту от кликджекинга для Google Chrome, Mozilla Firefox, Opera и Microsoft Edge, не вмешиваясь в работу легальных iFrame. NoClickjack разработан на базе технологии GuardedID и доступен бесплатно.

GuardedID

Продукт GuardedID (коммерческий) реализует защиту от кликджекинга в Internet Explorer, принудительно делая все фреймы видимыми[32]. GuardedID может работать в связке с NoClickjack для Chrome, Firefox, Opera и Microsoft Edge.

Gazelle

Gazelle — экспериментальный защищённый браузер Microsoft Research, реализующий операционно-системную модель безопасности с ограниченной защитой от кликджекинга: динамически меняемый контент одного окна может перекрывать окно другого происхождения только если он непрозрачен[33].

Intersection Observer v2

API Intersection Observer v2[34] позволяет отслеживать видимость элементов интерфейса так, как её воспринимает пользователь[35]. Это помогает виджету обнаружить, что он перекрыт другим контентом. В Google Chrome функция включена по умолчанию с версии 74[36], реализована и в других Chromium-совместимых браузерах.

Framekiller

Владельцы сайтов могут защитить пользователей от фрейм-ориентированного кликджекинга, вставляя в свои страницы специальный JavaScript-код- framekiller — так, чтобы страница не могла быть вложена в фрейм с другого источника[31].

Однако JavaScript-защита не всегда надёжна, особенно в Internet Explorer[31], где её можно обойти, используя элемент <IFRAME SECURITY=restricted>[37].

X-Frame-Options

В 2009 году в Internet Explorer 8 появился новый HTTP-заголовок X-Frame-Options для частичной защиты от кликджекинга[38],[39] который вскоре поддержали и другие браузеры (Safari[40], Firefox[41], Chrome[42], Opera[43]). Заголовок определяет политику вложенности: DENY — запрещает любую вложенность, ALLOW-FROM origin — разрешает только с указанного источника, SAMEORIGIN — только с того же сайта. Некоторые рекламные площадки возвращают нестандартное значение ALLOWALL, которое на практике не ограничивает вложение сайта.

В 2013 году X-Frame-Options был опубликован в RFC 7034[44], однако официальным интернет-стандартом не является. W3C рекомендует вместо него использовать директиву frame-ancestors политики Content Security Policy Level 2[45].

Однако X-Frame-Options не защищает от атак кликджекинга без фреймов[46].

Content Security Policy

Директива frame-ancestors в Content Security Policy (с версии 1.1) позволяет разрешать или запрещать вложенность контента через iframe, object и т. п., и призвана заменить X-Frame-Options. При наличии обоих заголовков именно политика frame-ancestors должна использоваться браузером[47], хотя старые браузеры могли это игнорировать[48].

Примеры политики frame-ancestors:

# Запрет вложенности: всё встроенное содержимое станет недоступным.
Content-Security-Policy: frame-ancestors 'none'
# Разрешить вложенность только самому себе.
Content-Security-Policy: frame-ancestors 'self'
# Разрешить вложенность только указанным сайтам.
Content-Security-Policy: frame-ancestors www.example.com www.wikipedia.org

Примечания

  1. Robert McMillan. At Adobe's request, hackers nix 'clickjacking' talk. PC World (17 сентября 2008). Дата обращения: 8 октября 2008. Архивировано 17 июля 2015 года.
  2. Megha Dhawan. Beware, clickjackers on the prowl, The Times of India (29 сентября 2008). Архивировано 24 июля 2009. Дата обращения: 7 апреля 2026.
  3. Dan Goodin. Net game turns PC into undercover surveillance zombie. The Register (7 октября 2008). Дата обращения: 8 октября 2008. Архивировано 8 октября 2008 года.
  4. Fredrick Lane. Web Surfers Face Dangerous New Threat: 'Clickjacking'. newsfactor.com (8 октября 2008). Дата обращения: 7 апреля 2026. Архивировано 13 октября 2008 года.
  5. Shahriar, Hossain; Devendran, Vamshee Krishna (4 июля 2014). “Classification of Clickjacking Attacks and Detection Techniques”. Information Security Journal: A Global Perspective [англ.]. 23 (4—6): 137—147. DOI:10.1080/19393555.2014.931489. ISSN 1939-3555. S2CID 43912852.
  6. Tyler Close. The Confused Deputy rides again! (октябрь 2008). Дата обращения: 11 июля 2025. Архивировано 29 августа 2025 года.
  7. 1 2 3 4 5 6 7 8 9 10 11 12 Niemietz, Marcus UI Redressing Attacks on Android Devices. Black Hat (2012). Архивировано 22 августа 2025 года.
  8. 162020 - pop up XPInstall/security dialog when user is about to click (comment 44) (англ.). Mozilla/Firefox bug tracker. Архивировано 13 июня 2025 года.
  9. Lemos, Robert You don't know (click)jack (октябрь 2008). Дата обращения: 11 июля 2025. Архивировано 26 сентября 2011 года.
  10. Viral clickjacking 'Like' worm hits Facebook users (англ.), Naked Security (31 мая 2010). Архивировано 29 октября 2010 года. Дата обращения: 23 октября 2018.
  11. Facebook Worm – "Likejacking" (англ.), Naked Security (31 мая 2010). Архивировано 7 ноября 2010 года. Дата обращения: 23 октября 2018.
  12. 1 2 Lekies, Sebastian On the fragility and limitations of current Browser-provided Clickjacking protection schemes. USENIX (2012). Архивировано 4 сентября 2025 года.
  13. Wireless Mouse Hacks & Network Security Protection (англ.). MOUSEJACK. Дата обращения: 3 января 2020.
  14. 1 2 Valotta, Rosario Cookiejacking. tentacoloViola – sites.google.com (2011). Дата обращения: 7 апреля 2026. Архивировано 7 августа 2019 года.
  15. 1 2 Filejacking: How to make a file server from your browser (with HTML5 of course). blog.kotowicz.net. Дата обращения: 23 октября 2018. Архивировано 14 июля 2025 года.
  16. 1 2 Password Managers: Attacks and Defenses. Дата обращения: 26 июля 2015. Архивировано 11 октября 2025 года.
  17. Sahani, Rishabh; Randhawa, Sukhchandan (1 декабря 2021). “Clickjacking: Beware of Clicking”. Wireless Personal Communications [англ.]. 121 (4): 2845—2855. DOI:10.1007/s11277-021-08852-y. ISSN 0929-6212. S2CID 239691334.
  18. The Clickjacking meets XSS: a state of art. Exploit DB (26 декабря 2008). Дата обращения: 31 марта 2015. Архивировано 11 декабря 2024 года.
  19. Krzysztof Kotowicz. Exploiting the unexploitable XSS with clickjacking. Дата обращения: 31 марта 2015. Архивировано 13 августа 2025 года.
  20. Ballou, Corey "Likejacking" Term Catches On. jqueryin.com (2 июня 2010). Дата обращения: 7 апреля 2026. Архивировано 5 июня 2010 года.
  21. Perez, Sarah "Likejacking" Takes Off on Facebook. ReadWriteWeb (2 июня 2010). Дата обращения: 7 апреля 2026. Архивировано 16 августа 2011 года.
  22. Kushner, David Facebook Philosophy: Move Fast and Break Things. IEEE (июнь 2011). Дата обращения: 15 июля 2011. Архивировано 7 июня 2011 года.
  23. Perez, Sarah. How to "Like" Anything on the Web (Safely), ReadWriteWeb (23 апреля 2010). Архивировано 30 апреля 2013 года. Дата обращения: 24 августа 2011.
  24. Podlipensky, Paul Cursor Spoofing and Cursorjacking. Podlipensky.com. Paul Podlipensky. Дата обращения: 7 апреля 2026. Архивировано 22 ноября 2017 года.
  25. 1 2 Krzysztof Kotowicz. Cursorjacking Again (18 января 2012). Дата обращения: 31 января 2012. Архивировано 13 августа 2025 года.
  26. Mozilla Foundation Security Advisory 2014-50. Mozilla. Дата обращения: 17 августа 2014. Архивировано 16 июня 2014 года.
  27. Mozilla Foundation Security Advisory 2015-35. Mozilla. Дата обращения: 25 октября 2015. Архивировано 23 июля 2025 года.
  28. What is MouseJack! (амер. англ.). Bastille. Дата обращения: 3 января 2020. Архивировано 30 октября 2016 года.
  29. CERT VU#981271 Multiple wireless keyboard/mouse devices use an unsafe proprietary wireless protocol. kb.cert.org. Дата обращения: 3 января 2020. Архивировано 22 апреля 2025 года.
  30. Giorgio Maone. Hello ClearClick, Goodbye Clickjacking. hackademix.net (8 октября 2008). Дата обращения: 27 октября 2008. Архивировано 29 августа 2025 года.
  31. 1 2 3 Michal Zalevski. Browser Security Handbook, Part 2, UI Redressing. Google Inc. (10 декабря 2008). Дата обращения: 27 октября 2008.
  32. Robert Hansen. Clickjacking and GuardedID ha.ckers.org web application security lab (4 февраля 2009). Дата обращения: 7 апреля 2026. Архивировано 11 июля 2012 года.
  33. Wang, Helen J.; Grier, Chris; Moschchuk, Alexander; King, Samuel T.; Choudhury, Piali The Multi-Principal OS Construction of the Gazelle Web Browser. 18th Usenix Security Symposium (август 2009). Дата обращения: 26 января 2010. Архивировано 8 июля 2009 года.
  34. Intersection Observer – W3C Editor's Draft. Дата обращения: 11 июля 2025. Архивировано 10 июня 2025 года.
  35. Trust is Good, Observation is Better. Дата обращения: 11 июля 2025.
  36. De-anonymization via Clickjacking in 2019. Дата обращения: 11 июля 2025. Архивировано 28 сентября 2025 года.
  37. Giorgio Maone. Hey IE8, I Can Has Some Clickjacking Protection. hackademix.net (27 октября 2008). Дата обращения: 27 октября 2008. Архивировано 13 августа 2025 года.
  38. Eric Lawrence. IE8 Security Part VII: ClickJacking Defenses (27 января 2009). Дата обращения: 30 декабря 2010. Архивировано 30 января 2009 года.
  39. Eric Lawrence. Combating ClickJacking With X-Frame-Options (30 марта 2010). Дата обращения: 30 декабря 2010. Архивировано 3 июня 2010 года.
  40. Ryan Naraine. Apple Safari jumbo patch: 50+ vulnerabilities fixed (8 июня 2009). Дата обращения: 7 апреля 2026. Архивировано 12 июня 2009 года.
  41. The X-Frame-Options response header — MDC. Архивировано 7 октября 2010 года.
  42. Adam Barth. Security in Depth: New Security Features (26 января 2010). Дата обращения: 26 января 2010. Архивировано 11 октября 2025 года.
  43. Web specifications support in Opera Presto 2.6 (12 октября 2010). Дата обращения: 7 апреля 2026. Архивировано 14 января 2012 года.
  44. HTTP Header Field X-Frame-Options. IETF (2013). Архивировано 19 октября 2013 года.
  45. Content Security Policy Level 2. W3C (2016). Архивировано 11 октября 2025 года.
  46. lcamtuf's blog: X-Frame-Options, or solving the wrong problem (10 декабря 2011). Дата обращения: 11 июля 2025.
  47. Content Security Policy Level 2. w3.org (2 июля 2014). Дата обращения: 29 января 2015. Архивировано 18 мая 2025 года.
  48. Clickjacking Defense Cheat Sheet. Дата обращения: 11 июля 2025. Архивировано 28 июня 2025 года.