Yayasan Sumber Terbuka memperkenalkan alat tambah penyemak imbas JShelter untuk mengehadkan API JavaScript

Yayasan Perisian Percuma memperkenalkan projek JShelter, yang membangunkan alat tambah penyemak imbas untuk melindungi daripada ancaman yang timbul apabila menggunakan JavaScript pada tapak web, termasuk pengenalan tersembunyi, penjejakan pergerakan dan pengumpulan data pengguna. Kod projek diedarkan di bawah lesen GPLv3. Alat tambah disediakan untuk Firefox, Google Chrome, Opera, Brave, Microsoft Edge dan penyemak imbas lain berdasarkan enjin Chromium.

Projek ini sedang dibangunkan sebagai inisiatif bersama yang dibiayai oleh Yayasan NLnet. Giorgio Maone, pencipta add-on NoScript, serta pengasas projek J++ dan pengarang add-on JS-Shield dan JavaScript Restrictor, turut menyertai pembangunan JShelter. Alat tambah JavaScript Restrictor digunakan sebagai asas untuk projek baharu.

JShelter boleh dianggap sebagai sejenis tembok api untuk antara muka pengaturcaraan JavaScript yang tersedia untuk tapak web dan aplikasi web. Alat tambah menyediakan empat tahap perlindungan, serta mod konfigurasi fleksibel untuk akses kepada API. Tahap sifar sepenuhnya membenarkan akses kepada semua API, yang pertama termasuk penyekatan minimum yang tidak mengganggu pengendalian halaman, tahap kedua mengimbangi antara penyekatan dan keserasian, dan tahap keempat termasuk penyekatan ketat semua yang tidak perlu.

Tetapan sekatan API boleh diikat pada tapak individu, contohnya, perlindungan boleh diperkukuh untuk sesetengah tapak dan dilumpuhkan untuk tapak lain. Anda juga boleh menyekat kaedah JavaScript tertentu, objek, sifat dan fungsi, atau menukar nilai pulangan (contohnya, menghasilkan maklumat palsu tentang sistem). Ciri yang berasingan ialah mod NBS (Perisai sempadan rangkaian), yang tidak membenarkan halaman menggunakan penyemak imbas sebagai proksi antara rangkaian luaran dan setempat (semua permintaan keluar dipintas dan dianalisis).

API yang disekat atau dihadkan:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp dan VRFrameData.prototype.timestamp - output masa yang tepat boleh digunakan untuk mengenal pasti dan menjalankan serangan saluran sisi .
  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - digunakan untuk menentukan ciri subsistem grafik semasa mengenal pasti pengguna.
  • AudioBuffer dan AnalyserNode (AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() dan AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() dan AnalyserNode.getFloatatifications.
  • WebGLRenderingContext - pengenalpastian melalui analisis ciri tindanan grafik dan GPU.
  • MediaDevices.prototype.enumerateDevices - pengenalan dengan mendapatkan parameter dan nama kamera dan mikrofon.
  • navigator.deviceMemory, navigator.hardwareConcurrency - mendapatkan maklumat tentang perkakasan.
  • XMLHttpRequest (XHR) - memindahkan maklumat sistem yang dikumpul ke pelayan luaran selepas halaman dimuatkan.
  • ArrayBuffer - menjalankan serangan Spectre microarchitectural.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - menjalankan serangan yang menilai kelewatan apabila mengakses data.
  • API Geolokasi (navigator.geolocation) - akses kepada maklumat lokasi (penambahan membolehkan anda memesongkan data yang dikembalikan).
  • API Gamepad (navigator.getGamepads()) ialah salah satu tanda pengenalan yang mengambil kira kehadiran pad permainan dalam sistem.
  • API Realiti Maya, API Realiti Campuran - penggunaan parameter peranti realiti maya untuk pengenalpastian.
  • window.name - kebocoran rentas tapak.
  • navigator.sendBeacon - digunakan untuk analisis web.

Sumber: opennet.ru

Tambah komen