Соответствующее CET спуфинг ст... Заметка

Соответствующее CET спуфинг стека вызовов через пул потоков и трамплининг обратных вызовов Enum (PoC на Rust)

Я написал это после того, как потратил неоправданно много времени на то, чтобы заставить спуфинг стека вызовов, соответствующий CET, работать от начала до конца на оборудовании с включенным Intel CET. Техника сочетает в себе три примитива: выполнение пула потоков для чистой базы стека, трамплининг обратных вызовов перечисления для реального подписанного кадра стека среднего уровня и косвенные системные вызовы. Фактический вклад — это механизм соответствия CET: переключение контекста на основе jmp в сочетании с прямой сверкой указателя теневого стека через RDSSPQ/INCSSPQ, без изменения метаданных размотки. Отличный от BYOUD подход. Реализовано на Rust с использованием встраиваемого ассемблера. Отправлено пользователем /u/_MrTiz