Фонд свободного программного обеспечения (FSF) выпустил браузерное дополнение JShelter, которое защищает от таких угроз, связанных с использованием JavaScript, как применение скриптов скрытой идентификации, отслеживание геолокации, а также хранение личных данных без согласия пользователя. 

Код дополнения распространяется под лицензией GPLv3, а основой для него послужила разработка JavaScript Restrictor. JShelter доступен для Firefox, Google Chrome, Opera, Brave, Microsoft Edge и других браузеров с использованием движка Chromium.

В создании JShelter принимали участие специалисты, занимавшиеся разработкой NoScript, J++, JS-Shield и, конечно, JavaScript Restrictor. Главным источником финансирования проекта выступил фонд NLnet Foundation.

По словам представителей FSF, JShelter выполняет роль медиатора программных интерфейсов JavaScript, которые имеют доступ к сайтам. Дополнение обладает четырьмя уровнями настройки защиты, а также возможностью точно подогнать под требования пользователя настройки доступа к API. 

Любую страницу можно привязать к кастомным настройкам блокировки API. JShelter позволяет закрывать доступ к индивидуальным параметрам JavaScript, а также выдавать ложные данные о системе для возвращаемых значений. Отдельно стоит упомянуть режим Network Boundary Shield (NBS), который запрещает страницам использовать браузер в роли прокси между внешной и локальной сетями.

Ниже приведен список API, которые JShelter умеет блокировать:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp и VRFrameData.prototype.timestamp ― хранят точные данные о времени, поэтому могут стать легкой мишенью в случае тайминг-атак;

  • HTMLCanvasElement (canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) ― данные, из которых можно извлечь информацию о биометрии, паролях и токенах пользователя;

  • AudioBuffer и AnalyserNode (AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() и AnalyserNode.getFloatFrequencyData()) ― то же самое, но с голосовым управлением;

  • WebGLRenderingContext ― хранит идентификационные параметры компьютера;

  • MediaDevices.prototype.enumerateDevices ― управление настройками камеры и микрофона, в некоторых случаях может стать инструментом для извлечения данных биометрии;

  • navigator.deviceMemory, navigator.hardwareConcurrency — хранит информацию о технических характеристиках компьютера;

  • XMLHttpRequest (XHR) — передает сведения о системе на внешний сервер;

  • ArrayBuffer и WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) ― также используются как инструмент для тайминг-атак;

  • Geolocation API (navigator.geolocation) ― хранит данные геолокации пользователя;

  • Gamepad API (navigator.getGamepads()) ― хранит данные о подключенном геймпаде;

  • Virtual Reality API, Mixed Reality API ― содержит информацию о подключенных устройствах виртуальной реальности;

  • window.name ― может стать причиной межсайтовых утечек;

  • navigator.sendBeacon ― инструменты, предназначенные для веб-аналитики.

Источник: Habr

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Похожие записи: