Checkpoint teknolojiyek ewlehiyê ya Safe-Linking pêşniyar kir ku karanîna qelsiyan dijwartir dike

Şirketa xala kontrolê pêşkêş kirin Mekanîzmaya parastinê ya Ewle-Girêdana, ku çêkirina îstîsmarên ku pênase an guheztina nîşankeran li tamponên ku dema pêkanîna bangek malloc têne veqetandin manîpule dikin dijwar dike. Têkiliya Ewle bi tevahî îhtîmala îstismarkirina qelsiyan asteng nake, lê digel sermaya hindiktirîn ew çêkirina hin kategoriyên îstîsmarê bi girîngî tevlihev dike, ji ber ku ji bilî zêdekirina tamponê ya bikêrhatî, pêdivî ye ku qelsiyek din jî were dîtin ku dibe sedema derketina agahdariya li ser danîna giravê di bîrê de.

Paçên ku Safe-Linking bicîh dikin ji bo Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) û Google TCMalloc hatine amadekirin, û her weha ji bo nûvekirina parastina li Chromium (li
Ji sala 2012-an vir ve, Chromium jixwe di teknîka parastina MaskPtr de ji bo çareserkirina heman pirsgirêkê ava kiriye, lê çareseriya ji Checkpoint performansa bilindtir nîşan dide).
Pelên pêşniyar jixwe ji bo radestkirinê di berdana Tebaxê de hatine pejirandin glibc 3.32 û Safe-Ginking dê ji hêla xwerû ve were çalak kirin. uClibc-NG Piştgiriya Têkiliya Ewle dike ketin di berdana 1.0.33 de tê de heye û ji hêla xwerû ve hatî çalak kirin. Guhertinên di gperftools (tcmalloc kevn) qebûl kirin, lê dê di serbestberdana pêşerojê de wekî vebijarkek were pêşkêş kirin.

Developers TCMalloc (tcmalloc nû) qebûl nekir gûherrandinî, behskirina xirabûna performansê ya giran û hewcedariya zêdekirina ceribandinên berfireh da ku bi rêkûpêk kontrol bikin ka her tişt wekî ku tê hêvî kirin dixebite. Testkirina ji hêla endezyarên Checkpoint ve destnîşan kir ku rêbaza Safe-Linking rê nade xerckirina bîranînê ya zêde, û performansa dema ku karên tîrêjê pêk tînin bi navînî% 0.02% kêm dibe, û di senaryoya herî xirab de% 1.5 kêm dibe (ji bo berhevdanê, lêçûnên zêde di rêbaza ku di Chromium de hatî bikar anîn de wekî "kêmtir ji %2" têne hesibandin). Tevlîbûn
Safe-Linking di encamê de 2-3 talîmatên meclîsê yên zêde têne darve kirin her carê ku belaş () tê gotin, û 3-4 talîmat her carê ku malloc () tê gotin. Rêvekirina qonaxên destpêkê û hilberîna nirxa rasthatî ne hewce ye.

Checkpoint teknolojiyek ewlehiyê ya Safe-Linking pêşniyar kir ku karanîna qelsiyan dijwartir dike

Têkiliya Ewlehî dikare ne tenê ji bo baştirkirina ewlehiya pêkanînên cûrbecûr yên girseyê were bikar anîn, lê di heman demê de ji bo zêdekirina kontrolên yekparebûnê li her strukturên daneyê yên ku navnîşên nîşankerên yekane girêdayî yên ku li tenişta tamponan bixwe têne danîn bikar tînin. Rêbaz ji bo pêkanîna pir hêsan e û tenê pêdivî ye ku yek makro lê zêde bike û wê li ser nîşangirên bloka din a kodê bicîh bike (mînak, ji bo Glibc guheztin tenê çend rêzikên kodê). Rêbaz bi guhertinên jêrîn ve girêdayî ye:

+#define PROTECT_PTR(pos, ptr) \
+ ((__cure (ptr)) (((((mezin_t) pos) >> 12) ^ ((mezin_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

- nextp = p->fd;
+ nextp = REVEAL_PTR (p-> fd);
...

Esasê rêbazê ev e ku meriv daneyên rasthatî ji mekanîzmaya rasthatinkirina navnîşana ASLR (mmap_base) bikar bîne da ku navnîşên bi yek ve girêdayî yên wekî Fast-Bins û TCache biparêze. Berî ku nirx li ser nîşanek ji hêmana din a navnîşê re were sepandin, ew veguheztinek maskek pêk tîne û lihevkirina rûpelê kontrol dike. Nîşanker bi encama operasyona "(L >> PAGE_SHIFT) XOR (P)" tê guhertin, ku P nirxa nîşankerê ye û L cîhê bîranînê ye ku nîşanker lê tê hilanîn.

Checkpoint teknolojiyek ewlehiyê ya Safe-Linking pêşniyar kir ku karanîna qelsiyan dijwartir dike

Dema ku di pergalê de tê bikaranîn ASLR (Randomîzasyona Cihê Navnîşanê) beşek ji bitên L yên bi navnîşana bingehîn a hep re nirxên bêserûber ên ku wekî mifteyek ji bo kodkirina P-yê têne bikar anîn (ji bo rûpelên 12-byte ji hêla operasyonek guheztina 4096-bit ve hatî derxistin) vedihewîne. Ev manîpulasyon metirsiya revandina nîşankerê di îstismarekê de kêm dike, ji ber ku nîşanker di forma xweya orîjînal de nayê hilanîn û ji bo şûna wê zanîna veqetandina girikê hewce dike. Digel vê yekê, koda patchê di heman demê de ji bo hevrêziya blokê vekolînek din jî vedihewîne, ku rê nade êrîşkar ku nîşanek bi nirxek nelihevkirî biguhezîne û pêdivî bi zanîna hejmara bitsên ku li hev hatine rêz kirin, ku li ser pergalên 64-bitî jî rê dide astengkirinê. 15 ji 16 hewildanên êrîşê yên ku hevbendiyê li ber çavan nagirin.

Rêbaz ji bo parastina li hember êrîşên ku ji nû ve nivîsandina nîşankera qismî bikar tînin (guhartina baytên kêm), ji nûvenivîsandina tam a nîşankerê (beralîkirina koda êrîşkar) û guheztina cîhê navnîşê li navnîşanek nelihevkirî bi bandor e. Wekî mînakek, tê destnîşan kirin ku karanîna Safe-Linking di malloc de dê rê bide astengkirina îstismarkirina vê dawiyê nas kirin ji hêla heman lêkolînerên lawaziyê ve CVE-2020-6007 di ronahiya jîr a Philips Hue Bridge de, ku ji ber zêdebûnek tamponê çêdibe û dihêle hûn kontrola amûrê bi dest bixin.

Source: opennet.ru

Add a comment