27.09.2020

Уязвимость в реализации функции memcpy для ARMv7 из состава Glibc


Исследователи безопасности из компании Cisco раскрыли детали уязвимости (CVE-2020-6096) в реализации предоставляемой в Glibc функции memcpy() для 32-разрядной платформы ARMv7. Проблема вызвана некорректной обработкой отрицательных значений параметра, определяющего размер копируемой области. Вызов memcpy() на системах ARMv7 с отрицательным размером приводит к некорректному сравнению значений и записи в области вне границ указанного буфера из-за использования ассемблерных оптимизаций, манипулирующих знаковыми 32-разрядными целыми числами.

Уязвимость может быть эксплуатирована для выполнения кода в ситуации, когда атакующий может организовать формирование отрицательного значения переменной с размером (например, при передаче более 4 ГБ данных). Функция memcpy() активно применяется в приложениях, а процессоры ARMv7 распространены в автомобильных системах, мобильных, промышленных и встраиваемых устройствах, которые потенциально могут стать объектами атак с использованием Bluetooth, HD Radio/DAB, USB, CAN bus, Wi-Fi и других внешних источников данных.

В качестве примера атаки приводится создание эксплоита для встроенного в автомобильные информационные системы http-севрера, доступного через автомобильную Wi-Fi сеть. Посторонний атакующий может эксплуатировать уязвимость в memcpy в данном сервере через передачу GET-запроса очень большого размера и получить контроль за системой.

Исправление пока доступно в виде патча, который войдёт в состав августовском обновлении Glibc 2.32. Исправление сводится к замене использования ассемблерных инструкций, оперирующих знаковыми операндами (bge и blt), на беззнаковые аналоги (blo и bhs). Проблема пока не устранена в Debian 9 и 10 (в Debian 8 не проявляется), Fedora, OpenWRT и Ubuntu. RHEL и SUSE проблема не затрагивает, так как они не поддерживают 32-разрядные системы ARMv7.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53003

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