осебпазирии интиқодӣ дар татбиқи функсияи memcpy барои ARMv7 аз Glibc

Муҳаққиқони амнияти Cisco пӯшонидашуда тафсилот осебпазирӣ (CVE-2020-6096) дар татбиқи функсияи memcpy() аз ҷониби Glibc пешниҳодшуда барои платформаи 32-битии ARMv7. Мушкилот аз коркарди нодурусти арзишҳои манфии параметр, ки андозаи майдони нусхабардориро муайян мекунад, аз сабаби истифодаи оптимизатсияи васлкунӣ, ки ададҳои имзошудаи 32-битро идора мекунанд, ба вуҷуд омадааст. Занг задан ба memcpy() дар системаҳои ARMv7 бо андозаи манфӣ боиси муқоисаи нодурусти арзишҳо мегардад ва дар майдони берун аз ҳудуди буфери муайяншуда менависад.

Аз осебпазирӣ барои иҷро кардани код дар вазъияте истифода бурдан мумкин аст, ки ҳамлакунанда метавонад ташаккули арзиши манфии тағирёбандаро ташкил кунад, ки тавассути он андозаи маълумоти нусхабардорӣ интиқол дода мешавад (масалан, ҳангоми интиқоли зиёда аз 2 ГБ он манфӣ мешавад. маълумот, аммо ҳангоми ҳамла, барои берун рафтан аз ҳудуди буферӣ, шумо бояд ҳадди аққал 4 ГБ интиқол диҳед). Функсияи memcpy () дар барномаҳо ба таври васеъ истифода мешавад ва протсессори ARMv7 дар системаҳои автомобилӣ, мобилӣ, саноатӣ, истеъмолӣ, алоқа ва дастгоҳҳои воридшуда маъмуланд, ки эҳтимолан мавриди ҳамлаҳо бо истифода аз Bluetooth, HD Radio/DAB, USB, CAN автобус, Wi-Fi ва дигар манбаъҳои додаҳои беруна (масалан, хидматҳо ва барномаҳое, ки тавассути шабака дастрасанд, ки маълумоти воридшударо бидуни маҳдудияти андоза қабул мекунанд, метавонанд ҳамла кунанд).

Намунаи эҷоди эксплоити корӣ барои ҳамла ба сервери HTTP дар системаҳои иттилоотии автомобилӣ, ки тавассути шабакаи автомобилии Wi-Fi дастрас аст, мебошад. Ҳамлагари беруна метавонад осебпазирии memcpy дар ин серверро тавассути фиристодани дархости хеле калони GET истифода барад ва дастрасии решаро ба система ба даст орад.

осебпазирии интиқодӣ дар татбиқи функсияи memcpy барои ARMv7 аз Glibc

Дар системаҳои 32-битии x86, мушкилот ба миён намеояд, зеро татбиқи memcpy барои ин меъморӣ тағирёбандаи андозаро ҳамчун арзиши бутуни аломати аломати навъи size_t (бо забони ассемблер) дуруст шарҳ медиҳад. амалй гардондани барои ARMv7 он ҳамчун бутуни имзошуда ба ҷои size_t муносибат мекунад). Ислоҳ дар айни замон ҳамчун дастрас аст ямоқи, ки ба навсозии августи Glibc 2.32 дохил карда мешавад.
Ислоҳ барои иваз кардани истифодаи дастурҳои васлкунӣ, ки дар операндҳои имзошуда (bge ва blt) амал мекунанд, бо ҳамтоёни имзонашуда (blo ва bhs) анҷом дода мешавад.

Проблема хануз хал нашудааст Debian 9 ва 10 (дар Debian 8 дида намешавад), Федора, Ubuntu, OpenEmbedded, Tizen (аз ҷониби glibc истифода мешавад). RHEL и Сусус Ин масъала таъсир намерасонад, зеро онҳо системаҳои 32-бита ARMv7-ро дастгирӣ намекунанд. Ба Android осебпазирӣ таъсир намерасонад, зеро он татбиқи libc (Bionic)-и худро истифода мебарад. ДАР openwrt Бо нобаёнӣ, аксари сохтмонҳо Musl-ро истифода мебаранд, аммо glibc низ дар анбор дастрас аст.

Манбаъ: opennet.ru

Илова Эзоҳ