Фонд ВПЗ прадставіў браузерны дадатак JShelter для абмежавання JavaScript API

Фонд вольнага ПЗ прадставіў праект 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.getByteFrequencyData() і AnalyserNode. гукавых сігналаў.
  • 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-аналітыкі.

Крыніца: opennet.ru

Дадаць каментар