Kada jedan klik nije samo jedan klik

Postoje situacije u kojima obična web stranica, bez instalacije bilo kakvog programa i bez vidljivih upozorenja, može ozbiljno opteretiti računar ili mobilni uređaj. Ne mora se raditi o klasičnom virusu niti o sofisticiranom hakerskom napadu. Ponekad je dovoljan samo jedan klik na pogrešan link.

Sigurnost danas nije samo antivirus

Većina korisnika vjeruje da ih antivirus ili ugrađena zaštita preglednika štite od svih opasnosti. Takvi alati zaista mogu spriječiti mnoge prijetnje, ali nisu napravljeni da prepoznaju svaku vrstu zloupotrebe.

Savremene web aplikacije imaju pristup brojnim mogućnostima koje su potpuno legitimne i neophodne za njihov rad. Primjera radi, web trgovina pamti sadržaj korpe, internet bankarstvo čuva određene podatke tokom sesije, a online alati spremaju korisničke postavke kako bi iskustvo bilo što ugodnije.

Problem nastaje kada se iste mogućnosti koriste na način koji nije predviđen.

Šta su localStorage i IndexedDB?

Većina korisnika nikada nije čula za ove nazive, iako ih koristi gotovo svakodnevno.

TehnologijaČemu služi
localStorageČuva manje količine podataka koje web stranica želi zapamtiti između posjeta.
IndexedDBLokalna baza podataka unutar preglednika namijenjena čuvanju mnogo većih količina informacija.

Obje tehnologije razvijene su s dobrim razlogom. Zahvaljujući njima moguće je koristiti web aplikacije čak i kada internet nakratko nestane, sačuvati nacrt dokumenta ili ubrzati učitavanje stranica.

Drugim riječima, same po sebi nisu opasne.

Gdje nastaje problem?

Svaki put kada otvorimo neku web stranicu, JavaScript kod te stranice izvršava se unutar našeg preglednika.

To je sasvim normalno.

Međutim, isti taj kod može izvršavati radnje koje korisnik uopće ne primjećuje.

Jedan od mogućih scenarija jeste da stranica neprekidno zapisuje podatke u localStorage ili IndexedDB koristeći beskonačnu petlju.

Takvo ponašanje ne mora imati nikakvu svrhu osim stvaranja ogromnog broja operacija nad lokalnom memorijom preglednika.

Kako to izgleda u praksi?

Zamislimo jednostavan primjer.

Otvorite neku nepoznatu web stranicu koja na prvi pogled izgleda potpuno bezazleno.

Na ekranu se nalazi članak ili kratka vijest.

Sve izgleda normalno.

Dok čitate sadržaj, u pozadini preglednik hiljadama puta u sekundi pokušava zapisivati nove podatke u lokalnu memoriju.

Korisnik to ne vidi.

Nema iskačućih prozora.

Nema zahtjeva za dozvolama.

Nema upozorenja.

Nakon nekoliko minuta računar postaje sporiji, ventilatori rade jače, preglednik troši sve više memorije, a ostale kartice počinju usporavati.

Većina ljudi će pomisliti da je problem u starom računaru ili previše otvorenih kartica, iako je stvarni uzrok jedna jedina web stranica.

Zašto preglednik ne upozori korisnika?

Mnogi očekuju da će preglednik prikazati poruku poput:

“Ova stranica pokušava zapisati veliku količinu podataka.”

U praksi se to najčešće ne događa.

Razlog je jednostavan.

Preglednik ne može uvijek razlikovati legitimnu aplikaciju od one koja resurse koristi na neprimjeren način.

Na primjer:

  • aplikacija za obradu fotografija može sasvim opravdano spremati velike količine podataka,
  • alat za rad bez interneta koristi IndexedDB za lokalne datoteke,
  • poslovna aplikacija može čuvati hiljade zapisa zbog normalnog rada.

Granica između legitimnog korištenja i zloupotrebe nije uvijek očigledna.

Zašto beskonačna petlja predstavlja problem?

Beskonačna petlja znači da određeni zadatak nema završetak.

Ako se u takvoj petlji neprekidno izvršavaju operacije nad localStorage ili IndexedDB, posljedice mogu biti različite.

Moguća posljedicaKako je korisnik primjećuje
Povećana potrošnja procesoraRačunar postaje spor.
Velika potrošnja memorijePreglednik zauzima sve više RAM-a.
Pojačana aktivnost diskaSistem sporije reaguje.
Usporavanje ostalih karticaOtvorene stranice počinju “kočiti”.
Brže pražnjenje baterijePosebno primjetno na laptopima i telefonima.

Važno je naglasiti da ovo ne znači automatski kompromitovanje računara ili krađu podataka. Međutim, dovoljno intenzivno opterećenje može značajno narušiti korisničko iskustvo i stabilnost sistema.

Zašto je ovo važno običnim korisnicima?

Često se smatra da su ovakve teme rezervisane za programere ili stručnjake za sigurnost.

To nije tačno.

Svaki korisnik interneta svakodnevno otvara desetine linkova.

Klik na objavu na društvenoj mreži.

Rezultat pretrage.

Reklama.

Link poslan putem poruke.

QR kod.

Sve to vodi prema web stranici koja pokreće vlastiti JavaScript kod.

Drugim riječima, svaki klik predstavlja određeni nivo povjerenja prema stranici koju otvaramo.

Kako smanjiti rizik?

Nijedna mjera ne pruža potpunu zaštitu, ali nekoliko jednostavnih navika može značajno smanjiti mogućnost problema.

  1. Otvarajte linkove samo kada poznajete njihov izvor.
  2. Izbjegavajte stranice koje odmah usporavaju preglednik ili uređaj.
  3. Redovno ažurirajte preglednik jer novije verzije često donose bolje mehanizme zaštite i optimizacije.
  4. Povremeno obrišite podatke web stranica ako primijetite neuobičajeno ponašanje preglednika.
  5. Ako neka kartica postane izrazito spora ili prestane reagovati, zatvorite je pomoću upravitelja zadataka preglednika ili operativnog sistema.

Ne mora biti virus da bi bio problem

Danas sigurnost na internetu više nije pitanje isključivo virusa, trojanaca ili phishing prevara.

Web tehnologije postale su izuzetno moćne i omogućavaju izradu aplikacija koje rade gotovo kao klasični desktop programi. Upravo zbog toga iste mogućnosti mogu biti iskorištene i na način koji negativno utiče na performanse uređaja.

Neovlašteno ili pretjerano korištenje lokalnih mehanizama za pohranu podataka, posebno u kombinaciji s beskonačnim petljama i velikim brojem operacija, može uzrokovati značajno opterećenje preglednika bez vidljivih upozorenja za korisnika.

Zbog toga svijest o sigurnosti danas počinje mnogo prije nego što antivirus nešto otkrije. Počinje trenutkom kada odlučimo kojem ćemo linku vjerovati i koju ćemo web stranicu otvoriti.