CET 준수 콜스택 스푸핑: 스레드 풀 및 열거 콜백 트램폴리닝 활용 (Rust PoC)
이 글은 Intel CET이 활성화된 하드웨어에서 CET 호환 콜스택 스푸핑을 엔드투엔드로 작동시키는 데 비합리적으로 많은 시간을 보낸 후에 작성되었습니다.
이 기법은 세 가지 기본 요소를 결합합니다: 깨끗한 스택 기반을 위한 스레드 풀 실행, 실제 서명된 중간 스택 프레임을 위한 열거 콜백 트램폴리닝, 그리고 간접 시스템 호출.
실질적인 기여는 CET 호환 메커니즘입니다: 언와인드 메타데이터를 건드리지 않고 jmp 기반 컨텍스트 스위치와 RDSSPQ/INCSSPQ를 통한 직접 섀도우 스택 포인터 조정. BYOUD와는 다른 접근 방식입니다.
Rust와 인라인 어셈블리로 구현되었습니다. /u/_MrTiz가 제출했습니다.