Какво е Clickjacking и какво можете да направите, за да го предотвратите?
Clickjacking е онлайн атака, която подмамва жертвата да кликне върху нещо различно от това, което е възнамерявала, без да го осъзнава. Clickjacking се нарича още атака за обезщетение на потребителския интерфейс (атака за обезщетение на потребителския интерфейс). Класическата атака за кликване „преоформя“ потребителския интерфейс, който е видим за жертвата, като вгражда злонамерен уебсайт в невидим iframe върху оригиналната уеб страница.
Жертвата няма визуални знаци, че има невидима iframe в горната част на страницата, която действително вижда. Невидимата страница съдържа елементи, върху които може да се кликне, които се изравняват с действителните бутони на видимата страница отдолу. Следователно, когато жертва щракне върху бутона „Изтегляне на pdf“, например, тя всъщност щраква върху невидим елемент, който изтегля злонамерен скрипт, който браузърът им след това изпълнява.
Вградената рамка е основно рамка в рамка. Вградените рамки ви позволяват да вграждате съдържание от други източници (уебсайтове) във вашите уеб страници. Когато посетите уебсайт, който има показван вграден видеоклип в Youtube, например, този видеоклип в Youtube живее във вградена рамка.
Както е в случая с много онлайн атаки, атаките за кликване обикновено използват някаква форма на социално инженерство, за да насочат целите към компрометирания/злонамерен сайт. Това може да бъде имейл, текстово съобщение, публикация във Facebook и др.
Това не са само щраквания на мишката. Използвайки комбинация от таблици със стилове, текстови полета и вградени рамки, атакуващият може да заблуди нищо неподозиращия потребител да си помисли, че въвежда паролата си на сайта си за онлайн банкиране, когато всъщност я въвежда в сайт, контролиран от атакуващия .
Двама изследователи по сигурността, Джеремая Гросман и Робърт Хансен, измислиха термина „кликджакинг“, след като откриха, че Flash плейърът на Adobe е уязвим за щракване през 2008 г .
Има много различни варианти на clickjacking атаки и поради това изразът „UI resress attack“ е по-често срещан днес. Това е общ термин, който включва всички вариации.
Работещ пример за кликджекинг
- Нападател създава легитимно изглеждащ уебсайт и вгражда злонамерен уебсайт във вградена рамка. Вградената рамка е невидима, така че злонамереният сайт не се вижда и жертвата вижда само легитимно изглеждащия сайт.
- Невидимите елементи на вградения злонамерен сайт се подреждат с елементи, върху които може да се кликне, на легитимно изглеждащата, видима страница. Невидимите елементи задействат нежелани действия, като например изтегляне на злонамерен скрипт, когато се щракне.
- Нападателят използва някаква форма на социално инженерство, за да подмами целта да посети злонамерения уебсайт и да щракне върху злонамерената връзка. Това може да е връзка към фалшив конкурс, който са спечелили, или към примамлива снимка на знаменитост, например.
- След като целта посети сайта и кликне върху връзката, браузърът на целта изпълнява злонамерения скрипт и се случват лоши неща.
Вграденият сайт може също така да бъде легитимен, но уязвим (за кликване) уебсайт. Нека вземем същия пример като по-горе, но направим вградения, невидим сайт amazon.com. В този пример, когато жертвата щракне върху връзката или бутона, за да каже, да поиска своята награда или да види снимката, тя всъщност прави скъпа покупка в Amazon. Разбира се, за да работи този пример, жертвата трябва да е влязла в своя акаунт в Amazon и да има активирани покупки с едно кликване. Но разбирате идеята.
Може също да е уебсайтът за онлайн банкиране на жертвата в невидимия iframe. Фалшивият бутон всъщност може да бъде потвърждение за прехвърляне на средства към нападателя. Ако жертвата е влязла в своя банков сайт, средствата се прехвърлят на нападателя (или на субект, контролиран от нападателя).
Това също подчертава факта, че както потребителите, така и администраторите на уебсайтове трябва да предприемат мерки за смекчаване на подобни атаки. Всеки легитимен уебсайт, който може да бъде вграден във вградена рамка, е уязвим да бъде използван при кликкинг или атака за защита на потребителския интерфейс.
По-долу ще разгледаме как потребителите и администраторите могат да се защитят допълнително. Но първо, нека да разгледаме различните атаки за коригиране на потребителския интерфейс. Всички те са основно вариации на темата за класическата атака за кликване.
Примери за атаки с щракване
Класически
Обяснихме класическата атака по-горе. Състои се от създаване на легитимно изглеждащ уебсайт и вграждане на злонамерен или легитимен (и уязвим) уебсайт в невидим iframe. След това нападателят подвежда жертвата (използвайки социално инженерство) да щракне върху злонамерения или легитимен, но нежелан елемент. Легитимен, но нежелан елемент би бил нещо като бутоните за покупка с 1 щракване на Amazon, за да направите нежелана покупка. Или може да е злонамерен елемент, който изтегля неприятен скрипт в браузъра ви. И в двата случая жертвата вярва, че иска наградата си или отваря примамлива снимка на легитимно изглеждащия и видим уебсайт.
Като кражба
Изключително разпространена форма на атака за защита на потребителския интерфейс е likejacking: отвличане на Facebook харесвания. Likejacking работи подобно на класическата clickjacking атака. Но подмамва потребителите на Facebook да „харесват“ неща, които никога не са възнамерявали. Фейсбук страницата на нападателя е вградена в невидимия iframe. Следователно потребителят не осъзнава, че всъщност кликва върху невидимия бутон „Харесва ми“ на нападателя. Известен случай на това атака се случи в Италия през 2011 г.
Cursorjacking
Cursorjacking се състои в промяна на местоположението на курсора от мястото, където жертвата го възприема. Типичната атака за кражба на курсора заменя действителния курсор с фалшив, като използва изображение и го измества от местоположението на истинския курсор. С умело позициониране на елементи, нападателят може да подмами жертвата да щракне върху елементи, върху които никога не е възнамерявал да щракне.
Когато жертвата щракне върху предвиден елемент с фалшивия курсор, истинският курсор, който е изместен спрямо фалшивия, всъщност щраква върху злонамерен елемент. Истинският курсор все още може да остане видим при атака за кражба на курсора. Но се правят усилия да се фокусира вниманието на жертвата върху фалшивия.
кражба на бисквитки
Cookiejacking е атака за защита на потребителския интерфейс, която краде бисквитките на жертвата. След като нападателят получи бисквитките, той може да прочете информацията, която съдържа, и да я използва, за да се представя за жертвата. Това обикновено се постига чрез подвеждане на жертвата да плъзне и пусне елемент на страницата. Но това, което всъщност правят, е да избират съдържанието на своите бисквитки на вградената невидима страница и да го предават на нападателя.
кражба на файлове
При атака за кражба на файлове нападателят използва способността на уеб браузърите да навигират през файловата система на компютъра. Пример за това е, когато качите снимка в социалните медии. Появява се прозорец на файлов браузър и можете да навигирате във вашата файлова система. При атака за кражба на файлове, щракването върху бутона „Преглед на файлове“ (или както го нарича браузърът ви) създава активен файлов сървър, като потенциално дава на атакуващия достъп до цялата ви файлова система.
Как да предотвратим атаки за кликване?
Начинът за предпазване от атаки за кликване зависи от това в кой край на атаката сте. Защитите от страна на клиента са различни от защитите от страна на сървъра и двете са еднакво важни.
От страна на клиента
1. Използвайте браузър, който поддържа API на Intersection Observer
API на Intersection Observer може да проследява „видимостта“ на целевите елементи на уеб страница. Този API позволява на браузъра да открие кога рамкиран прозорец е скрит.
В момента следните настолни браузъри поддържат API:
- Google Chrome 58 и по-нова версия
- Mozilla Firefox 55 и по-нова версия
- Microsoft Edge 16 и по-нова версия
- Opera 45 и по-нова версия
На мобилни устройства има толкова много браузъри, налични както в App Store на Apple, така и в Play Store на Google, че изброяването на всички е почти невъзможно. Въпреки това, браузърите по подразбиране както на iOS, така и на Android поддържат API на Intersection Observer, така че това е добра новина.
- iOS Safari от iOS версия 12.2 и по-нова
- Chrome за Android 51 и по-нова версия
2. Използвайте добавка за браузър
Няколко добавки на браузъра могат да осигурят известна защита срещу атаки за кликване.
Някои популярни избори са:
- NoScript : The NoScript добавката за браузър не позволява на потребителите да кликват върху невидими или „преработени“ елементи на уеб страница. NoScript е безплатен, но се поддържа само от Mozilla Firefox.
- NoClickjack : Добавката за браузър NoClickjack се поддържа от Google Chrome, Mozilla Firefox, Microsoft Edge и Opera. Добавката принуждава всички рамки на уеб страница да бъдат видими.
Страната на сървъра
От страна на сървъра, начинът за защита срещу щракване е да добавите съответните директиви към HTTP заглавките на уебсайта си.
1. |_+_| директива
Въведен от Microsoft в изданието на Internet Explorer от 2009 г., HTTP заглавката |_+_| осигурява частична защита срещу щракване. Повечето основни браузъри днес поддържат |_+_| директива (Safari, Firefox, Chrome и Opera). Веднъж зададен от администратора на уебсайта, заглавката посочва неговата политика за рамкиране. Опциите са:
- ОТКАЗВАНЕ: Забранява всяко рамкиране
- ALLOW-FROM произход: Забранява рамкиране от външни сайтове
- SAMEORIGIN: Позволява само рамкиране от посочения сайт(ове)
|_+_| заглавката никога не е била официален интернет стандарт и е заменена от |_+_| политика. Въпреки този факт, много уебсайтове все още използват |_+_| днес.
2. |_+_| директива
|_+_| директива на политиката за сигурност на съдържанието (CSP) може да контролира (като разрешава или забранява) вграждане на съдържание от потенциално злонамерени страници, използващи iframe, обект и т.н. CSP е заглавка на HTTP отговор, която ви позволява да определите кои динамични ресурси могат да се зареждат въз основа на източника на заявката.
Както бе споменато по-горе, |_+_| директива заменя и измества |_+_| директива. Ако една страница се обслужва и с двете заглавки, уеб браузърът трябва да даде привилегия на |_+_| политика. Някои браузъри обаче може да пренебрегнат това изискване.
Как да добавите |_+_| директива към вашия уебсайт(ове)
Ще предоставим инструкции как да активирате |_+_| директива на вашия уебсайт както в Apache, така и в Nginx.
Apache
- Първо трябва да активираме |_+_|.
- След това трябва да рестартираме apache
- След това трябва да редактираме httpd.conf или apache.conf, въз основа на вашата инсталация, за да добавим |_+_| директива.
Отказ от всички източници
|_+_|Разрешете себе си, но откажете всички други източници
|_+_|Разрешаване от конкретни домейни
|_+_|Разрешаване от себе си и посочени домейни
|_+_|Не забравяйте да рестартирате Apache след извършване на промени
|_+_|Nginx
В Nginx трябва да редактирате съответния конфигурационен файл на вашия сайт и да добавите |_+_| директива под блока „сървър“.
Отказ от всички източници
|_+_|Разрешете себе си, но откажете всички други източници
|_+_|Разрешаване от конкретни домейни
|_+_|Разрешаване от себе си и посочени домейни
|_+_|Не забравяйте да рестартирате Nginx след извършване на промени.
|_+_|Заключение
Ето го. Clickjacking е доста неприятна атака. За щастие администраторите на уебсайтове имат защита, както и посетителите на сайта. Нищо не е 100% обаче. Така че останете нащрек.
Ето някои допълнителни здравомислещи съвети, взети от моя Какво е злонамерен софтуер на троянски кон и как да го избегнете статия, която може да ви помогне да се защитите от страна на клиента.
- Никога не кликвайте върху изскачащи прозорци. Никога не знаеш къде ще те отведат следващия път.
- Ако вашият браузър показва предупреждение за уебсайт, който се опитвате да отворите, трябва да обърнете внимание и да получите информацията, от която се нуждаете, другаде.
- Не кликвайте върху връзки (URL адреси) в имейли, освен ако не знаете точно кой е изпратил URL адреса и към къде води. И дори тогава проверете внимателно връзката. Дали това е HTTP или HTTPS връзка? Повечето законни сайтове използват HTTPS днес. Връзката съдържа ли правописни грешки (gooogle вместо google)? Ако можете да стигнете до дестинацията, без да използвате връзката, направете го вместо това.