Glibc-dən ARMv7 üçün memcpy funksiyasının həyata keçirilməsində kritik zəiflik

Cisco Təhlükəsizlik Tədqiqatçıları üstü açılmışdır detallar zəifliklər (CVE-2020-6096) 32 bitlik ARMv7 platforması üçün Glibc tərəfindən təmin edilən memcpy() funksiyasının həyata keçirilməsində. Problem, imzalanmış 32 bitlik tam ədədləri manipulyasiya edən montaj optimallaşdırmalarının istifadəsi səbəbindən kopyalanan sahənin ölçüsünü təyin edən parametrin mənfi dəyərlərinin düzgün idarə edilməməsi ilə əlaqədardır. Mənfi ölçülü ARMv7 sistemlərində memcpy()-ə zəng etmək, dəyərlərin səhv müqayisəsi ilə nəticələnir və göstərilən buferin hüdudlarından kənarda bir sahədə yazır.

Zəiflikdən, təcavüzkarın kopyalanan məlumatın ölçüsünün ötürüldüyü dəyişənin mənfi dəyərinin formalaşmasını təşkil edə bildiyi bir vəziyyətdə kodu icra etmək üçün istifadə edilə bilər (məsələn, 2 GB-dan çox məlumat ötürüldükdə mənfi olacaq. data, lakin hücum zamanı, bufer məhdudiyyətlərindən kənara çıxmaq üçün ən azı 4GB köçürməlisiniz). Memcpy() funksiyası tətbiqlərdə geniş istifadə olunur və ARMv7 prosessorları Bluetooth, HD Radio/DAB, USB, CAN avtobusu, Wi-Fi Fi və digər xarici məlumat mənbələri (məsələn, ölçü məhdudiyyəti olmadan daxilolma məlumatlarını qəbul edən şəbəkə üzərindən əlçatan olan xidmətlər və proqramlar hücuma məruz qala bilər).

Nümunə olaraq, avtomobil Wi-Fi şəbəkəsi vasitəsilə əldə edilə bilən avtomobil informasiya sistemlərində quraşdırılmış HTTP serverinə hücum etmək üçün işləyən istismarın yaradılmasıdır. Xarici təcavüzkar çox böyük GET sorğusu göndərməklə bu serverdəki memcpy zəifliyindən istifadə edə və sistemə kök girişi əldə edə bilər.

Glibc-dən ARMv7 üçün memcpy funksiyasının həyata keçirilməsində kritik zəiflik

32-bit x86 sistemlərində problem görünmür, çünki bu arxitektura üçün memcpy tətbiqi ölçü dəyişənini size_t tipli işarəsiz tam dəyər kimi düzgün şərh edir (montaj dilində həyata keçirilməsi ARMv7 üçün size_t əvəzinə işarələnmiş tam ədəd kimi qəbul edilir). Düzəliş hal-hazırda olaraq mövcuddur yamaq, Avqust Glibc 2.32 yeniləməsinə daxil ediləcək.
Düzəliş, imzalanmış operandlarda (bge və blt) işləyən montaj təlimatlarının istifadəsini imzasız analoqlarla (blo və bhs) əvəz etməkdən ibarətdir.

Problem hələ də həllini tapmayıb Debian 9 və 10 (Debian 8-də görünmür), Fedora, Ubuntu, OpenEmbedded, Tizen (glibc tərəfindən istifadə olunur). RHEL и SUSE 32 bitlik ARMv7 sistemlərini dəstəkləmədikləri üçün məsələyə təsir göstərmir. Android zəiflikdən təsirlənmir, çünki o, öz libc (Bionic) tətbiqindən istifadə edir. IN OpenWRT Varsayılan olaraq, əksər quruluşlar Musl-dan istifadə edir, lakin glibc də repozitoriyada mövcuddur.

Mənbə: opennet.ru

Добавить комментарий