Бақылау пункті осалдықтарды пайдалануды қиындата отырып, Safe-Linking қорғау әдісін ұсынды

Бақылау пункті компаниясы ұсынылған Safe-Linking қорғау механизмі malloc шақыруы кезінде бөлінген буферлерге көрсеткіштерді анықтауды немесе өзгертуді басқаратын эксплуаттарды жасауды қиындатады. Safe-Linking осалдықтарды пайдалануды толығымен болдырмайды, бірақ ең аз шығынмен, эксплуатациялардың белгілі бір санаттарын жасауды айтарлықтай қиындатады, өйткені пайдаланылған буфердің толып кетуіне қосымша, үйме жадының бөлінуінің ағып кетуіне себеп болатын басқа осалдықты табу керек.

Қауіпсіз байланыстыруды жүзеге асыратын патчтар Glibc (ptmalloc), uClibc-NG (dmalloc), gperftools (tcmalloc) және Google TCMalloc үшін дайындалған, сондай-ақ Chromium жүйесінде қорғанысты жаңарту үшін ұсынылған (ішінде).
Chromium жүйесінде 2012 жылдан бері бірдей мәселені шешуге бағытталған кірістірілген MaskPtr қорғау әдісі бар, бірақ Checkpoint шешімі жоғары өнімділікті көрсетеді.
Ұсынылған патчтар тамыз айындағы шығарылымда жеткізуге мақұлданған. Glibc 3.32 және Safe-Linking әдепкі бойынша қосылады. uClibc-NG қауіпсіз байланыстыруды қолдайды. кірді 1.0.33 шығарылымына кіреді және әдепкі бойынша қосылады. gperftools (ескі tcmalloc) өзгерістері қабылданды, бірақ болашақ шығарылымда опция ретінде ұсынылады.

Әзірлеушілер TCMalloc (жаңа tcmalloc) қабылдаудан бас тартты түзету, айтарлықтай өнімділік айыппұлын және барлығы дұрыс жұмыс істеп тұрғанын жүйелі түрде тексеру үшін ауқымды тестілеуді қосу қажеттілігін келтіре отырып. Checkpoint инженерлерінің тестілеуі Safe-Linking әдісі қосымша жадты тұтынуға әкелмейтінін және үйме өнімділігі орташа есеппен 0.02%-ға, ал ең нашар жағдайда 1.5%-ға төмендейтінін көрсетті (салыстыру үшін, Chromium жүйесінде қолданылатын әдістегі үстеме шығындар "2%-дан аз" деп бағаланады).
Safe-Linking әрбір тегін() қоңырауы үшін 2-3 қосымша құрастыру нұсқауларын және әрбір malloc() қоңырауы үшін 3-4 нұсқауларды береді. Инициализация және кездейсоқ мәнді генерациялау кезеңдері талап етілмейді.

Бақылау пункті осалдықтарды пайдалануды қиындата отырып, Safe-Linking қорғау әдісін ұсынды

Қауіпсіз байланыстыруды әртүрлі үйме енгізулердің қауіпсіздігін жақсарту үшін ғана емес, сонымен қатар буферлердің жанында орналасқан көрсеткіштердің жеке байланыстырылған тізімдерін пайдаланатын кез келген деректер құрылымдарына тұтастық тексерулерін қосу үшін де пайдалануға болады. Әдісті іске асыру өте қарапайым және тек бір макросты қосуды және оны кодтағы келесі блокқа көрсеткіштерге қолдануды талап етеді (мысалы, Glibc үшін өзгерістер (бар болғаны кодтың бірнеше жолы). Әдіс келесі өзгерістерге байланысты:

+#PROTECT_PTR(pos, ptr) анықтау \
+ ((__түрінің (ptr)) ((((өлшем_t) pos) >> 12) ^ ((өлшем_т) птр)))

+#REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr) анықтау

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

Әдіс Fast-Bins және TCache сияқты жеке байланыстырылған тізімдерді қорғау үшін ASLR мекенжайын рандомизациялау механизмінен (mmap_base) кездейсоқ деректерді пайдаланады. Кездейсоқ деректерді тізімдегі келесі элементке көрсеткішке қолданбас бұрын, ол масканы түрлендіруді және бет шекарасын туралауды тексеруді орындайды. Көрсеткіш "(L >> PAGE_SHIFT) XOR (P)" операциясының нәтижесімен ауыстырылады, мұнда P - көрсеткіш мәні және L - меңзер сақталатын жад орны.

Бақылау пункті осалдықтарды пайдалануды қиындата отырып, Safe-Linking қорғау әдісін ұсынды

Жүйеде пайдаланған кезде ASLR (Мекенжай кеңістігінің орналасуын рандомизациялау): үйінді мекенжайы бар L биттерінің бөлігі P кодтау үшін кілт ретінде пайдаланылатын кездейсоқ мәндерді қамтиды (4096 байт беттер үшін 12 биттік жылжу арқылы шығарылған). Бұл манипуляция эксплуатацияда көрсеткішті түсіру қаупін азайтады, себебі көрсеткіш бастапқы түрінде сақталмайды және оны ауыстыру үйме орналасуын білуді қажет етеді. Сонымен қатар, патч коды шабуылдаушыға көрсеткішті теңестірілмеген мәнмен ауыстыруға жол бермейтін және тураланған биттердің санын білуді талап ететін қосымша блокты теңестіруді тексеруді қамтиды. 64 биттік жүйелерде бұл туралауды ескермейтін 16 шабуыл әрекетінің 15-ін қосымша блоктайды.

Бұл әдіс көрсеткішті ішінара қайта анықтауды (төмен ретті байттарды өзгерту), толық көрсеткішті қайта жазуды (шабуылдаушы кодына қайта бағыттау) және реттелмеген мекенжайдағы тізім орнын өзгертуді пайдаланатын шабуылдардан қорғауда тиімді. Мысал ретінде, malloc жүйесінде Safe-Linking пайдалану жақында ғана пайдалануды блоктайтыны көрсетілген анықталды сол осалдықты зерттеушілер CVE-2020-6007 Philips Hue Bridge смарт жарықтандыру жүйесіндегі буфердің толып кетуі құрылғыны басқаруға мүмкіндік берді.

Ақпарат көзі: opennet.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster