Open Source Foundation esitteli JShelter-selainlaajennuksen JavaScript API:n rajoittamiseksi

Free Software Foundation esitteli JShelter-projektin, joka kehittää selaimen lisäosan suojaamaan sivustoilla JavaScriptiä käytettäessä syntyviltä uhilta, mukaan lukien piilotettu tunnistaminen, liikkeiden seuranta ja käyttäjätietojen kerääntyminen. Projektikoodia jaetaan GPLv3-lisenssillä. Lisäosa on valmistettu Firefoxille, Google Chromelle, Operalle, Bravelle, Microsoft Edgelle ja muille Chromium-moottoriin perustuville selaimille.

Hanketta kehitetään yhteishankkeena NLnet-säätiön rahoittamana. Giorgio Maone, NoScript-lisäosan luoja sekä J++-projektin perustajat sekä JS-Shield- ja JavaScript Restrictor -lisäosien kirjoittajat, liittyivät myös JShelterin kehittämiseen. Uuden projektin perustana on JavaScript Restrictor -lisäosa.

JShelteriä voidaan pitää eräänlaisena palomuurina verkkosivustoille ja verkkosovelluksille käytettävissä oleville JavaScript-ohjelmointirajapinnoille. Lisäosa tarjoaa neljä suojaustasoa sekä joustavan konfigurointitilan API:n käyttöön. Taso nolla mahdollistaa pääsyn kaikkiin API:ihin, ensimmäinen sisältää minimaalisen eston, joka ei häiritse sivujen toimintaa, toinen taso tasapainottaa eston ja yhteensopivuuden välillä ja neljäs taso sisältää kaiken tarpeettoman tiukan eston.

API-estoasetukset voidaan sitoa yksittäisiin sivustoihin, esimerkiksi suojausta voidaan vahvistaa joillakin sivustoilla ja poistaa käytöstä toisilla. Voit myös valikoivasti estää tiettyjä JavaScript-menetelmiä, objekteja, ominaisuuksia ja toimintoja tai muuttaa palautusarvoja (esimerkiksi tuottaa vääriä tietoja järjestelmästä). Erillinen ominaisuus on NBS (Network boundary shield) -tila, joka ei salli sivujen käyttää selainta välityspalvelimena ulkoisten ja paikallisten verkkojen välillä (kaikki lähtevät pyynnöt siepataan ja analysoidaan).

Estetyt tai rajoitetut sovellusliittymät:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timestamp, Gamepad.prototype.timestamp ja VRFrameData.prototype.timestamp - tarkkaa aikatulosta voidaan käyttää sivukanavahyökkäysten tunnistamiseen ja suorittamiseen .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - käytetään määrittämään grafiikkaalijärjestelmän ominaisuudet käyttäjän tunnistamisessa.
  • AudioBuffer ja AnalyserNode (AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyFrequencyAnalyysi kautta audiosignaalin()-AnalyatFrequencyData().Data.
  • WebGLRenderingContext - tunnistus analysoimalla grafiikkapinon ja GPU:n ominaisuuksia.
  • MediaDevices.prototype.enumerateDevices - tunnistaminen hankkimalla kameran ja mikrofonin parametrit ja nimet.
  • navigator.deviceMemory, navigator.hardwareConcurrency - tietojen hankkiminen laitteistosta.
  • XMLHttpRequest (XHR) - siirtää kerätyt järjestelmätiedot ulkoiselle palvelimelle sivun latauksen jälkeen.
  • ArrayBuffer - suorittaa mikroarkkitehtonisia Spectre-hyökkäyksiä.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - suorittaa hyökkäyksiä, jotka arvioivat viiveitä tietojen käsittelyssä.
  • Geolocation API (navigator.geolocation) - pääsy sijaintitietoihin (lisäyksen avulla voit vääristää palautettuja tietoja).
  • Gamepad API (navigator.getGamepads()) on yksi tunnistusmerkeistä, joka ottaa huomioon peliohjaimen olemassaolon järjestelmässä.
  • Virtual Reality API, Mixed Reality API - virtuaalitodellisuuden laiteparametrien käyttö tunnistamiseen.
  • window.name - sivustojen väliset vuodot.
  • navigator.sendBeacon - käytetään verkkoanalytiikkaan.

Lähde: opennet.ru

Lisää kommentti