Cynigiodd Checkpoint dechneg amddiffyn Safe-Linking, gan ei gwneud yn anos manteisio ar wendidau

Cwmni Checkpoint wedi'i gyflwyno Mecanwaith diogelu Cyswllt Diogel, sy'n ei gwneud hi'n anodd creu campau sy'n trin y diffiniad neu'r addasiad o awgrymiadau i glustogau a ddyrennir wrth weithredu galwad malloc. Nid yw Cyswllt Diogel yn rhwystro’n llwyr y posibilrwydd o ecsbloetio gwendidau, ond gydag ychydig iawn o orbenion mae’n cymhlethu’n sylweddol y broses o greu categorïau penodol o gampau, oherwydd yn ogystal â’r gorlif byffer y gellir ei ecsbloetio, mae angen dod o hyd i wendid arall sy’n achosi gollyngiad o wybodaeth am lleoliad y domen yn y cof.

Mae clytiau sy'n gweithredu Safe-Linking wedi'u paratoi ar gyfer Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) a Google TCMalloc, ac fe'u cynigir hefyd ar gyfer uwchraddio amddiffyniad yn Chromium (yn
Ers 2012, mae Chromium eisoes wedi cynnwys techneg amddiffyn MaskPtr gyda'r nod o ddatrys yr un broblem, ond mae'r ateb gan Checkpoint yn dangos perfformiad uwch).
Mae'r clytiau a awgrymwyd eisoes wedi'u cymeradwyo i'w dosbarthu yn natganiad mis Awst Glibc 3.32 a bydd Safe-Linking yn cael ei alluogi yn ddiofyn. Mae uClibc-NG yn cefnogi Safe-Linking mynd i mewn cynnwys yn rhyddhau 1.0.33 ac yn cael ei alluogi yn ddiofyn. Newidiadau mewn gperftools (hen tcmalloc) derbyn, ond bydd yn cael ei gynnig fel opsiwn mewn datganiad yn y dyfodol.

Datblygwyr TCMalloc (tcmalloc newydd) gwrthod derbyn newid, gan nodi dirywiad perfformiad difrifol a'r angen i ychwanegu profion helaeth i wirio'n rheolaidd bod popeth yn gweithio yn ôl y disgwyl. Dangosodd profion gan beirianwyr Checkpoint nad yw'r dull Safe-Linking yn arwain at ddefnydd cof ychwanegol, a bod perfformiad wrth berfformio gweithrediadau tomen yn cael ei leihau ar gyfartaledd o 0.02% yn unig, ac yn y senario waethaf 1.5% (er mwyn cymharu, mae'r gorbenion yn amcangyfrifir bod y dull a ddefnyddir yn Chromium yn “llai na 2%)”. Cynhwysiad
Mae Safe-Linking yn arwain at 2-3 o gyfarwyddiadau cydosod ychwanegol yn cael eu gweithredu bob tro y gelwir am ddim(), a 3-4 cyfarwyddyd bob tro y gelwir malloc(). Nid oes angen rhedeg y camau cychwyn a chynhyrchu gwerth ar hap.

Cynigiodd Checkpoint dechneg amddiffyn Safe-Linking, gan ei gwneud yn anos manteisio ar wendidau

Gellir defnyddio Safe-Linking nid yn unig i wella diogelwch gweithrediadau pentwr amrywiol, ond hefyd i ychwanegu rheolaethau cywirdeb i unrhyw strwythurau data sy'n defnyddio rhestrau un-gysylltiedig o awgrymiadau a osodir wrth ymyl y byfferau eu hunain. Mae'r dull yn syml iawn i'w weithredu a dim ond un macro sydd ei angen a'i gymhwyso i awgrymiadau i'r bloc nesaf yn y cod (er enghraifft, ar gyfer Glibc newidiadau dim ond ychydig linellau o god). Mae'r dull yn dibynnu ar y newidiadau canlynol:

#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr))))

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

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

Hanfod y dull yw defnyddio data ar hap o fecanwaith hapgyfeirio cyfeiriadau ASLR (mmap_base) i ddiogelu rhestrau unedig gysylltiedig fel Biniau Cyflym a TCache. Cyn i'r gwerth gael ei gymhwyso i bwyntydd i'r elfen nesaf yn y rhestr, mae'n trosi mwgwd ac yn gwirio aliniad tudalen. Mae'r pwyntydd yn cael ei ddisodli gan ganlyniad y gweithrediad "(L >> PAGE_SHIFT) XOR (P)", lle P yw gwerth y pwyntydd a L yw'r lleoliad cof lle mae'r pwyntydd yn cael ei storio.

Cynigiodd Checkpoint dechneg amddiffyn Safe-Linking, gan ei gwneud yn anos manteisio ar wendidau

Pan gaiff ei ddefnyddio yn y system ASLR (Ar hap Cyfeiriad Gosodiad Gofod) rhan o'r didau L gyda'r cyfeiriad sylfaen domen yn cynnwys gwerthoedd ar hap a ddefnyddir fel allwedd i amgodio P (a dynnwyd gan weithrediad shifft 12-did ar gyfer tudalennau 4096-beit). Mae'r driniaeth hon yn lleihau'r risg o herwgipio pwyntydd mewn camfanteisio, gan nad yw'r pwyntydd yn cael ei storio yn ei ffurf wreiddiol ac mae angen gwybodaeth am ddyraniad y domen er mwyn gosod pwyntydd yn ei le. Yn ogystal, mae'r cod clwt hefyd yn cynnwys gwiriad ychwanegol ar gyfer aliniad bloc, nad yw'n caniatáu i ymosodwr ddisodli pwyntydd â gwerth heb ei alinio ac mae angen gwybodaeth am nifer y darnau sydd wedi'u halinio, sydd ar systemau 64-bit hefyd yn caniatáu blocio. 15 allan o 16 ymgais ymosodiad nad ydynt yn cymryd aliniad i ystyriaeth.

Mae'r dull yn effeithiol ar gyfer amddiffyn rhag ymosodiadau sy'n defnyddio ailysgrifennu pwyntydd rhannol (newid bytes isel), ailysgrifennu pwyntydd cyflawn (ailgyfeirio i god yr ymosodwr) a newid safle'r rhestr mewn cyfeiriad heb ei alinio. Er enghraifft, dangosir y byddai defnyddio Safe-Linking yn malloc yn caniatáu ecsbloetio blocio yn ddiweddar a nodwyd gan yr un ymchwilwyr bregusrwydd CVE-2020-6007 yng ngolau smart Philips Hue Bridge, a achosir gan orlif byffer ac sy'n eich galluogi i gael rheolaeth ar y ddyfais.

Ffynhonnell: opennet.ru

Ychwanegu sylw