Glibcден ARMv7 үчүн memcpy функциясын ишке ашырууда олуттуу аялуу

Cisco коопсуздук изилдөөчүлөрү ачылган маалымат алсыздыктар (CVE-2020-6096) 32 биттик ARMv7 платформасы үчүн Glibc тарабынан берилген memcpy() функциясын ишке ашырууда. Көйгөй көчүрүлгөн аймактын өлчөмүн аныктаган параметрдин терс маанилерин туура эмес иштетүүдөн келип чыккан, кол коюлган 32 биттик бүтүн сандарды манипуляциялоочу монтаждык оптималдаштырууну колдонуудан улам. Терс өлчөмү менен ARMv7 системаларында memcpy() чалуу, маанилердин туура эмес салыштырылышына алып келет жана көрсөтүлгөн буфердин чегинен тышкары аймакта жазат.

Чабуулчу көчүрүлгөн маалыматтардын көлөмү өткөрүлө турган өзгөрмөнүн терс маанисин түзүүнү уюштура турган кырдаалда кодду аткаруу үчүн аялуу пайдаланылышы мүмкүн (мисалы, 2 ГБ ашык файлды өткөрүп жатканда ал терс болуп калат. маалымат, бирок чабуул учурунда буфердик чектен чыгуу үчүн, сиз жок дегенде 4 ГБ өткөрүп беришиңиз керек). memcpy() функциясы тиркемелерде кеңири колдонулат, ал эми ARMv7 процессорлору Bluetooth, HD Radio/DAB, USB, CAN шинасы аркылуу чабуулдарга дуушар болушу мүмкүн болгон унаа системаларында, мобилдик, өнөр жай, керектөөчү, байланыш жана орнотулган түзмөктөрдө кеңири таралган. Wi-Fi жана башка тышкы маалымат булактары (мисалы, кирүүчү маалыматтарды өлчөмүн чектөөсүз кабыл алган тармак аркылуу жеткиликтүү кызматтар жана тиркемелер чабуулга дуушар болушу мүмкүн).

Мисал катары автоунаанын Wi-Fi тармагы аркылуу жеткиликтүү болгон автомобиль маалымат тутумдарына орнотулган HTTP серверине кол салуу үчүн жумушчу эксплойт түзүү саналат. Сырттан чабуулчу бул сервердеги memcpy кемчилигин өтө чоң GET өтүнүчүн жөнөтүп, системага тамыр мүмкүнчүлүгүн ала алат.

Glibcден ARMv7 үчүн memcpy функциясын ишке ашырууда олуттуу аялуу

32 биттик x86 системаларында көйгөй пайда болбойт, анткени бул архитектура үчүн memcpy ишке ашырылышы өлчөмү өзгөрмөсүн size_t түрүндөгү кол коюлбаган бүтүн сан катары туура чечмелейт (ассамблея тилинде ишке ашыруу ARMv7 үчүн size_t ордуна кол коюлган бүтүн сан катары каралат). Түзөтүү учурда жеткиликтүү жамаачы, ал август Glibc 2.32 жаңыртууга киргизилет.
Оңдоо кол коюлган операнддарда (bge жана blt) иштеген монтаждоо нускамаларынын колдонулушун кол коюлбаган аналогдор (blo жана bhs) менен алмаштырууга чейин жетет.

Маселе азырынча чечиле элек Debian 9 жана 10 (Debian 8де көрүнбөйт), Fedora, Ubuntu, OpenEmbedded, Tizen (glibc тарабынан колдонулат). RHEL и suse Алар 32 биттик ARMv7 тутумдарын колдоого албагандыктан маселеге таасир этпейт. Android алсыздыгынан таасир этпейт, анткени ал өзүнүн libc (Bionic) ишке ашыруусун колдонот. IN openwrt Демейки боюнча, көпчүлүк түзүмдөр Musl колдонушат, бирок glibc репозиторийде да бар.

Source: opennet.ru

Комментарий кошуу