This paper presents a systematic solution to the persistent problem of return-into type attacks. A large class of security mechanisms has been defeated by those attacks. While some security mechanisms are concerned with preventing return-into type attacks, they, however, are not complete against return-into type attacks or occur the considerable performance decline. We describe the selective checking of shared library calls, called SCC. The SCC dynamically relocates a program’s Global Offset Table (GOT) and checks whether the accesses via Procedure Linkage Table (PLT) are legal. The SCC is implemented by modifying only the Linux dynamic loader, hence it is transparent to applications and easily deployable. In experiment results, we show that the SCC is effective in defeating against return-into type attacks and is the mechanism with the low start-up and runtime overhead.
이 논문은 끊임없는 문제가 되고 있는 return-into 형태의 공격들을 대처하기 위한 시스템적인 해결책을 제시한다. 많은 종류의 보안 메커니즘이 아직 그러한 공격에 제대로 대처하지 못하고 있다. 몇 종류의 메커니즘들이 return-into 형태의 공격들을 막는 방법과 관련이 있지만, return-into 형태의 공격들에 대해 완전한 대처를 못하거나 상당한 성능 감소를 발생시킨다. 우리는 선택적 공유 라이브러리 호출 검사 (SCC)를 제안한다. SCC는 동적으로 프로그램의 GOT를 재배치하고 PLT로의 액세스가 정상적인지를 체크한다. SCC는 리눅스 동적 로더만을 수정하도록 구현되므로, 애플리케이션을 수정할 필요가 없고 쉽게 배포할 수가 있다. 실험 결과들로부터, SCC가 return-into 형태의 공격들을 방어하는데 효과적이며, 낮은 초기화 오버헤드와 런타임 오버헤드를 갖는 메커니즘이라는 것을 보여준다.