BrowExt - ClickJacking
Osnovne informacije
Ova stranica će iskoristiti ranjivost ClickJacking-a u Browser ekstenziji. Ako ne znate šta je ClickJacking, proverite:
pageClickjackingEkstenzije sadrže datoteku manifest.json
i ta JSON datoteka ima polje web_accessible_resources
. Evo šta Chrome dokumentacija kaže o tome:
Ovi resursi bi bili dostupni na veb stranici putem URL-a
chrome-extension://[PACKAGE ID]/[PATH]
, koji se može generisati pomoćuextension.getURL metode
. Resursi na dozvoljenoj listi se serviraju sa odgovarajućim CORS zaglavljima, tako da su dostupni putem mehanizama poput XHR.1
web_accessible_resources
u browser ekstenziji nisu dostupni samo putem veba; takođe funkcionišu sa inherentnim privilegijama ekstenzije. To znači da imaju mogućnost da:
Promene stanje ekstenzije
Učitaju dodatne resurse
Interaguju sa pregledačem do određene mere
Međutim, ova funkcija predstavlja sigurnosni rizik. Ako resurs unutar web_accessible_resources
ima značajnu funkcionalnost, napadač bi potencijalno mogao da ugradi ovaj resurs u spoljnu veb stranicu. Nesumnjivi korisnici koji posete ovu stranicu možda nehotice aktiviraju ovaj ugrađeni resurs. Takva aktivacija može dovesti do neželjenih posledica, zavisno od dozvola i sposobnosti resursa ekstenzije.
Primer PrivacyBadger-a
U ekstenziji PrivacyBadger, identifikovana je ranjivost koja se odnosi na skin/
direktorijum koji je deklarisan kao web_accessible_resources
na sledeći način (Proverite originalni blog post):
Ova konfiguracija dovela je do potencijalnog sigurnosnog problema. Konkretno, fajl skin/popup.html
, koji se prikazuje prilikom interakcije sa ikonicom PrivacyBadger u pregledaču, mogao bi biti ugrađen unutar iframe
-a. Ovo ugrađivanje moglo bi biti iskorišćeno da bi se korisnici prevarili da nenamerno kliknu na "Onemogući PrivacyBadger za ovaj sajt". Takva akcija ugrozila bi privatnost korisnika onemogućavanjem zaštite PrivacyBadger-a i potencijalno izložila korisnika povećanom praćenju. Vizuelna demonstracija ovog eksploata može se pogledati u primeru ClickJacking videa dostupnom na https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.
Da bi se rešila ova ranjivost, implementirano je jednostavno rešenje: uklanjanje /skin/*
sa liste web_accessible_resources
. Ova promena efikasno je umanjila rizik osiguravajući da sadržaj direktorijuma skin/
ne može biti pristupljen ili manipulisan putem web-pristupačnih resursa.
Popravka je bila jednostavna: ukloniti /skin/*
iz web_accessible_resources
liste.
PoC
Primer sa Metamaskom
Blog post o ClickJacking-u u Metamasku možete pronaći ovde. U ovom slučaju, Metamask je popravio ranjivost proverom da li je korišćeni protokol za pristup bio https:
ili http:
(a ne chrome:
na primer):
Još jedan rešen ClickJacking u Metamask ekstenziji bio je taj što su korisnici mogli kliknuti da dodaju na belu listu kada je stranica bila sumnjiva da je fising zbog “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Pošto je ta stranica bila ranjiva na ClickJacking, napadač bi mogao da je zloupotrebi prikazujući nešto normalno kako bi žrtva kliknula da je doda na belu listu ne primećujući, a zatim se vratila na stranicu za ribarenje koja će biti dodata na belu listu.
Primer sa Steam Inventory Helperom
Proverite sledeću stranicu da vidite kako je XSS u ekstenziji pregledača povezan sa ranjivošću ClickJacking:
pageBrowExt - XSS ExampleReference
Last updated