CET & Shadow Stack
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
CET는 Return-Oriented Programming (ROP) 및 **Jump-Oriented Programming (JOP)**와 같은 일반적인 제어 흐름 탈취 공격을 저지하기 위해 설계된 하드웨어 수준의 보안 기능입니다. 이러한 유형의 공격은 프로그램의 실행 흐름을 조작하여 악성 코드를 실행하거나 무해한 코드 조각을 연결하여 악의적인 작업을 수행합니다.
CET는 두 가지 주요 기능을 도입합니다: 간접 분기 추적 (IBT) 및 섀도우 스택.
IBT는 간접 점프 및 호출이 유효한 대상으로 이루어지도록 보장하며, 이는 간접 분기의 합법적인 목적지로 명시적으로 표시됩니다. 이는 유효한 대상을 표시하는 새로운 명령어 집합을 사용하여 달성되며, 공격자가 제어 흐름을 임의의 위치로 전환하는 것을 방지합니다.
섀도우 스택은 반환 주소의 무결성을 제공하는 메커니즘입니다. 이는 일반 호출 스택과 분리된 안전하고 숨겨진 반환 주소의 복사본을 유지합니다. 함수가 반환될 때, 반환 주소는 섀도우 스택과 비교하여 검증되며, 공격자가 스택의 반환 주소를 덮어쓰는 것을 방지합니다.
섀도우 스택은 반환 주소를 저장하기 위해 전용으로 사용되는 스택입니다. 이는 일반 스택과 함께 작동하지만, 정상적인 프로그램 실행으로부터 보호되고 숨겨져 있어 공격자가 조작하기 어렵습니다. 섀도우 스택의 주요 목표는 기존 스택의 반환 주소에 대한 수정 사항이 사용되기 전에 감지되도록 하여 ROP 공격을 효과적으로 완화하는 것입니다.
ROP 및 JOP 공격은 스택에서 포인터나 반환 주소를 덮어쓸 수 있는 취약점을 이용하여 애플리케이션의 제어 흐름을 탈취하는 능력에 의존합니다. 공격자는 기존 코드 가젯이나 반환 지향 프로그래밍 가젯의 시퀀스로 흐름을 유도하여 임의의 코드를 실행할 수 있습니다.
CET의 IBT 기능은 간접 분기가 명시적으로 유효한 대상으로 표시된 주소로만 점프할 수 있도록 보장하여 이러한 공격을 상당히 어렵게 만듭니다. 이는 공격자가 바이너리 전반에 퍼져 있는 임의의 가젯을 실행하는 것을 불가능하게 만듭니다.
반면에 섀도우 스택은 공격자가 정상 스택에서 반환 주소를 덮어쓸 수 있더라도, 함수에서 반환할 때 손상된 주소와 섀도우 스택에 저장된 안전한 복사본을 비교할 때 불일치가 감지됩니다. 주소가 일치하지 않으면 프로그램이 종료되거나 다른 보안 조치를 취하여 공격이 성공하지 못하도록 합니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)