BrowExt - ClickJacking
Основна інформація
Ця сторінка буде використовувати вразливість клікджекінгу в браузерному розширенні. Якщо ви не знаєте, що таке клікджекінг, перевірте:
Розширення містить файл manifest.json
, а цей файл JSON має поле web_accessible_resources
. Ось, що документація Chrome говорить про це:
Ці ресурси будуть доступні на веб-сторінці за URL
chrome-extension://[PACKAGE ID]/[PATH]
, який може бути згенерований за допомогою методуextension.getURL
. Ресурси, які мають дозвіл, обслуговуються відповідними заголовками CORS, тому вони доступні через механізми, такі як XHR.1
Ресурси web_accessible_resources
в браузерному розширенні не лише доступні через веб; вони також працюють з вбудованими привілеями розширення. Це означає, що вони можуть:
Змінювати стан розширення
Завантажувати додаткові ресурси
Взаємодіяти з браузером до певної міри
Однак ця функція представляє ризик для безпеки. Якщо ресурс в межах web_accessible_resources
має яку-небудь значну функціональність, зловмисник може вбудувати цей ресурс у зовнішню веб-сторінку. Непідозрілі користувачі, які відвідують цю сторінку, можуть ненавмисно активувати цей вбудований ресурс. Така активація може призвести до непередбачених наслідків, залежно від дозволів та можливостей ресурсів розширення.
Приклад PrivacyBadger
У розширенні PrivacyBadger була виявлена вразливість, пов'язана з тим, що каталог skin/
був оголошений як web_accessible_resources
наступним чином (Перевірте оригінальний пост блогу):
Ця конфігурація призвела до потенційної проблеми з безпекою. Зокрема, файл skin/popup.html
, який відображається при взаємодії з іконкою PrivacyBadger у браузері, може бути вбудований в iframe
. Це вбудування може бути використане для обману користувачів, щоб вони ненавмисно клацнули на "Вимкнути PrivacyBadger для цього веб-сайту". Така дія може підірвати конфіденційність користувача, вимкнувши захист PrivacyBadger і, можливо, піддаючи користувача збільшеному відстеженню. Візуальну демонстрацію цього експлойту можна переглянути у відео-прикладі ClickJacking, наданому за посиланням https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.
Для вирішення цієї вразливості було реалізовано просте рішення: видалення /skin/*
зі списку web_accessible_resources
. Ця зміна ефективно зменшила ризик, забезпечивши, що вміст каталогу skin/
не може бути доступним або зміненим через веб-доступні ресурси.
Виправлення було легким: видалити /skin/*
з `web_accessible_resources.
PoC
Приклад Metamask
Пост блогу про ClickJacking у Metamask можна знайти тут. У цьому випадку Metamask виправив уразливість, перевіривши, що протокол, який використовується для доступу до нього, був https:
або http:
(не chrome:
, наприклад):
Ще один виправлений випадок ClickJacking у розширенні Metamask полягав у тому, що користувачі могли клацнути, щоб додати до білого списку, коли сторінка була підозріла на фішинг через “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Оскільки ця сторінка була вразливою до Clickjacking, зловмисник міг скористатися цим, показуючи щось звичайне, щоб жертва клацнула, щоб додати до білого списку, не помічаючи цього, а потім повернутися на сторінку фішингу, яка буде додана до білого списку.
Приклад Steam Inventory Helper
Перевірте наступну сторінку, щоб побачити, як XSS у розширенні браузера був поєднаний з вразливістю ClickJacking:
Посилання
Last updated