Pred kratkim je bilo odkrito, da priljubljeni blokator oglasov «Adblock Plus »ima ranljivost, ki omogoča organizacijo izvajanja kode JavaScript na straneh, v primeru uporabe nepreizkušenih filtrov, ki jih pripravijo tretje osebe z zlonamernim namenom (na primer s povezovanjem naborov pravil tretjih oseb ali z zamenjavo pravil med napadom MITM).
Seznam avtorjev z nabori filtrov lahko organizirajo izvajanje svoje kode v okviru spletnih mest, dostopnih spletnemu mestu uporabnik dodaja pravila z operaterjem »$ rewrite«, ki omogoča zamenjavo dela URL-ja.
Kako je mogoče to izvajanje kode?
Izjava o $ rewrite ne dovoljuje zamenjave gostitelja v url, vendar ponuja priložnost za prosto manipulacijo z argumenti zahteve.
Vendar izvedbo kode je mogoče doseči. Nekatera spletna mesta, kot so Google Zemljevidi, Gmail in Google Slike, uporabljajo tehniko dinamičnega nalaganja izvršljivih blokov JavaScript, prenesenih v obliki navadnega besedila.
Če strežnik dovoljuje preusmeritev zahtev, ga lahko posreduje drugemu gostitelju s spreminjanjem parametrov URL-ja (na primer v kontekstu Googla lahko preusmeritev izvede prek API-ja »google.com/search«) .
Poleg gostitelji, ki omogočajo preusmeritev, lahko izvršite tudi napad proti storitvam, ki omogočajo lokacijo uporabniške vsebine (gostovanje kode, platforma za umestitev člankov itd.).
Metoda Predlagani napad vpliva samo na strani, ki dinamično nalagajo nize s kodo JavaScript (na primer prek XMLHttpRequest ali Fetch) in jih nato zaženite.
Druga glavna omejitev je potreba po uporabi preusmeritve ali postavitvi poljubnih podatkov na strani izvornega strežnika, ki zagotavlja vir.
Vendar pa kot dokaz pomembnosti napada, vam pokaže, kako organizirati izvajanje kode tako, da odprete maps.google.com z uporabo preusmeritve prek "google.com/search".
Zahteve za uporabo XMLHttpRequest ali Fetch za prenos oddaljenih skriptov za izvajanje ne bodo propadle, če bo uporabljena možnost $ rewrite.
Odprta preusmeritev je prav tako pomembna, ker omogoča XMLHttpRequest branje skripta z oddaljenega spletnega mesta, čeprav se zdi, da je iz istega vira.
Delajo že na reševanju problema
Rešitev je še v pripravi. Težava vpliva tudi na blokatorje AdBlock in uBlock. UBlock Origin Blocker ni dovzeten za težavo, ker ne podpira operaterja »$ rewrite«.
V nekem trenutku je avtor uBlock Origin zavrnil dodajanje podpore za prepisovanje $, pri čemer je navedel morebitne varnostne težave in nezadostne omejitve na ravni gostitelja (namesto ponovnega pisanja je bila predlagana možnost poizvedbe, da namesto zamenjave pobriše parametre poizvedbe).
Naša odgovornost je zaščititi svoje uporabnike.
Kljub zelo nizkemu dejanskemu tveganju smo se odločili, da odstranimo možnost $ rewrite. Zato bomo v najkrajšem možnem času izdali posodobljeno različico Adblock Plus.
To počnemo iz previdnosti. Ni bilo nobene poskuse zlorabe možnosti prepisovanja in potrudili se bomo, da se to ne zgodi.
To pomeni, da noben uporabnik Adblock Plus ne ogroža.
DRazvijalci Adblock Plus menijo, da dejanski napadi niso verjetni, saj se pregledajo vse spremembe na rednih seznamih pravil, uporabniki pa zelo redko izvajajo povezavo seznamov tretjih oseb.
Zamenjava pravil prek MITM privzeto odstrani uporabo HTTPS za nalaganje običajnih seznamov blokov (za preostale sezname je v prihodnji izdaji predvideno prepoved prenosa HTTP).
Če želite blokirati napade na strani, Uporabiti je mogoče direktive CSP (Content Security Policy), s pomočjo katerega lahko izrecno določite gostitelje, s katerih je mogoče naložiti zunanje vire.
vir: https://adblockplus.org, https://armin.dev