Open Source Foundation je predstavil dodatek za brskalnik JShelter za omejitev API-ja JavaScript

Fundacija za prosto programsko opremo je predstavila projekt JShelter, ki razvija dodatek brskalniku za zaščito pred grožnjami, ki nastanejo pri uporabi JavaScripta na spletnih mestih, vključno s skrito identifikacijo, sledenjem gibanju in kopičenjem uporabniških podatkov. Koda projekta se distribuira pod licenco GPLv3. Dodatek je pripravljen za brskalnike Firefox, Google Chrome, Opera, Brave, Microsoft Edge in druge brskalnike, ki temeljijo na motorju Chromium.

Projekt nastaja kot skupna pobuda, ki jo financira Fundacija NLnet. Razvoju JShelterja so se pridružili tudi Giorgio Maone, ustvarjalec dodatka NoScript, ter ustanovitelja projekta J++ in avtorja dodatkov JS-Shield in JavaScript Restrictor. Dodatek JavaScript Restrictor je uporabljen kot osnova za nov projekt.

JShelter si lahko predstavljamo kot nekakšen požarni zid za programske vmesnike JavaScript, ki so na voljo spletnim mestom in spletnim aplikacijam. Dodatek ponuja štiri stopnje zaščite, kot tudi prilagodljiv način konfiguracije za dostop do API-ja. Nič nič v celoti omogoča dostop do vseh API-jev, prvi vključuje minimalno blokiranje, ki ne moti delovanja strani, drugi nivo balansira med blokiranjem in združljivostjo, četrti nivo pa vključuje strogo blokiranje vsega nepotrebnega.

Nastavitve blokiranja API-ja se lahko vežejo na posamezna spletna mesta, na primer, zaščito je mogoče okrepiti za nekatera spletna mesta in onemogočiti za druga. Prav tako lahko selektivno blokirate določene metode, predmete, lastnosti in funkcije JavaScript ali spremenite vrnjene vrednosti (na primer ustvarite lažne informacije o sistemu). Ločena funkcija je način NBS (Network boundary shield), ki stranem ne dovoljuje uporabe brskalnika kot posrednika med zunanjimi in lokalnimi omrežji (vse odhodne zahteve so prestrežene in analizirane).

Blokirani ali omejeni API-ji:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp in VRFrameData.prototype.timestamp – natančen časovni izhod lahko uporabite za prepoznavanje in izvajanje napadov stranskega kanala .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - uporablja se za določanje funkcij grafičnega podsistema pri identifikaciji uporabnika.
  • AudioBuffer in AnalyserNode (AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() in AnalyserNode.getFloatFrequencyData()) - identifikacija z analizo zvočnih signalov.
  • WebGLRenderingContext - identifikacija z analizo funkcij grafičnega sklada in GPE.
  • MediaDevices.prototype.enumerateDevices - identifikacija s pridobivanjem parametrov in imen kamere in mikrofona.
  • navigator.deviceMemory, navigator.hardwareConcurrency - pridobivanje informacij o strojni opremi.
  • XMLHttpRequest (XHR) - prenese zbrane sistemske informacije na zunanji strežnik po nalaganju strani.
  • ArrayBuffer - izvajanje mikroarhitekturnih napadov Spectre.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - izvajanje napadov, ki ocenjujejo zamude pri dostopu do podatkov.
  • Geolocation API (navigator.geolocation) - dostop do informacij o lokaciji (dodatek omogoča izkrivljanje vrnjenih podatkov).
  • Gamepad API (navigator.getGamepads()) je eden od identifikacijskih znakov, ki upošteva prisotnost igralne plošče v sistemu.
  • Virtual Reality API, Mixed Reality API - uporaba parametrov naprave za navidezno resničnost za identifikacijo.
  • window.name - uhajanje med spletnimi mesti.
  • navigator.sendBeacon - uporablja se za spletno analitiko.

Vir: opennet.ru

Dodaj komentar