Abstract
ASR is an excellent program security technique that protects various data memory areas without run-time overhead. ASR hides the addresses of variables from attackers by reordering variables within a data memory area; however, it can be broken by brute force attacks because of a limited data memory space. In this paper, we propose Multiple ASR to overcome the limitation of previous ASR approaches. Multiple ASR separates a data memory area into original and duplicated areas, and compares variables in each memory area to detect an attack. In original and duplicated data memory areas variables are arranged in the opposite order. This makes it impossible to overwrite the same variables in the different data areas in a single attack. Although programs with Multiple ASR show a relatively high run-time overhead due to duplicated execution, programs with many I/O operations such as web servers, a favorite attack target, show 40~50% overhead. In this paper we develop and test a tool that transforms a program into one with Multiple ASR applied.
Address Space Randomization(ASR)은 성능 부하가 없고 광범위한 데이터 메모리 영역의 보호가 가능한 우수한 방어 기법이다. ASR은 사용 가능한 데이터 메모리 영역 내에서 변수를 재배치 함으로써 공격자에게 변수의 주소를 숨기는데, 데이터 메모리 영역의 크기가 한정되어서 무차별 공격에 취약한 단점이 있다. 본 논문은 기존 ASR의 단점을 제거하기 위한 다중 ASR 기법을 제시한다. 다중 ASR 기법은 데이터 메모리 영역을 원본 및 복사 영역으로 나누고 각 메모리 영역의 변수 값을 비교함으로써 공격을 탐지하고 방어한다. 다중 ASR에서 각 데이터 메모리 영역의 변수는 서로 다른 순서로 배치되므로 한 번의 공격을 통해 동시에 동일한 변수 값을 조작하는 것은 불가능하다. 다중 ASR이 적용된 프로그램은 중복 수행으로 인해 비교적 높은 성능 부하를 보이나, 실제 공격 대상이 되는 웹서버 등 I/O 처리가 많이 요구되는 프로그램의 경우 40%~50% 정도의 성능 부하를 보인다. 아울러 본 논문에서는 프로그램에 다중 ASR을 적용하기 위한 변환프로그램을 개발하였다.