Суть инновации
Теневые стеки (Shadow Stacks) — это функция процессоров Intel (начиная с Tiger Lake) и AMD (Zen 3 и новее), создающая параллельный, защищенный от записи стек для хранения адресов возврата. Если в пользовательском пространстве эта технология уже используется для защиты от ROP-атак, то в ядре Linux она отсутствовала. Новая серия патчей, опубликованная на LKML, пытается изменить это, предлагая Proof-of-Concept (PoC) реализацию.
Технические требования и ограничения
Текущая реализация требует поддержки архитектуры Flexible Return Event Delivery (FRED). Это означает, что на старте поддержка будет доступна только на процессорах Intel Panther Lake и новее, а также AMD Zen 6 и новее. Кроме того, автор патчей честно признает, что текущий код несовместим с рядом критических функций ядра.
Что не работает с Shadow Stacks
Внедрение теневых стеков вносит серьезные ограничения в текущую экосистему Linux. Следующая таблица демонстриет функции, которые на данный момент несовместимы с данной защитой:
| Категория | Несовместимые компоненты/функции |
|---|---|
| Защита от уязвимостей | Retpolines (митигация Spectre v2) |
| Отладка и трассировка | Function graph tracing, BPF trampolines |
| Виртуализация и загрузка | KVM, Xen PV, Kexec, EFI mixed mode |
Позиция разработчика
Дэйв Хансен называет теневые стеки «вероятно, самой важной защитой на уровне кремния, которую Linux пока не использует». Он открыто обсуждает с сообществом возможные пути слияния кода, предлагая компромиссы, такие как отключение поддержки eBPF или использование теневых стеков только при отключенных митигациях (mitigation=off). Сам код он характеризует как «полностью написанный на вайбе кучу дерьма», что подчеркивает экспериментальный характер работы.
Почему это важно
Внедрение аппаратных теневых стеков в ядро кардинально повысит безопасность Linux-систем, закрывая класс уязвимостей, связанных с переполнением стека и манипуляцией потоком выполнения. Однако до массового внедрения потребуется значительная работа по адаптации виртуализации, eBPF и системных митигаций.
Источник: Phoronix ↗
