스택 공격 탐지와 방어를 위한 반환 주소 이중 인코딩

Dual-Encoding of Return Addresses for Detection and Defense against Stack Attacks

초록

프로그램 카운터 인코딩은 제어 데이터의 대부분을 차지하는 코드 포인터를 암호화 하는 프로그램 자기보호의 방법이다. 이 논문은 함수 반환 주소에 대한 프로그램 카운터 인코딩의 방어력과 공격 탐지 능력을 개선하기 위한 방법으로서 반환 주소 이중 인코딩을 제시한다. 반환 주소 이중 인코딩은 반환 주소를 암호화 할 때 독립적인 2개의 암호화 키를 사용하여 2벌의 암호화 된 반환 주소를 만들어 보관한다. 64 비트의 암호화 키를 사용하여 인코딩 한 것과 같은 효과를 가져와 반환 주소에 대한 공격 성공 확률을 1/2^(64)로 낮추며, 2벌의 암호화된 주소를 디코딩하여 비교함으로써 공격 여부를 정확히 판정할 수 있다. x86 마이크로프로세서를 타겟으로 하는 GNU C 컴파일러를 수정하여 반환 주소 이중 인코딩을 구현하였고, 이를 사용한 모의 공격과 성능 실험을 실시하였다. GCC에 내장된 ProPolice와 비교할 때 ProPolice가 탐지하지 못하는 2가지 공격 유형을 추가로 탐지하였고, 8.62% 수준의 실행 시간 과부하 수준을 보였다. 이중 인코딩은 반환 주소뿐만 아니라 모든 코드 포인터에 대해 적용이 가능하며, 일부 데이터 포인터도 적당한 성능 과부하로 적용할 수 있을 것으로 예상된다.

키워드

program counter encoding; dual-encoding; program self-protection; program attack detection; stack attack; 프로그램 카운터 인코딩; 이중 인코딩; 프로그램 자기 보호; 프로그램 공격 탐지; 스택 공격
제목
스택 공격 탐지와 방어를 위한 반환 주소 이중 인코딩
제목 (타언어)
Dual-Encoding of Return Addresses for Detection and Defense against Stack Attacks
저자
김경태; 표창우; 김선일; 이경호
발행일
2011
저널명
정보과학회 컴퓨팅의 실제 논문지
권
17
호
3
페이지
159 ~ 164