Нээлттэй эхийн сан нь JavaScript API-г хязгаарлах зорилгоор JShelter хөтчийн нэмэлтийг нэвтрүүлсэн

Чөлөөт програм хангамжийн сан нь JavaScript-ийг вэбсайтууд дээр ашиглах үед гарч ирэх аюул заналхийлэл, тухайлбал далд таних, хөдөлгөөнийг хянах, хэрэглэгчийн өгөгдөл хуримтлуулахаас хамгаалах хөтчийн нэмэлтийг хөгжүүлдэг JShelter төслийг танилцуулав. Төслийн кодыг GPLv3 лицензийн дагуу түгээдэг. Нэмэлт нь Firefox, Google Chrome, Opera, Brave, Microsoft Edge болон Chromium хөдөлгүүр дээр суурилсан бусад хөтчүүдэд зориулагдсан болно.

Энэхүү төслийг NLnet сангийн санхүүжилтээр хамтарсан санаачилгаар боловсруулж байна. NoScript нэмэлтийг бүтээгч Жоржио Маоне, мөн J++ төслийн үүсгэн байгуулагчид болон JS-Shield болон JavaScript хязгаарлагч нэмэлтүүдийн зохиогчид JShelter-ийн хөгжилд нэгдсэн. JavaScript хязгаарлагч нэмэлтийг шинэ төслийн үндэс болгон ашиглаж байна.

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

API блоклох тохиргоог тусдаа сайтуудтай холбож болно, жишээлбэл, зарим сайтын хамгаалалтыг бэхжүүлж, заримыг нь идэвхгүй болгож болно. Та мөн JavaScript-ийн тодорхой аргууд, объект, шинж чанар, функцийг сонгон хаах эсвэл буцаах утгыг өөрчлөх боломжтой (жишээлбэл, системийн талаар худал мэдээлэл гаргах). Тусдаа онцлог нь NBS (Сүлжээний хилийн хамгаалалт) горим бөгөөд хуудсууд нь гадаад болон дотоод сүлжээнүүдийн хооронд хөтчийг прокси болгон ашиглахыг зөвшөөрдөггүй (бүх гарах хүсэлтийг таслан зогсоож, дүн шинжилгээ хийдэг).

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх