메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Control flow integrity

noriwiki
Ahn9807 (토론 | 기여)님의 2025년 1월 12일 (일) 05:42 판 (새 문서: 분류: 시스템 보안 == 개요 == Control flow integrity (CFI)는 컴퓨터 보안에서 flow of execution즉 코드의 실행에 관한 보안을 지칭한다. == Background == Control flow란 컴퓨터 프로그램에서 Decision을 나타낸다. 이러한 Control flow는 Direct, 즉 Address를 직접 참고 하여 실행 될 수 있거나, In-direct, 즉 Address에 대한 간접 참조로 접근하는 두 모델을 가르킨다. 대부분의 함수 콜에서 프로...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

Control flow integrity (CFI)는 컴퓨터 보안에서 flow of execution즉 코드의 실행에 관한 보안을 지칭한다.

Background

Control flow란 컴퓨터 프로그램에서 Decision을 나타낸다. 이러한 Control flow는 Direct, 즉 Address를 직접 참고 하여 실행 될 수 있거나, In-direct, 즉 Address에 대한 간접 참조로 접근하는 두 모델을 가르킨다. 대부분의 함수 콜에서 프로그램은 Direct call을 수행하고 Stack에 Return하는 함수의 콜 주소를 참조하여 다시 원래의 함수로 돌아온다. 그러나, 이 상황에서 Atacker는 프로그램 코드의 임의의 부분으로 점프할 수 있는 Return함수의 콜 스택을 변조를 시도할 수 있다. 이를 통하여 Attacker는 임의의 함수를 실행, 메모리를 탈취하거나, 권한없는 함수를 실행시킬 수 도 있다. 자세한 내용은 ROP참고.

주요 개념

Control flow graph (CFG)
CFI는 프로그램의 정상적인 실행 흐름을 나타내는 제어 흐름 그래프(CFG)를 생성하여, 프로그램이 실행 중에 이 CFG를 벗어나지 않도록 보장한다.
Verification
프로그램이 실행 중 특정 지점에서 수행할 수 있는 제어 흐름(예: 함수 호출, 반환)이 CFG에 정의된 범위 내에 있는지 확인한다.
Indirect Branch Protection
함수 포인터, 가상 함수 테이블(vtable), 반환 주소와 같이 공격자가 조작할 가능성이 있는 간접 제어 흐름을 보호한다.

이상, code-pointer separation, code-pointer integrity, stack canaries, shadow stacks, vtable pointer verification등등 다양한 기법들이 존재한다.