Выявленная экспертами Cisco ошибка
приводит к считыванию содержимого стековой памяти в ядре Linux. Тем
самым появляется возможность обойти рандомизацию адресного пространства ядра,
одного из ключевых защитных механизмов системы.
В обход KASLR
В ядре Linux обнаружилась уязвимость, позволяющая обходить
один из ключевых защитных механизмов и считывать данные из ядра в некоторых
устройствах.
Баг с индексом CVE-2020-28588, выявленный в
функции /proc/pid/syscall, характерен для 32-битных устройств на базе
процессоров ARM
под управлением Linux. Проблема вызвана некорректной конверсией номерных значений при считывании
файла, указывается в материале Threatpost.
С помощью нескольких команд
злоумышленники могут заставить ядро Linux выдать 24 байта неинициализированной стековой
памяти, что позволит обойти защитный механизм KASLR — рандомизацию адресного пространства ядра.
Как утверждают эксперты Cisco, обнаружившие
уязвимость, атаку подобного рода невозможно определить удаленно. А в случае
успеха у злоумышленников появляется возможность эксплуатировать ряд других
уязвимостей ядра, если они не исправлены в атакованной системе.
Proc
представляет собой специальную псевдофайловую систему в Unix-подобных системах, которая используется для
динамического доступа к данным о системных процессах в ядре. Системная
информация представлена в ней в виде иерархической файлоподобной структуры. Зная
нужный идентификатор процесса, можно получить информацию о нем. Например, syscall — это файл в Linux, хранящий логи
системных вызовов со стороны ядра.
Злоумышленник может
эксплуатировать уязвимость, считывая данные из /proc/
сконфигурированным с CONFIG_HAVE_ARCH_TRACEHOOK, — говорится в публикации Cisco. — Этот файл выдает номер системного вызова и
регистры аргументов для системных вызовов, которые в данный момент исполняются
процессом. За этим следуют величины указателя стека и регистры счетчика
программ. Выдаются значения всех шести регистров аргументов, хотя большая часть
системных вызовов использует меньшее количество регистров».
Команды, позволяющие эксплуатировать уязвимость, выглядят как *# echo 0 > /proc/sys/kernel/randomize_va_space (# onlyneededforacleaneroutput), *$ while
true; do cat /proc/self/syscall; done | uniq (# waits for changes)и *$
while true; do free &>/dev/null; done (# triggers changes).
Обновляться подано
Эксперты Cisco впервые обнаружили
уязвимость на устройстве AzureSphere (версии 20.10), 32-битном устройстве на базе ARM и под управлением Linux. Баг присутствует во
всех версиях ядра, начиная с v5.1-rc4. Уязвимы также версии 5.4.66 and 5.9.8. Обновления уже
доступны, так что рекомендуется их установить как можно скорее.
«Уязвимости в ядре Linux находят довольно редко,
но, в любом случае, это программный код, который пишут, тестируют и
инспектируют люди, и от их ошибок никто не застрахован, — говорит Анастасия Мельникова, эксперт по
информационной безопасности компании SEC Consult Services. — В любом случае, фактором защищенности является
также количество специалистов, которые отслеживают возможные недочеты в ядре и
информируют об этом разработчиков. В этом отношении ядро Linux находится в самом выигрышном положении».
Ранее в 2021 г. эксперты Symantec обнародовали две
новые уязвимости в операционных системах на базе Linux, которые затрагивали некоторые подсистемы ядра
операционной системы и позволяли обходить защиту от аппаратной уязвимости Spectre. Эти баги получили
средние оценки по шкале угроз CVSS.
Перед этим, в марте были
устранены сразу пять похожих уязвимостей в виртуальных сокетах ядра Linux, которые выявил эксперт
по безопасности компании Positive Technologies Александр Попов. Этим уязвимостям была присвоена оценка 7,0 по
шкале CVSS.