La Open Source Foundation ha introdotto il componente aggiuntivo del browser JShelter per limitare l'API JavaScript

La Free Software Foundation ha introdotto il progetto JShelter, che sviluppa un componente aggiuntivo del browser per proteggere dalle minacce che si presentano quando si utilizza JavaScript sui siti Web, inclusa l'identificazione nascosta, il tracciamento dei movimenti e l'accumulo di dati dell'utente. Il codice del progetto è distribuito sotto la licenza GPLv3. Il componente aggiuntivo è preparato per Firefox, Google Chrome, Opera, Brave, Microsoft Edge e altri browser basati sul motore Chromium.

Il progetto è stato sviluppato come iniziativa congiunta finanziata dalla Fondazione NLnet. Allo sviluppo di JShelter si sono uniti anche Giorgio Maone, creatore del componente aggiuntivo NoScript, nonché i fondatori del progetto J++ e gli autori dei componenti aggiuntivi JS-Shield e JavaScript Restrictor. Il componente aggiuntivo JavaScript Restrictor viene utilizzato come base per il nuovo progetto.

JShelter può essere pensato come una sorta di firewall per le interfacce di programmazione JavaScript disponibili per siti Web e applicazioni Web. Il componente aggiuntivo fornisce quattro livelli di protezione, nonché una modalità di configurazione flessibile per l'accesso all'API. Il livello zero consente completamente l'accesso a tutte le API, il primo include un blocco minimo che non interrompe il funzionamento delle pagine, il secondo livello bilancia tra blocco e compatibilità e il quarto livello include un blocco rigoroso di tutto ciò che non è necessario.

Le impostazioni di blocco delle API possono essere legate a singoli siti, ad esempio la protezione può essere rafforzata per alcuni siti e disabilitata per altri. Puoi anche bloccare selettivamente determinati metodi, oggetti, proprietà e funzioni JavaScript o modificare i valori restituiti (ad esempio, produrre false informazioni sul sistema). Una caratteristica separata è la modalità NBS (Network Boundary Shield), che non consente alle pagine di utilizzare il browser come proxy tra reti esterne e locali (tutte le richieste in uscita vengono intercettate e analizzate).

API bloccate o limitate:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp e VRFrameData.prototype.timestamp: l'output temporale esatto può essere utilizzato per identificare ed eseguire attacchi side-channel .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - utilizzato per determinare le caratteristiche del sottosistema grafico quando si identifica un utente.
  • Audiobuffer e Analysernode (Audiobuffer.getChanneldata (), Audiobuffer.copyfromchannel (), analysernode.getBytimedomaindata (), analySernode.getfloatTimedoma Indata (), analysernode.getbytefrequencydata () e analysernode.getfloatfrequency ()) - identificazione attraverso l'analisi del segnale sonoro.
  • WebGLRenderingContext: identificazione attraverso l'analisi delle caratteristiche dello stack grafico e della GPU.
  • MediaDevices.prototype.enumerateDevices: identificazione ottenendo parametri e nomi della fotocamera e del microfono.
  • navigator.deviceMemory, navigator.hardwareConcurrency: ottenere informazioni sull'hardware.
  • XMLHttpRequest (XHR): trasferisce le informazioni di sistema raccolte a un server esterno dopo il caricamento della pagina.
  • ArrayBuffer: esegue attacchi Spectre microarchitettonici.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - effettua attacchi che valutano i ritardi durante l'accesso ai dati.
  • API di geolocalizzazione (navigator.geolocation) - accesso alle informazioni sulla posizione (l'aggiunta consente di distorcere i dati restituiti).
  • L'API del gamepad (navigator.getGamepads()) è uno dei segni identificativi che tiene conto della presenza di un gamepad nel sistema.
  • API di realtà virtuale, API di realtà mista: utilizzo dei parametri del dispositivo di realtà virtuale per l'identificazione.
  • window.name: perdite tra siti.
  • navigator.sendBeacon: utilizzato per l'analisi web.

Fonte: opennet.ru

Aggiungi un commento