Atvirojo kodo fondas pristatė JShelter naršyklės priedą, kad apribotų JavaScript API

„Free Software Foundation“ pristatė projektą „JShelter“, kuris kuria naršyklės priedą, skirtą apsaugoti nuo grėsmių, kylančių naudojant „JavaScript“ svetainėse, įskaitant paslėptą identifikavimą, judesių stebėjimą ir naudotojo duomenų kaupimą. Projekto kodas platinamas pagal GPLv3 licenciją. Priedas paruoštas „Firefox“, „Google Chrome“, „Opera“, „Brave“, „Microsoft Edge“ ir kitoms naršyklėms, pagrįstoms „Chromium“ varikliu.

Projektas vystomas kaip bendra iniciatyva, finansuojama NLnet fondo. Prie JShelter kūrimo taip pat prisijungė Giorgio Maone, NoScript priedo kūrėjas, J++ projekto įkūrėjai bei JS-Shield ir JavaScript Restrictor priedų autoriai. „JavaScript Restrictor“ priedas naudojamas kaip naujo projekto pagrindas.

„JShelter“ gali būti laikoma „JavaScript“ programavimo sąsajų, prieinamų svetainėms ir žiniatinklio programoms, ugniasienė. Priedas suteikia keturis apsaugos lygius, taip pat lankstų konfigūracijos režimą prieigai prie API. Nulinis lygis visiškai leidžia pasiekti visas API, pirmasis apima minimalų blokavimą, kuris netrikdo puslapių veikimo, antrasis lygis balansuoja tarp blokavimo ir suderinamumo, o ketvirtasis lygis apima griežtą visko, kas nereikalinga, blokavimą.

API blokavimo nustatymus galima susieti su atskiromis svetainėmis, pavyzdžiui, kai kurių svetainių apsauga gali būti sustiprinta, o kitose išjungta. Taip pat galite pasirinktinai blokuoti tam tikrus JavaScript metodus, objektus, ypatybes ir funkcijas arba pakeisti grąžinimo reikšmes (pavyzdžiui, pateikti klaidingą informaciją apie sistemą). Atskira funkcija yra NBS (Network boundary shield) režimas, kuris neleidžia puslapiams naudoti naršyklės kaip tarpinio serverio tarp išorinių ir vietinių tinklų (visos išeinančios užklausos yra perimamos ir analizuojamos).

Užblokuotos arba apribotos API:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timestamp, Gamepad.prototype.timestamp ir VRFrameData.prototype.timestamp – tiksli laiko išvestis gali būti naudojama norint nustatyti ir vykdyti šoninio kanalo atakas .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) – naudojamas grafikos posistemio ypatybėms nustatyti identifikuojant vartotoją.
  • Garso buferis ir Analysernode (Audiobuffer.getChanneldata (), Audiobuffer.copyfromchannel (), analysernode.getBytimedomaindata (), analySernode.getfloatTimedoma Indata (), analysernode.getbytefrequencydata () ir garso (analysernoat) identifikavimo analizė.
  • WebGLRenderingContext – identifikavimas analizuojant grafikos kamino ir GPU ypatybes.
  • MediaDevices.prototype.enumerateDevices – identifikavimas gavus parametrus ir kameros bei mikrofono pavadinimus.
  • navigator.deviceMemory, navigator.hardwareConcurrency – informacijos apie techninę įrangą gavimas.
  • XMLHttpRequest (XHR) – perkelia surinktą sistemos informaciją į išorinį serverį po puslapio įkėlimo.
  • ArrayBuffer – mikroarchitektūrinių Spectre atakų vykdymas.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) – vykdo atakas, kurios įvertina delsą pasiekiant duomenis.
  • Geolocation API (navigator.geolocation) – prieiga prie vietos informacijos (papildymas leidžia iškraipyti grąžintus duomenis).
  • Gamepad API (navigator.getGamepads()) yra vienas iš identifikavimo ženklų, pagal kurį atsižvelgiama į žaidimų pulto buvimą sistemoje.
  • Virtualios realybės API, Mixed Reality API – virtualios realybės įrenginio parametrų naudojimas identifikavimui.
  • window.name – nutekėjimai įvairiose svetainėse.
  • navigator.sendBeacon – naudojamas žiniatinklio analizei.

Šaltinis: opennet.ru

Добавить комментарий