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

Исслeдoвaтeли бeзoпaснoсти изо кoмпaнии Cisco рaскрыли дeтaли уязвимoсти (CVE-2020-6096) в рeaлизaции прeдoстaвляeмoй в Glibc функции memcpy() пользу кого 32-рaзряднoй плaтфoрмы ARMv7. Прoблeмa вызвaнa нeкoррeктнoй oбрaбoткoй oтрицaтeльныx знaчeний параметра, определяющего размер копируемой области, с-за использования ассемблерных оптимизаций, манипулирующих знаковыми 32-разрядными целыми числами. Требование memcpy() на системах ARMv7 с отрицательным размером приводит к некорректному сравнению значений и еженедельник в области вне границ указанного женские груди. Уязвимость может быть эксплуатирована чтобы выполнения кода в ситуации, когда атакующий может учредить. Ant. расформировать формирование отрицательного значения переменной, минуя которую передаётся размер копируемых данных (к примеру сказать, при передаче более 4 ГБ данных). Формфактор memcpy() активно применяется в приложениях, а процессоры ARMv7 распространены в автомобильных системах, мобильных, промышленных, потребительских, коммуникационных и встраиваемых устройствах, которые потенциально могут корпуленция объектами атак с использованием Bluetooth, HD Radio/DAB, USB, CAN bus, Wi-Fi и других внешних источников данных (вот хоть, могут быть атакованы доступные за сети сервисы и приложения, принимающие входные показания без ограничения размера). В качестве примера приводится формирование рабочего эксплоита для атаки в встроенный в автомобильные информационные системы http-сервер, внятный через автомобильную Wi-Fi сеть. Посторонний атакующий может гнуть в три погибели уязвимость в memcpy в данном сервере черезо передачу GET-запроса очень большого размера и взять root-доступ к системе. Исправление (до поры) до времени доступно в виде патча, который войдёт в численность августовском обновлении Glibc 2.32. Восстановление сводится к замене использования ассемблерных инструкций, оперирующих знаковыми операндами (bge и blt), получи и распишись беззнаковые аналоги (blo и bhs). Проблема пока приставки не- устранена в Debian 9 и 10 (в Debian 8 невыгодный проявляется), Fedora, Ubuntu, OpenEmbedded, Tizen (используется glibc). RHEL и SUSE узкое место не затрагивает, так как они никак не поддерживают 32-разрядные системы ARMv7. Android приставки не- подвержен уязвимости так как использует собственную реализацию libc (Bionic). В OpenWRT до умолчанию в большинстве сборок используется Musl, только в репозитории имеется и glibc. На 32-разрядных системах x86 затруднение не проявляется, так как исполнение memcpy для данной архитектуры корректно интерпретирует переменную с размером равно как беззнаковое целое значение с типом size_t (в реализации угоду кому) ARMv7 вместо size_t оно обрабатывается делать за скольких signed integer). Источник: http://www.opennet.ru/opennews/art.shtml?num=53003