В течение многих лет Intel работает над исправлениями для Linux для поддержки своей технологии управления потоком управления (CET) с непрямым отслеживанием ветвей и поддержкой теневого стека. Он работал в течение многих лет и подвергался множеству изменений, а теперь они выбирают новый маршрут и фокусируются только на функциональности пользовательского пространства Shadow Stack.
Функциональность теневого стека ориентирована на защиту от атак возвратно-ориентированного программирования (ROP). Теневой стек хранит копию каждого CALL и при возврате (RET) проверяет адрес возврата, хранящийся в обычном стеке, чтобы убедиться, что он соответствует содержимому теневого стека, в противном случае будет генерироваться ошибка.
Поддержка Intel Shadow Stack снова в разработке для Linux.
Intel поддержала возврат CET к системам Tiger Lake с непрямым отслеживанием ветвей как часть этого для отражения атак JOP/COP. Несмотря на то, что над исправлениями IBT Linux работали, в будущем Intel сосредоточилась только на поддержке пользовательского пространства Shadow Stack, чтобы перейти к основному ядру Linux. Это план, по крайней мере, на ближайшую перспективу, поскольку исправления IBT теперь отходят на второй план.
Рик Эджкомб из Intel отметил в новой серии исправлений в воскресенье:
Это небольшая перезагрузка серии CET пользовательского пространства. Я возьму на себя сериал от Ю-чэн. По некоторым внутренним рекомендациям я сбросил номер версии и назвал ее новой серией. Надеюсь, это не вызовет путаницы.
На данный момент новый план состоит в том, чтобы воспитать поддержку Shadow Stack только в пользовательском пространстве. IBT может последовать позже, но сейчас я сосредоточусь исключительно на наиболее востребованной и широко доступной (теперь с функцией на процессорах AMD) части CET.
Итак, теперь мы на набор из 35 патчей, предлагаемых для теневых стеков для пользовательское пространство. Это не только направлено на повышение безопасности с помощью современных процессоров x86_64, но Google также рассматривает возможность использования теневых стеков для улучшения трассировки с большей производительностью и надежностью.
В новой серии исправлений появился новый системный вызов для выделения теневого стека, внесены изменения, гарантирующие, что старые двоичные файлы не сломаются, и многое другое. Хотя новейшие процессоры AMD Ryzen серии 5000 также могут поддерживать теневые стеки, текущие исправления специально ограничены процессорами Intel. План состоит в том, чтобы разрешить ЦП AMD поддержку теневых стеков пользовательского пространства после того, как кто-то протестирует их — надеюсь, это произойдет до объединения исправлений.
Посмотрим, будет ли эта новая серия Shadow Stacks for User-Space подхвачена быстрее, чем предыдущая серия исправлений CET, которая застопорилась.