Пункти гузаргоҳ техникаи муҳофизати пайвасти бехатарро пешниҳод кард, ки истифодаи осебпазириро мушкилтар мекунад

Ширкати Checkpoint муаррифӣ кард Механизми муҳофизати пайванди бехатар, ки эҷоди истисморҳоеро душвор месозад, ки таъриф ё тағир додани нишондодҳоро ба буферҳои ҳангоми иҷрои занги malloc ҷудошуда идора мекунанд. Safe-Linking имкони истифодабарии осебпазириро пурра манъ намекунад, аммо бо сарфи ҳадди ақал он эҷоди категорияҳои муайяни истисморҳоро ба таври назаррас мушкил мекунад, зеро ба ғайр аз пур шудани буфери истисморшаванда, боз як осебпазириро пайдо кардан лозим аст, ки боиси ихроҷи маълумот дар бораи ҷойгиркунии теппа дар хотира.

Часбҳое, ки Пайвастшавии бехатарро амалӣ мекунанд, барои Glibc (ptmalloc), uClibc-NG (dmalloc), gperftools (tcmalloc) ва Google TCMalloc омода карда шудаанд ва инчунин барои такмил додани муҳофизат дар Chromium (дар
Аз соли 2012, Chromium аллакай дар техникаи муҳофизати MaskPtr сохта шудааст, ки ба ҳалли як мушкилот нигаронида шудааст, аммо ҳалли он аз Checkpoint нишондиҳандаҳои баландтарро нишон медиҳад).
Часбҳои пешниҳодшуда аллакай барои таҳвил дар моҳи август тасдиқ карда шудаанд glibc 3.32 ва Пайвасткунии бехатар ба таври нобаёнӣ фаъол карда мешавад. uClibc-NG Пайвасткунии бехатарро дастгирӣ мекунад ворид шуд ба нашри 1.0.33 дохил карда шудааст ва бо нобаёнӣ фаъол аст. Тағирот дар gperftools (tcmalloc кӯҳна) кабул карда шуд, аммо ҳамчун вариант дар нашри оянда пешниҳод карда мешавад.

Таҳиякунандагон TCMalloc (tcmalloc нав) қабул карданро рад кард тағирот, бо истинод ба таназзули ҷиддии фаъолият ва зарурати илова кардани санҷишҳои васеъ барои мунтазам тафтиш кардани он, ки ҳама чиз тавре интизор мерафт, кор мекунад. Санҷишҳо аз ҷониби муҳандисони Checkpoint нишон доданд, ки усули Пайвастшавии бехатар ба истеъмоли иловагии хотира оварда намерасонад ва самаранокӣ ҳангоми иҷрои амалиёти ҷамъоварӣ ба ҳисоби миёна танҳо 0.02% ва дар сенарияи бадтарин 1.5% кам мешавад (барои муқоиса, хароҷоти изофӣ дар усули дар Chromium истифодашаванда "камтар аз 2%" ҳисоб карда мешавад). Дохилшавӣ
Пайвасткунии бехатар ба он оварда мерасонад, ки ҳар дафъа даъват кардани free() 2-3 дастури иловагии васлкунӣ ва ҳар дафъа даъват шудани malloc() 3-4 дастур иҷро мешавад. Иҷрои марҳилаҳои ибтидоӣ ва тавлиди арзиши тасодуфӣ талаб карда намешавад.

Пункти гузаргоҳ техникаи муҳофизати пайвасти бехатарро пешниҳод кард, ки истифодаи осебпазириро мушкилтар мекунад

Пайвастшавии бехатарро на танҳо барои беҳтар кардани амнияти амалҳои гуногуни теппа истифода бурдан мумкин аст, балки инчунин барои илова кардани назорати якпорчагӣ ба ҳама гуна сохторҳои додаҳо, ки рӯйхатҳои алоҳидаи ишоракунакҳои дар паҳлӯи худи буферҳо ҷойгиршударо истифода мебаранд, истифода мешавад. Татбиқи ин усул хеле содда аст ва танҳо илова кардани як макрос ва татбиқи он ба нишондиҳандаҳо ба блоки навбатии кодро талаб мекунад (масалан, барои Glibc тағйирот танҳо чанд сатри код). Усул ба тағйироти зерин вобаста аст:

+#муайян кардани PROTECT_PTR(pos, ptr) \
+ (((__typeof (ptr)) ((((андоза_т) pos) >> 12) ^ (((андоза_т) ptr)))

+#муайян кардани REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

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

Моҳияти усул истифодаи маълумоти тасодуфӣ аз механизми тасодуфии суроғаи ASLR (mmap_base) барои ҳифзи рӯйхатҳои алоҳидаи алоқаманд ба монанди Fast-Bins ва TCache мебошад. Пеш аз ба кор бурдани ишора ба унсури навбатии рӯйхат ба арзиш, он табдилдиҳии ниқобро иҷро мекунад ва ҳамоҳангии саҳифаро месанҷад. Нишондиҳанда бо натиҷаи амалиёти "(L >> PAGE_SHIFT) XOR (P)" иваз карда мешавад, ки дар он P арзиши нишоннамо ва L макони хотираест, ки нишоннамо нигоҳ дошта мешавад.

Пункти гузаргоҳ техникаи муҳофизати пайвасти бехатарро пешниҳод кард, ки истифодаи осебпазириро мушкилтар мекунад

Вақте ки дар система истифода мешавад ASLR (Тасодуфансозии Address Space Layout Layout) қисми битҳои L бо суроғаи пойгоҳи теппа дорои арзишҳои тасодуфӣ мебошанд, ки ҳамчун калид барои рамзгузории P истифода мешаванд (бо амалиёти ивазкунии 12-бит барои саҳифаҳои 4096-байтӣ истихроҷ карда мешаванд). Ин манипуляция хатари рабудани нишондодҳоро дар истисмор коҳиш медиҳад, зеро нишоннамо дар шакли аслии худ нигоҳ дошта намешавад ва иваз кардани он дониши тақсимоти теппаро талаб мекунад. Илова бар ин, коди патч инчунин санҷиши иловагии ҳамоҳангсозии блокро дар бар мегирад, ки ба ҳамлакунанда имкон намедиҳад, ки нишондиҳандаро бо арзиши номувофиқ иваз кунад ва донистани шумораи битҳои мувофиқро талаб кунад, ки дар системаҳои 64-битӣ ба таври иловагӣ ба блок кардан имкон медиҳад 15 аз 16 кӯшиши ҳамла, ки ҳамоҳангиро ба назар намегиранд.

Ин усул барои муҳофизат аз ҳамлаҳое, ки аз навнависии қисман нишондодҳо (тағйир додани байтҳои паст), азнавнависии пурраи нишоннамо (ба рамзи ҳамлакунанда) ва тағир додани мавқеи рӯйхат дар суроғаи номувофиқ истифода мешаванд, самаранок аст. Ҳамчун мисол, нишон дода шудааст, ки истифодаи Safe-Linking дар malloc имкон медиҳад, ки истисмори вақтҳои охир баста шавад. муайян карда шуд аз ҷониби ҳамон муҳаққиқони осебпазирӣ CVE-2020-6007 дар нури интеллектуалии Philips Hue Bridge, ки дар натиҷаи фаромадани буфер ба вуҷуд омадааст ва ба шумо имкон медиҳад, ки назорати дастгоҳро ба даст оред.

Манбаъ: opennet.ru

Илова Эзоҳ