Ազատ ծրագրաշարի հիմնադրամը ներկայացրել է JShelter նախագիծը, որը մշակում է դիտարկիչի հավելում, որը պաշտպանում է այն սպառնալիքներից, որոնք առաջանում են վեբկայքերում JavaScript-ի օգտագործման ժամանակ, ներառյալ թաքնված նույնականացումը, շարժումներին հետևելը և օգտվողի տվյալների կուտակումը: Ծրագրի կոդը բաշխվում է GPLv3 լիցենզիայի ներքո: Հավելվածը պատրաստված է Firefox, Google Chrome, Opera, Brave, Microsoft Edge և Chromium շարժիչի վրա հիմնված այլ բրաուզերների համար։
Ծրագիրը մշակվում է NLnet հիմնադրամի ֆինանսավորմամբ համատեղ նախաձեռնությամբ: Ջորջիո Մաոնեն՝ NoScript հավելման ստեղծողը, ինչպես նաև J++ նախագծի հիմնադիրները և JS-Shield և JavaScript Restrictor հավելումների հեղինակները նույնպես միացել են JShelter-ի մշակմանը։ JavaScript Restrictor հավելումը օգտագործվում է որպես նոր նախագծի հիմք:
JShelter-ը կարելի է դիտարկել որպես մի տեսակ firewall JavaScript ծրագրավորման ինտերֆեյսերի համար, որոնք հասանելի են կայքերին և վեբ հավելվածներին: Հավելվածն ապահովում է պաշտպանության չորս մակարդակ, ինչպես նաև 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.getByteFrequencyDrequencyFromChannel() և 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 - օգտագործվում է վեբ վերլուծության համար:
Source: opennet.ru