Кликджекинг
Кликджекинг — это вредоносная техника, при которой пользователь обманывается и нажимает на элемент, который отличается от того, что он воспринимает визуально. Это может привести к раскрытию конфиденциальной информации или передаче управления его компьютером другим лицам путём манипулирования, казалось бы, безопасными объектами интерфейса, включая элементы веб-страниц[1][2][3][4][5]. Кликджекинг представляет собой разновидность атаки типа «запутанный заместитель» (confused deputy), при которой пользователь вводится в заблуждение и непреднамеренно использует свои полномочия для выполнения несанкционированных действий[6].
История
Ещё в 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 для Mozilla Firefox: функция ClearClick, представленная 8 октября 2008 года, предотвращает щелчки по невидимым или подменённым элементам веб-документов и апплетов[30]. По данным Browser Security Handbook от Google, ClearClick обеспечивает «значительный уровень защиты» от кликджекинга[31]. С версии NoScript 2.2.8 RC1 добавлена защита и от курсорджекинга[25].
Расширение NoClickjack реализует защиту от кликджекинга для Google Chrome, Mozilla Firefox, Opera и Microsoft Edge, не вмешиваясь в работу легальных iFrame. NoClickjack разработан на базе технологии GuardedID и доступен бесплатно.
Продукт GuardedID (коммерческий) реализует защиту от кликджекинга в Internet Explorer, принудительно делая все фреймы видимыми[32]. GuardedID может работать в связке с NoClickjack для Chrome, Firefox, Opera и Microsoft Edge.
Gazelle — экспериментальный защищённый браузер Microsoft Research, реализующий операционно-системную модель безопасности с ограниченной защитой от кликджекинга: динамически меняемый контент одного окна может перекрывать окно другого происхождения только если он непрозрачен[33].
API Intersection Observer v2[34] позволяет отслеживать видимость элементов интерфейса так, как её воспринимает пользователь[35]. Это помогает виджету обнаружить, что он перекрыт другим контентом. В Google Chrome функция включена по умолчанию с версии 74[36], реализована и в других Chromium-совместимых браузерах.
Владельцы сайтов могут защитить пользователей от фрейм-ориентированного кликджекинга, вставляя в свои страницы специальный JavaScript-код- framekiller — так, чтобы страница не могла быть вложена в фрейм с другого источника[31].
Однако JavaScript-защита не всегда надёжна, особенно в Internet Explorer[31], где её можно обойти, используя элемент <IFRAME SECURITY=restricted>[37].
В 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].
Директива 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
Примечания
- ↑ Robert McMillan. At Adobe's request, hackers nix 'clickjacking' talk. PC World (17 сентября 2008). Дата обращения: 8 октября 2008. Архивировано 17 июля 2015 года.
- ↑ Megha Dhawan. Beware, clickjackers on the prowl, The Times of India (29 сентября 2008). Архивировано 24 июля 2009. Дата обращения: 7 апреля 2026.
- ↑ Dan Goodin. Net game turns PC into undercover surveillance zombie. The Register (7 октября 2008). Дата обращения: 8 октября 2008. Архивировано 8 октября 2008 года.
- ↑ Fredrick Lane. Web Surfers Face Dangerous New Threat: 'Clickjacking'. newsfactor.com (8 октября 2008). Дата обращения: 7 апреля 2026. Архивировано 13 октября 2008 года.
- ↑ 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.
- ↑ Tyler Close. The Confused Deputy rides again! (октябрь 2008). Дата обращения: 11 июля 2025. Архивировано 29 августа 2025 года.
- ↑ 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 года.
- ↑ 162020 - pop up XPInstall/security dialog when user is about to click (comment 44) (англ.). Mozilla/Firefox bug tracker. Архивировано 13 июня 2025 года.
- ↑ Lemos, Robert You don't know (click)jack (октябрь 2008). Дата обращения: 11 июля 2025. Архивировано 26 сентября 2011 года.
- ↑ Viral clickjacking 'Like' worm hits Facebook users (англ.), Naked Security (31 мая 2010). Архивировано 29 октября 2010 года. Дата обращения: 23 октября 2018.
- ↑ Facebook Worm – "Likejacking" (англ.), Naked Security (31 мая 2010). Архивировано 7 ноября 2010 года. Дата обращения: 23 октября 2018.
- ↑ 1 2 Lekies, Sebastian On the fragility and limitations of current Browser-provided Clickjacking protection schemes. USENIX (2012). Архивировано 4 сентября 2025 года.
- ↑ Wireless Mouse Hacks & Network Security Protection (англ.). MOUSEJACK. Дата обращения: 3 января 2020.
- ↑ 1 2 Valotta, Rosario Cookiejacking. tentacoloViola – sites.google.com (2011). Дата обращения: 7 апреля 2026. Архивировано 7 августа 2019 года.
- ↑ 1 2 Filejacking: How to make a file server from your browser (with HTML5 of course). blog.kotowicz.net. Дата обращения: 23 октября 2018. Архивировано 14 июля 2025 года.
- ↑ 1 2 Password Managers: Attacks and Defenses. Дата обращения: 26 июля 2015. Архивировано 11 октября 2025 года.
- ↑ 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.
- ↑ The Clickjacking meets XSS: a state of art. Exploit DB (26 декабря 2008). Дата обращения: 31 марта 2015. Архивировано 11 декабря 2024 года.
- ↑ Krzysztof Kotowicz. Exploiting the unexploitable XSS with clickjacking. Дата обращения: 31 марта 2015. Архивировано 13 августа 2025 года.
- ↑ Ballou, Corey "Likejacking" Term Catches On. jqueryin.com (2 июня 2010). Дата обращения: 7 апреля 2026. Архивировано 5 июня 2010 года.
- ↑ Perez, Sarah "Likejacking" Takes Off on Facebook. ReadWriteWeb (2 июня 2010). Дата обращения: 7 апреля 2026. Архивировано 16 августа 2011 года.
- ↑ Kushner, David Facebook Philosophy: Move Fast and Break Things. IEEE (июнь 2011). Дата обращения: 15 июля 2011. Архивировано 7 июня 2011 года.
- ↑ Perez, Sarah. How to "Like" Anything on the Web (Safely), ReadWriteWeb (23 апреля 2010). Архивировано 30 апреля 2013 года. Дата обращения: 24 августа 2011.
- ↑ Podlipensky, Paul Cursor Spoofing and Cursorjacking. Podlipensky.com. Paul Podlipensky. Дата обращения: 7 апреля 2026. Архивировано 22 ноября 2017 года.
- ↑ 1 2 Krzysztof Kotowicz. Cursorjacking Again (18 января 2012). Дата обращения: 31 января 2012. Архивировано 13 августа 2025 года.
- ↑ Mozilla Foundation Security Advisory 2014-50. Mozilla. Дата обращения: 17 августа 2014. Архивировано 16 июня 2014 года.
- ↑ Mozilla Foundation Security Advisory 2015-35. Mozilla. Дата обращения: 25 октября 2015. Архивировано 23 июля 2025 года.
- ↑ What is MouseJack! (амер. англ.). Bastille. Дата обращения: 3 января 2020. Архивировано 30 октября 2016 года.
- ↑ CERT VU#981271 Multiple wireless keyboard/mouse devices use an unsafe proprietary wireless protocol. kb.cert.org. Дата обращения: 3 января 2020. Архивировано 22 апреля 2025 года.
- ↑ Giorgio Maone. Hello ClearClick, Goodbye Clickjacking. hackademix.net (8 октября 2008). Дата обращения: 27 октября 2008. Архивировано 29 августа 2025 года.
- ↑ 1 2 3 Michal Zalevski. Browser Security Handbook, Part 2, UI Redressing. Google Inc. (10 декабря 2008). Дата обращения: 27 октября 2008.
- ↑ Robert Hansen. Clickjacking and GuardedID ha.ckers.org web application security lab (4 февраля 2009). Дата обращения: 7 апреля 2026. Архивировано 11 июля 2012 года.
- ↑ 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 года.
- ↑ Intersection Observer – W3C Editor's Draft. Дата обращения: 11 июля 2025. Архивировано 10 июня 2025 года.
- ↑ Trust is Good, Observation is Better. Дата обращения: 11 июля 2025.
- ↑ De-anonymization via Clickjacking in 2019. Дата обращения: 11 июля 2025. Архивировано 28 сентября 2025 года.
- ↑ Giorgio Maone. Hey IE8, I Can Has Some Clickjacking Protection. hackademix.net (27 октября 2008). Дата обращения: 27 октября 2008. Архивировано 13 августа 2025 года.
- ↑ Eric Lawrence. IE8 Security Part VII: ClickJacking Defenses (27 января 2009). Дата обращения: 30 декабря 2010. Архивировано 30 января 2009 года.
- ↑ Eric Lawrence. Combating ClickJacking With X-Frame-Options (30 марта 2010). Дата обращения: 30 декабря 2010. Архивировано 3 июня 2010 года.
- ↑ Ryan Naraine. Apple Safari jumbo patch: 50+ vulnerabilities fixed (8 июня 2009). Дата обращения: 7 апреля 2026. Архивировано 12 июня 2009 года.
- ↑ The X-Frame-Options response header — MDC. Архивировано 7 октября 2010 года.
- ↑ Adam Barth. Security in Depth: New Security Features (26 января 2010). Дата обращения: 26 января 2010. Архивировано 11 октября 2025 года.
- ↑ Web specifications support in Opera Presto 2.6 (12 октября 2010). Дата обращения: 7 апреля 2026. Архивировано 14 января 2012 года.
- ↑ HTTP Header Field X-Frame-Options. IETF (2013). Архивировано 19 октября 2013 года.
- ↑ Content Security Policy Level 2. W3C (2016). Архивировано 11 октября 2025 года.
- ↑ lcamtuf's blog: X-Frame-Options, or solving the wrong problem (10 декабря 2011). Дата обращения: 11 июля 2025.
- ↑ Content Security Policy Level 2. w3.org (2 июля 2014). Дата обращения: 29 января 2015. Архивировано 18 мая 2025 года.
- ↑ Clickjacking Defense Cheat Sheet. Дата обращения: 11 июля 2025. Архивировано 28 июня 2025 года.