В выпуске Fedora Linux 45, намеченном на осень 2026 года, на системах x86_64 планируют по умолчанию включить использование теневого стека (shadow stack) для блокирования работы эксплоитов, перезаписывающих адрес возврата функций в случае переполнения буфера в стеке. Защиту намерены активировать для всех приложений и библиотек, собранных при помощи компиляторов gcc (C, C++), clang (C, C++) и rustc (Rust). План пока не утверждён комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки Fedora Linux. Инициатором включения теневого стека в Fedora является Арджун Шанкар (Arjun Shankar) из компании Red Hat, сопровождающий пакеты с glibc в Fedora и RHEL.
Защита реализуется с использованием аппаратных возможностей процессоров и сводится к тому, что после передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном «теневом» стеке, который не может быть изменён напрямую. Перед выходом из функции адрес возврата извлекается из теневого стека и сверяется с адресом возврата из основного стека. Несовпадение адресов приводит к генерации исключения, блокирующего ситуации, когда эксплоиту удалось перезаписать адрес в основном стеке. Механизм теневого стека поддерживается начиная с 11 поколения процессоров Intel («Tiger Lake» и «Rocket Lake») и микроархитектуры Zen3 в процессорах AMD.
Источник: http://www.opennet.ru/opennews/art.shtml?num=65825
