События

Уязвимость Stack Clash позволяет повысить права на Linux и других свободных ОС

Уязвимость Stack Clash позволяет повысить права на Linux и других свободных ОС

Эксперты компании Qualys описали уязвимость в блоке управления памятью ряда свободных операционных систем. Проблема, получившая название Stack Clash, затрагивает Linux, OpenBSD, NetBSD, FreeBSD и Solaris. Она может быть проэксплуатирована с целью повышения привилегий на системе до уровня суперпользователя и выполнения произвольного кода.

Уязвимость была обнаружена в ходе изучения возможности эксплуатации проблем, приводящих к пересечению содержимого стека и кучи. При смежном размещении стека и кучи не исключены ситуации, когда содержимое переполненной кучи может оказаться в области стека, или стек, наоборот, может переписать область кучи, если куча растет в сторону увеличения, а стек - в сторону уменьшения,

Для предотвращения подобных ситуаций в Linux и других операционных системах используется защитная техника stack guard-page, заключающаяся в подстановке граничных страниц памяти, обращение к которым приводит к генерации исключения (page-fault). Данная защита была представлена после того, как в 2005 и 2010 годах был выявлен ряд уязвимостей в блоке управления памятью.

В ходе исследования эксперты выявили множественные уязвимости в реализации «сторожевой страницы» (guard-page), основной из которых является CVE-2017-1000364, и выделили три метода атаки:

- Столкновение стека с другой областью памяти: выделение памяти производится до тех пор, пока стек не достигнет другой области памяти или память не достигнет стека;

- «Прыжок» через сторожевую страницу: указатель стека перемещается из стека в другую область памяти не затрагивая страницу защиты памяти;

- Разбиение стека или другой области памяти: производится перезапись стека содержимым другой области памяти либо другой области памяти содержимым стека.

Для демонстрации уязвимостей исследователи подготовили 15 рабочих PoC-эксплоитов, позволяющих повысить привилегии на системе посредством различных приложений в Debian, CenOS, Fedora, Ubuntu, OpenBSD, NetBSD, FreeBSD, Solaris. Эксплоиты были протестированы на платформах под управлением процессоров с архитектурой х86-64.

Большинство разработчиков затронутых дистрибутивов уже представили обновления, исправляющие вышеуказанную проблему. В качестве временной меры по предотвращению эксплуатации уязвимости предлагается пересобрать и переустановить все приложения и динамические библиотеки в пространстве пользователя с использованием функции -fstack-check в GCC.

Стек - область оперативной памяти, которая создается для каждого потока. Он работает в порядке LIFO (Last In, First Out), то есть последний добавленный в стек фрагмент памяти будет первым в очереди на вывод из стека. Каждый раз, когда функция объявляет новую переменную, она добавляется в стек, а когда эта переменная пропадает из области видимости (например, когда функция заканчивается), она автоматически удаляется из стека.

Куча - хранилище памяти, также расположенное в ОЗУ, которое допускает динамическое выделение памяти и не работает по принципу стека.

Источник

Автор: Сергей Куприянов
20.06.2017 (09:06)
Пройди тест и узнай об этом!
Информер новостей
Расширение для Google Chrome

Все права защищены © 2010-2024

"alterprogs.com" - технологии будущего

Контакты  | Карта сайта

Использование любых материалов, размещенных на сайте, разрешается при условии ссылки на alterprogs.com. Для интернет-изданий - обязательна прямая открытая для поисковых систем гиперссылка. Ссылка должна быть размещена в независимости от полного либо частичного использования материалов. Материалы в рубрике "Новости партнеров" публикуются на правах рекламы.