Уязвимость в GCC, позволяющая обойти защиту от переполнения стека
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В наборе компиляторов GCC выявлена уязвимость (CVE-2023-4039), позволяющая обойти режим "-fstack-protector", обеспечивающий защиту от атак, направленных на переполнение стека. Уязвимость проявляется только для приложений, собранных для архитектуры AArch64 и использующих динамическое выделение памяти для переменных. Проблема позволяет атакующему эксплуатировать уязвимости, приводящие к переполнению буфера при работе с динамически выделяемыми структурами, несмотря на включение защиты.
Например, защиту можно обойти при выделения памяти при помощи функции alloca() или использовании в коде массивов переменной длины (VLA, Variable-Length Arrays), предоставляющих возможность указания переменной в качестве размера при создании массива ("void foo(int n){ int m[n];"). Уязвимость не затрагивает ядро Linux, так как использование в коде ядра массивов переменной длины было прекращено в выпуске 4.20 (2018 год).
Защита "-fstack-protector" основана на добавлении в стек после указателей и объектов канареечных меток - случайных последовательностей, неизменность которых проверяется. В случае переполнения буфера в процессе эксплуатации уязвимости канареечная метка оказывается перезаписана другими данными, что приводит к срабатыванию последующей проверки неизменности метки и инициированию аварийного завершения приложения. Суть уязвимости в том, что динамически выделяемые локальные переменные размещаются на системах AArch64 в памяти не до, а после канареечной метки и переполнение динамических переменных не приводит к повреждению метки, т.е. переполнение остаётся необнаруженным.
===========
Источник:
OpenNet.RU
===========
Похожие новости:
- Для GCC подготовлены патчи для сборки универсальных исполняемых файлов
- Проект GCC принял кодекс поведения разработчиков
- Релиз набора компиляторов GCC 13
- Проект по написанию виртуальной машины на русифицированном языке Си
- Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си
- Выпуск системной библиотеки Glibc 2.37
- В состав GCC включена поддержка языка программирования Modula-2
- Фронтэнд для языка Rust доведён до готовности для интеграции в GCC 13
- АНБ рекомендует переходить на языки программирования, безопасно работающие с памятью
- Выпуск языка программирования Rust 1.64
Теги для поиска: #_gcc
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 18:49
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В наборе компиляторов GCC выявлена уязвимость (CVE-2023-4039), позволяющая обойти режим "-fstack-protector", обеспечивающий защиту от атак, направленных на переполнение стека. Уязвимость проявляется только для приложений, собранных для архитектуры AArch64 и использующих динамическое выделение памяти для переменных. Проблема позволяет атакующему эксплуатировать уязвимости, приводящие к переполнению буфера при работе с динамически выделяемыми структурами, несмотря на включение защиты. Например, защиту можно обойти при выделения памяти при помощи функции alloca() или использовании в коде массивов переменной длины (VLA, Variable-Length Arrays), предоставляющих возможность указания переменной в качестве размера при создании массива ("void foo(int n){ int m[n];"). Уязвимость не затрагивает ядро Linux, так как использование в коде ядра массивов переменной длины было прекращено в выпуске 4.20 (2018 год). Защита "-fstack-protector" основана на добавлении в стек после указателей и объектов канареечных меток - случайных последовательностей, неизменность которых проверяется. В случае переполнения буфера в процессе эксплуатации уязвимости канареечная метка оказывается перезаписана другими данными, что приводит к срабатыванию последующей проверки неизменности метки и инициированию аварийного завершения приложения. Суть уязвимости в том, что динамически выделяемые локальные переменные размещаются на системах AArch64 в памяти не до, а после канареечной метки и переполнение динамических переменных не приводит к повреждению метки, т.е. переполнение остаётся необнаруженным. =========== Источник: OpenNet.RU ===========
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 18:49
Часовой пояс: UTC + 5