Thug sinn a-steach innleachd ùr airson comharrachadh siostam falaichte agus brabhsair

Buidheann de luchd-rannsachaidh bho Oilthigh Teicnigeach Graz (An Ostair), a bha aithnichte roimhe airson dòighean ionnsaigh a leasachadh MDS, NetSpectre и Tilgeil, gun lorg Fiosrachadh mu dhòigh sgrùdaidh seanail treas-phàrtaidh ùr a leigeas leat faighinn a-mach an dearbh dhreach den bhrobhsair, an siostam obrachaidh a chaidh a chleachdadh, ailtireachd CPU agus cleachdadh tuilleadan gus cuir an-aghaidh comharrachadh falaichte.

Gus na crìochan sin a dhearbhadh, tha e gu leòr còd JavaScript a ruith air ullachadh le luchd-rannsachaidh sa bhrobhsair. Ann an cleachdadh, faodar an dòigh a chleachdadh chan ann a-mhàin mar stòr a bharrachd airson comharrachadh neo-dhìreach an neach-cleachdaidh, ach cuideachd gus crìochan àrainneachd an t-siostaim a dhearbhadh airson cleachdadh cuimsichte de chleachdaidhean, a ’toirt aire don OS, ailtireachd agus brobhsair. Tha an dòigh èifeachdach cuideachd nuair a bhios tu a’ cleachdadh brobhsairean a chuireas an sàs dòighean bacadh aithneachaidh falaichte, leithid Tor Browser. Còd stòr prototype le cur an gnìomh dòigh foillsichte fo chead MIT.

Tha an co-dhùnadh air a dhèanamh air bunait comharrachadh pàtrain staid seilbh ann an JavaScript a tha àbhaisteach do dhiofar brobhsairean agus feartan ùine cur an gnìomh gnìomhachd, a rèir feartan an JIT, CPU agus uidheamachd riarachadh cuimhne. Bithear a’ mìneachadh thogalaichean le bhith a’ cruthachadh liosta de gach nì a gheibhear bho JavaScript. Mar a thionndaidh e a-mach, tha an àireamh de nithean dìreach co-cheangailte ris an einnsean brabhsair agus an dreach aige.

gnìomh getProperties(o) {
var toradh = [];
fhad 's a tha (o!== null) {
toradh = toradh.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
toradh air ais;
}

Mar eisimpleir, airson Firefox tha na sgrìobhainnean ag innse taic airson togalaichean 2247, agus is e an fhìor àireamh de thogalaichean comharraichte, a’ toirt a-steach feadhainn gun sgrìobhainn, 15709 (ann am Brabhsair Tor - 15639), airson togalaichean Chrome 2698 air an ainmeachadh, ach ann an da-rìribh tha 13570 air an tabhann (ann an Chrome airson Android - 13119). Bidh an àireamh agus luachan thogalaichean ag atharrachadh bho dhreach brabhsair gu dreach brabhsair agus thairis air diofar shiostaman obrachaidh.

Faodar luachan agus làthaireachd cuid de thogalaichean a chleachdadh gus an seòrsa OS a dhearbhadh. Mar eisimpleir, ann an Kubuntu tha an togalach window.innerWidth suidhichte gu 1000, agus ann an Windows 10 tha e air a shuidheachadh gu 1001. Tha an togalach window.navigator.activeVRDisplays ri fhaighinn air Windows, ach chan eil e ri fhaighinn air Linux. Airson Android, tha mòran fiosan sònraichte air an toirt seachad, ach chan eil window.SharedWorker. Gus an siostam obrachaidh a chomharrachadh, thathar cuideachd a 'moladh mion-sgrùdadh a chleachdadh air crìochan WebGL, a tha an urra ris na draibhearan. A bharrachd air an sin, le bhith a’ gairm WEBGL_debug_renderer_infoextension leigidh sin leat fiosrachadh fhaighinn mun einnsean tairgse OpenGL, a tha eadar-dhealaichte airson gach siostam obrachaidh.

Gus an CPU a dhearbhadh, thathas a ’cleachdadh measadh air eadar-dhealachaidhean ann an ùine cur an gnìomh diofar bhlocaichean còd àbhaisteach, agus bidh an làimhseachadh an urra ri ailtireachd an t-seata stiùiridh, a’ toirt aire do ghiùlan JIT (tha e air a dhearbhadh cia mheud clàr CPU a thèid a chleachdadh agus anns na cùisean sin cruthaichidh JIT còd èifeachdach le optimizations agus cleachdadh stiùireadh leudaichte, agus nuair nach eil). Gus faighinn a-mach dè an seòrsa siostam cuimhneachaidh agus siostam obrachaidh a th 'ann, tha an eadar-dhealachadh ann an ùine riarachadh cuimhne airson diofar structaran cuideachd air a thomhas, a dh'fhaodar a chleachdadh gus meud nam blocaichean cuimhne a mheasadh.

Tha na crìochan a chaidh a dhearbhadh rè coileanadh sgriobt air an coimeas ri luachan iomraidh a tha àbhaisteach airson àrainneachdan a chaidh a dhearbhadh roimhe. Rè an deuchainn, bha an dòigh leasaichte ga dhèanamh comasach 40 àrainneachd deuchainn eadar-dhealaichte a chomharrachadh gu ceart, a ’comharrachadh na dreachan de bhrobhsairean a chaidh a chleachdadh, an neach-dèanamh CPU, an siostam obrachaidh a chaidh a chleachdadh, agus an fhìrinn gu robh e a’ ruith air fìor bhathar-cruaidh no ann an inneal brìgheil.

Air leth, tha e air a thoirt fa-near gu bheil e comasach tuilleadan brabhsair agus eadhon roghainnean tuilleadan fa leth a mhìneachadh, a’ toirt a-steach tuilleadan a chaidh a dhealbhadh gus dòighean aithneachaidh falaichte no gnìomhachd modh brobhsaidh prìobhaideach a bhacadh. Ann an co-theacsa an dòigh a thathar a’ moladh, bidh an leithid de chur-ris gu bhith na stòr dàta eile airson comharrachadh. Tha cur-ris air a dhearbhadh le bhith a’ measadh saobhadh paramadairean na h-àrainneachd thùsail a chaidh a thoirt a-steach leis na cur-ris.

Tha dòighean aithneachaidh eile a’ toirt a-steach a bhith a’ toirt aire do dhàta neo-dhìreach mar fuasgladh sgrion, liosta de na seòrsaichean MIME le taic, paramadairean sònraichte ann an cinn (HTTP / 2 и https), mion-sgrùdadh air a chuir a-steach plugins agus fonts, cothrom air cuid de APIan lìn, a tha sònraichte do chairtean bhidio feartan rendering a’ cleachdadh WebGL agus Canvas, làimhseachadh le CSS, mion-sgrùdadh air feartan a bhith ag obair leis luch и meur-chlàr.

Source: fosgailtenet.ru

Cuir beachd ann