Фонд СПО представил браузерное дополнение JShelter для ограничения JavaScript API

Материал из Викиновостей, свободного источника новостей

1 октября 2021 года

Фонд свободного ПО представил проект JShelter, развивающий браузерное дополнение для защиты от угроз, возникающих при использовании JavaScript на сайтах, включая скрытую идентификацию, отслеживание перемещений и накопление данных о пользователе. Код проекта распространяется под лицензией GPLv3. Дополнение подготовлено для Firefox, Google Chrome, Opera, Brave, Microsoft Edge и других браузеров на основе движка Chromium.

Проект развивается как совместная инициатива, финансируемая фондом NLnet Foundation. К разработке JShelter в том числе присоединился Джоржио Маоне (Giorgio Maone), создатель дополнения NoScript, а также основатели проекта J++ и авторы дополнений JS-Shield и JavaScript Restrictor. В качестве основы нового проекта использовано дополнение JavaScript Restrictor.

JShelter можно рассматривать как подобие межсетевого экрана для программных интерфейсов JavaScript, доступных сайтам и web-приложениям. Дополнение предоставляет четыре уровня защиты, а также режим гибкой настройки доступа к API. Нулевой уровень полностью разрешает доступ ко всем API, первый включает минимальные блокировки не нарушающие работу страниц, второй уровень балансирует между блокировками и совместимостью, а четвёртый уровень включает строгую блокировку всего лишнего.

Настройки блокировки API можно привязывать к отдельным сайтам, например, для какого-то сайта можно усилить защиту, а для какого-то отключить. Также можно выборочно блокировать определённые методы, объекты, свойства и функции JavaScript, или подменять возвращаемые значения (например, выдавать ложные сведения о системе). Отдельно выделяется режим NBS (Network boundary shield), который не позволяет страницам использовать браузер в качестве прокси между внешней и локальной сетями (перехватываются и анализируются все исходящие запросы).

Блокируемые или ограничиваемые API:

  • 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 - идентификация через анализ особенностей графического стека и GPU.
  • MediaDevices.prototype.enumerateDevices - идентификация через получение параметров и названий камеры и микрофона.
  • navigator.deviceMemory, navigator.hardwareConcurrency - получение сведений об оборудовании.
  • XMLHttpRequest (XHR) - передача собранных сведений о системе на внешний сервер после загрузки страницы.
  • ArrayBuffer - проведение микроархитектурных атак типа Spectre.
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - проведение атак, оценивающих задержки при доступе к данным.
  • Geolocation API (navigator.geolocation) - доступ к сведениям о местоположении (дополнение позволяет искажать возвращаемые данные).
  • Gamepad API (navigator.getGamepads()) - один из признаков идентификации, учитывающий наличие в системе геймпада.
  • Virtual Reality API, Mixed Reality API - использование параметров устройств виртуальной реальности для идентификации.
  • window.name - межсайтовые утечки.
  • navigator.sendBeacon - используется для web-аналитики.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Фонд СПО представил браузерное дополнение JShelter для ограничения JavaScript API», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.