BrowExt - ClickJacking
Podstawowe informacje
Ta strona będzie nadużywać podatności ClickJacking w rozszerzeniu przeglądarki. Jeśli nie wiesz, czym jest ClickJacking, sprawdź:
pageClickjackingRozszerzenia zawierają plik manifest.json
, a ten plik JSON ma pole web_accessible_resources
. Oto, co dokumentacja Chrome'a mówi na ten temat:
Te zasoby będą dostępne na stronie internetowej za pomocą adresu URL
chrome-extension://[ID PACZKI]/[ŚCIEŻKA]
, który można wygenerować za pomocą metodyextension.getURL
. Zasoby na białej liście są serwowane z odpowiednimi nagłówkami CORS, dzięki czemu są dostępne za pomocą mechanizmów takich jak XHR.1
Zasoby web_accessible_resources
w rozszerzeniu przeglądarki nie są dostępne tylko przez sieć; działają również z uprawnieniami wbudowanymi w rozszerzenie. Oznacza to, że mają zdolność do:
Zmiany stanu rozszerzenia
Ładowania dodatkowych zasobów
Interakcji z przeglądarką w pewnym stopniu
Jednak ta funkcja niesie ze sobą ryzyko bezpieczeństwa. Jeśli zasób w web_accessible_resources
ma jakąkolwiek istotną funkcjonalność, atakujący może potencjalnie osadzić ten zasób w zewnętrznej stronie internetowej. Niespodziewani użytkownicy odwiedzający tę stronę mogą przypadkowo aktywować osadzony zasób. Taka aktywacja może prowadzić do niezamierzonych konsekwencji, w zależności od uprawnień i możliwości zasobów rozszerzenia.
Przykład PrivacyBadger
W rozszerzeniu PrivacyBadger zidentyfikowano podatność związana z deklaracją katalogu skin/
jako web_accessible_resources
w następujący sposób (Sprawdź oryginalny post na blogu):
Ta konfiguracja doprowadziła do potencjalnego problemu z bezpieczeństwem. W szczególności plik skin/popup.html
, który jest renderowany po interakcji z ikoną PrivacyBadger w przeglądarce, mógłby być osadzony wewnątrz elementu iframe
. To osadzenie mogłoby zostać wykorzystane do wprowadzenia użytkowników w błąd, aby przypadkowo kliknęli na "Wyłącz PrivacyBadger dla tej witryny". Takie działanie naruszałoby prywatność użytkownika poprzez wyłączenie ochrony PrivacyBadger i potencjalnie naraziłoby użytkownika na zwiększone śledzenie. Wizualna demonstracja tego ataku może być obejrzana w przykładowym filmie ClickJacking dostępnym pod adresem https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.
Aby rozwiązać tę podatność, zastosowano prosty sposób: usunięcie /skin/*
z listy web_accessible_resources
. Ta zmiana skutecznie zmniejszyła ryzyko, zapewniając, że zawartość katalogu skin/
nie mogła być uzyskana ani manipulowana poprzez zasoby dostępne w sieci.
Naprawa była prosta: **usuń /skin/*
z web_accessible_resources**
.
PoC
Przykład Metamask
Post na blogu o ClickJacking w Metamask można znaleźć tutaj. W tym przypadku Metamask naprawił podatność, sprawdzając, czy protokół używany do dostępu to https:
lub http:
(a nie na przykład chrome:
):
Inny naprawiony ClickJacking w rozszerzeniu Metamask polegał na tym, że użytkownicy mogli kliknąć, aby dodać do białej listy, gdy strona była podejrzana o phishing z powodu “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Ponieważ ta strona była podatna na Clickjacking, atakujący mógł ją wykorzystać, pokazując coś normalnego, aby zmusić ofiarę do kliknięcia, aby dodać ją do białej listy, nie zauważając tego, a następnie wrócić do strony phishingowej, która zostanie dodana do białej listy.
Przykład Steam Inventory Helper
Sprawdź następującą stronę, aby zobaczyć, jak XSS w rozszerzeniu przeglądarki został połączony z podatnością na ClickJacking:
pageBrowExt - XSS ExampleOdwołania
Last updated