Open Source Foundation je predstavila JShelter dodatak za pretraživač da ograniči JavaScript API

Fondacija za slobodni softver predstavila je projekat JShelter, koji razvija dodatak za pretraživač za zaštitu od prijetnji koje nastaju prilikom korištenja JavaScript-a na web stranicama, uključujući skrivenu identifikaciju, praćenje kretanja i akumulaciju korisničkih podataka. Kod projekta se distribuira pod GPLv3 licencom. Dodatak je pripremljen za Firefox, Google Chrome, Opera, Brave, Microsoft Edge i druge pretraživače bazirane na Chromium engine-u.

Projekat se razvija kao zajednička inicijativa koju finansira NLnet fondacija. Giorgio Maone, kreator dodatka NoScript, kao i osnivači J++ projekta i autori dodataka JS-Shield i JavaScript Restrictor, također su se pridružili razvoju JShelter-a. Dodatak JavaScript Restrictor se koristi kao osnova za novi projekat.

JShelter se može zamisliti kao neka vrsta zaštitnog zida za JavaScript programska sučelja dostupna web stranicama i web aplikacijama. Dodatak pruža četiri nivoa zaštite, kao i fleksibilan način konfiguracije za pristup API-ju. Nulti nivo u potpunosti omogućava pristup svim API-jima, prvi uključuje minimalno blokiranje koje ne ometa rad stranica, drugi nivo balansira između blokiranja i kompatibilnosti, a četvrti nivo uključuje strogo blokiranje svega nepotrebnog.

Postavke blokiranja API-ja mogu se vezati za pojedinačne stranice, na primjer, zaštita se može pojačati za neke stranice, a onemogućiti za druge. Također možete selektivno blokirati određene JavaScript metode, objekte, svojstva i funkcije ili promijeniti povratne vrijednosti (na primjer, proizvesti lažne informacije o sistemu). Posebna karakteristika je režim NBS (Network boundary shield), koji ne dozvoljava stranicama da koriste pretraživač kao proxy između eksterne i lokalne mreže (svi odlazni zahtevi se presreću i analiziraju).

Blokirani ili ograničeni API-ji:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp i VRFrameData.prototype.timestamp - izlaz tačnog vremena može se koristiti za identifikaciju i izvođenje napada na bočne kanale .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - koristi se za određivanje karakteristika grafičkog podsistema prilikom identifikacije korisnika.
  • AudioBuffer i AnalyserNode (AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() i analiza signala.
  • WebGLRenderingContext - identifikacija kroz analizu karakteristika grafičkog steka i GPU-a.
  • MediaDevices.prototype.enumerateDevices - identifikacija dobijanjem parametara i naziva kamere i mikrofona.
  • navigator.deviceMemory, navigator.hardwareConcurrency - dobijanje informacija o hardveru.
  • XMLHttpRequest (XHR) - prenosi prikupljene sistemske informacije na eksterni server nakon što se stranica učita.
  • ArrayBuffer - izvođenje mikroarhitektonskih Spectre napada.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - izvođenje napada koji procjenjuju kašnjenja prilikom pristupa podacima.
  • Geolocation API (navigator.geolocation) - pristup informacijama o lokaciji (dodatak vam omogućava da iskrivite vraćene podatke).
  • Gamepad API (navigator.getGamepads()) je jedan od identifikacionih znakova koji uzima u obzir prisustvo gamepada u sistemu.
  • Virtual Reality API, Mixed Reality API - upotreba parametara uređaja virtuelne stvarnosti za identifikaciju.
  • window.name - curenje na više lokacija.
  • navigator.sendBeacon - koristi se za web analitiku.

izvor: opennet.ru

Dodajte komentar