Pronašao sam veliku manu u Mozillinom načinu privatnog pregledavanja.

Ako se ostavi neispravljen, ova bi pogreška mogla napraviti pustoš, ali Mozillini hitni popravci spasili su dan.

U ovom ću članku razgovarati o pojedinostima greške koju sam otkrio s načinom privatnog pregledavanja Mozilla Firefox koji je omogućio praćenje sesija privatnog pregledavanja.

Privatno pregledavanje jedna je od najpoznatijih i najkorištenijih značajki modernih preglednika danas. Preglednici neprestano dodaju mnoga poboljšanja u privatno pregledavanje kako bi poboljšali privatnost korisnika.

Ponuđene značajke mogu se razlikovati od jednog preglednika do drugog, ali barem korisnik koji koristi privatno pregledavanje ima dva najosnovnija zahtjeva:

1. Privatno posjećene web stranice ne mogu spremiti nikakve podatke

2. Posjećene stranice se ne spremaju

Pa, otkrio sam da način privatnog pregledavanja preglednika Firefox ne ispunjava nijedan od gore navedenih zahtjeva.

Tehnički detalji

Da bi web mjesto moglo pratiti korisnika tijekom sesija privatnog pregledavanja, mora koristiti trajnu pohranu na razini preglednika.

Postoji više načina za pohranu podataka u pregledniku - LocalStorage, WebSQL i IndexedDB.

Nedavno sam naišao na pohranu IndexedDB.

IndexedDB je API na niskoj razini za pohranu značajnih količina strukturiranih podataka na strani klijenta, uključujući datoteke / blobs - Mozilla Developer Network

Iako, prema dokumentaciji, IndexedDB ne bi trebao biti dostupan u načinu privatnog pregledavanja.

Ako koristite IndexedDB izravno na web stranici, pojavit će se pogreška:

Ali što će se dogoditi ako IndexedDB kombinirate s web radnicima?

Web Workers omogućuje pokretanje operacije skripte u pozadini niti odvojeno od glavne niti izvršenja web aplikacije - Mozilla Developer Network

Pojedinosti o izdanju: Fallout

IndexedDB se može pristupiti u načinu privatnog pregledavanja putem web radnika. I ne samo to, nego kada se preglednik zatvori, podaci IndexedDB se ne brišu. Ovi pohranjeni podaci trajat će tijekom više sesija privatnog pregledavanja jer se prilikom brisanja ne brišu. ?

Pogledajmo nekoliko načina na koji bi se ovaj problem mogao zloupotrijebiti.

Web stranice

Zlonamjerna web stranica može iskoristiti IndexedDB i pratiti korisnike tijekom sesija privatnog pregledavanja. Na primjer, recimo da ste posjetili badsite.com, koji koristi Web Workers i IndexedDB u načinu privatnog pregledavanja. Zatvorite prozor privatnog pregledavanja, zatvorite Firefox, pokrenite Firefox ponovno, pokrenite način privatnog pregledavanja i ponovno posjetite badsite.com. Web stranica će moći pristupiti podacima iz vaše prethodne sesije privatnog pregledavanja, jer su podaci i dalje pohranjeni u IndexedDB.

Treće strane

Pretpostavimo da siteA.com učitava analitičku skriptu s BadAnalyticsSite.com. Zatim drugo web mjesto, siteB.com , također učitava analitičku skriptu s istog web mjesta BadAnalyticsSite.com . Budući da zlonamjerna web stranica BadAnalyticsSite.com koristi Web Workers i IndexedDB, web stranica BadAnalyticsSite.com sada može pratiti korisnike web stranica siteA.com i siteB.com u svim njihovim privatnim sesijama pregledavanja.

Propuštanje diska

IndexedDB se pridržava politike istog podrijetla, što znači da svaka baza podataka ima ime koje je identificira unutar podrijetla. Budući da se naziv domene koristi kao dio naziva datoteke, to može dovesti do ozbiljnih problema kada se koristi u privatnom načinu rada.

Na primjer, ako korisnik posjeti testnu web stranicu (demo) koja koristi Web Workers + IndexedDB hostiranu na cdn.cliqz.comi učitava resurs iz konarkmodi.github.io, na disku se kreiraju sljedeća dva unosa.

Zbog gore navedene greške, web mjesto / alat za praćenje mogao bi učinkovito generirati otisak prsta i spremiti ga. Čak i ako bi korisnik izbrisao povijest web mjesta ili odabrao opciju "zaboravi na ovu stranicu", pohrana IndexDB se ne uklanja. To može stvoriti trajnu pohranu za web stranicu ili alat za praćenje koji se može zauvijek koristiti.

Izvještaj i ispravci

Mozilla potiče istraživanje sigurnosti njihovih proizvoda. Njihovim vlastitim riječima:

Mozilla Client Security Bounty Program namijenjen je poticanju sigurnosnih istraživanja u Mozilla softveru i nagrađivanju onih koji nam pomažu u stvaranju najsigurnijeg postojećeg internetskog softvera.

Ovaj sam problem prijavio u listopadu 2017. putem njihovog programa Bounty Program, a problem je riješen u studenom 2017. Od njih je zatraženo da identificiraju i riješe probleme.

Za više detalja možete pročitati cjelovito izvješće o greškama na Mozillinoj Bugzilli.

Zaista cijenim napore i radnje Mozille u rješavanju problema s najvećim prioritetom kada je riječ o privatnosti njezinih korisnika.

Sretno hakiranje!

Možete me pratiti na Twitteru na Konark Modi

Hvala na čitanju i dijeljenju! :)

Ako vam se svidjela ova priča, slobodno ??? nekoliko puta (Do 50 puta. Ozbiljno).

Zasluge: Posebna hvala Remi i Pallavi na recenziji ovog posta :)