버퍼 오버플로우 공격은 Code Red나 SQL Stammer와 같은 최근의 웜의 발발에서 알 수 있는 것과 같이 가장 강력하고 치명적인 형태의 악성 코드 공격이다. 버퍼 오버플로우 공격은 일반적으로 시스템에 비정상적인 증상들을 유발한다. 버퍼 오버플로우 공격에 대한 기존의 대처방안들은 심각한 성능 저하를 초래하거나, 다양한 형태의 버퍼 오버플로우 공격을 모두 방지하지 못했으며, 특히 일반적으로 사용되는 소프트웨어 패치를 사용하는 방법은 버퍼 오버플로우 입의 확산을 효과적으로 차단하지 못한다. 이러한 문제를 해결하고자 본 논문에서는 적은 하드웨어 비용과 성능 저하만으로 거의 모든 악성 코드 공격을 탐지하고 피해를 복구할 수 있도록 하는 복귀 주소 포인터 스택 (Return Address Pointer Stack: RAPS) 과 변조 복구 버퍼 (Corruption Recovery Buffer: CRB)라는 마이크로 구조 기술들을 제안한다. 버퍼 오버플로우 공격으로 인한 비정상적인 증상들은 RAPS를 통해 프로세스 실행 중 메모리 참조의 안전성을 점검함으로써 쉽게 탐지될 수 있으며, 이는 그러한 공격들에 의한 잠재적인 데이타 흑은 제어 변조를 피하는 것을 가능하게 한다. 안전 점검 장치의 사용으로 인한 하드웨어 비용과 성능 손실은 거의 발생하지 않는다. 또한, RAPS에 비해 더욱 강도 높은 방법인 CRB를 이용하여 보안 수준을 더욱 향상시킬 수 있다. 변조 복구 버퍼는 안전 점검 장치와 결합되어 버퍼 오버플로우 공격에 의해 발생했을 가능성이 있는 의심스러운 쓰기들을 저장함으로써 공격이 탐지되는 경우 메모리의 상태를 공격 이전의 상태로 복구시킬 수 있다. SPEC CPU2000 벤치마크 중에서 선정한 프로그램들에 대해 상세한 시뮬레이션을 수행함으로써, 제안된 마이크로구조 기술들의 효율성을 평가할 수 있다. 실험 결과는 안전 점검 장치를 사용하여 공격으로 인한 복귀 주소 변조로부터 스택 영역을 방어하는 것이 시스템의 이상 증상들을 상당 부분 감소시킬 수 있다는 것을 보여준다. 또한, 1KB 크기의 작은 변조 복구 버퍼를 안전 점검 장치와 함께 사용할 경우 스택 스매싱 공격으로 인해 발생하는 추가적인 데이타 변조들까지 막아낼 수가 있는데, 이로 인한 성능 저하는 2% 미만에 불과하다.
버퍼 오버플로우 공격은 Code Red나 SQL Stammer와 같은 최근의 웜의 발발에서 알 수 있는 것과 같이 가장 강력하고 치명적인 형태의 악성 코드 공격이다. 버퍼 오버플로우 공격은 일반적으로 시스템에 비정상적인 증상들을 유발한다. 버퍼 오버플로우 공격에 대한 기존의 대처방안들은 심각한 성능 저하를 초래하거나, 다양한 형태의 버퍼 오버플로우 공격을 모두 방지하지 못했으며, 특히 일반적으로 사용되는 소프트웨어 패치를 사용하는 방법은 버퍼 오버플로우 입의 확산을 효과적으로 차단하지 못한다. 이러한 문제를 해결하고자 본 논문에서는 적은 하드웨어 비용과 성능 저하만으로 거의 모든 악성 코드 공격을 탐지하고 피해를 복구할 수 있도록 하는 복귀 주소 포인터 스택 (Return Address Pointer Stack: RAPS) 과 변조 복구 버퍼 (Corruption Recovery Buffer: CRB)라는 마이크로 구조 기술들을 제안한다. 버퍼 오버플로우 공격으로 인한 비정상적인 증상들은 RAPS를 통해 프로세스 실행 중 메모리 참조의 안전성을 점검함으로써 쉽게 탐지될 수 있으며, 이는 그러한 공격들에 의한 잠재적인 데이타 흑은 제어 변조를 피하는 것을 가능하게 한다. 안전 점검 장치의 사용으로 인한 하드웨어 비용과 성능 손실은 거의 발생하지 않는다. 또한, RAPS에 비해 더욱 강도 높은 방법인 CRB를 이용하여 보안 수준을 더욱 향상시킬 수 있다. 변조 복구 버퍼는 안전 점검 장치와 결합되어 버퍼 오버플로우 공격에 의해 발생했을 가능성이 있는 의심스러운 쓰기들을 저장함으로써 공격이 탐지되는 경우 메모리의 상태를 공격 이전의 상태로 복구시킬 수 있다. SPEC CPU2000 벤치마크 중에서 선정한 프로그램들에 대해 상세한 시뮬레이션을 수행함으로써, 제안된 마이크로구조 기술들의 효율성을 평가할 수 있다. 실험 결과는 안전 점검 장치를 사용하여 공격으로 인한 복귀 주소 변조로부터 스택 영역을 방어하는 것이 시스템의 이상 증상들을 상당 부분 감소시킬 수 있다는 것을 보여준다. 또한, 1KB 크기의 작은 변조 복구 버퍼를 안전 점검 장치와 함께 사용할 경우 스택 스매싱 공격으로 인해 발생하는 추가적인 데이타 변조들까지 막아낼 수가 있는데, 이로 인한 성능 저하는 2% 미만에 불과하다.
The buffer overflow attack is the single most dominant and lethal form of security exploits as evidenced by recent worm outbreaks such as Code Red and SQL Stammer. In this paper, we propose microarchitectural techniques that can detect and recover from such malicious code attacks. The idea is that t...
The buffer overflow attack is the single most dominant and lethal form of security exploits as evidenced by recent worm outbreaks such as Code Red and SQL Stammer. In this paper, we propose microarchitectural techniques that can detect and recover from such malicious code attacks. The idea is that the buffer overflow attacks usually exhibit abnormal behaviors in the system. This kind of unusual signs can be easily detected by checking the safety of memory references at runtime, avoiding the potential data or control corruptions made by such attacks. Both the hardware cost and the performance penalty of enforcing the safety guards are negligible. In addition, we propose a more aggressive technique called corruption recovery buffer (CRB), which can further increase the level of security. Combined with the safety guards, the CRB can be used to save suspicious writes made by an attack and can restore the original architecture state before the attack. By performing detailed execution-driven simulations on the programs selected from SPEC CPU2000 benchmark, we evaluate the effectiveness of the proposed microarchitectural techniques. Experimental data shows that enforcing a single safety guard can reduce the number of system failures substantially by protecting the stack against return address corruptions made by the attacks. Furthermore, a small 1KB CRB can nullify additional data corruptions made by stack smashing attacks with only less than 2% performance penalty.
The buffer overflow attack is the single most dominant and lethal form of security exploits as evidenced by recent worm outbreaks such as Code Red and SQL Stammer. In this paper, we propose microarchitectural techniques that can detect and recover from such malicious code attacks. The idea is that the buffer overflow attacks usually exhibit abnormal behaviors in the system. This kind of unusual signs can be easily detected by checking the safety of memory references at runtime, avoiding the potential data or control corruptions made by such attacks. Both the hardware cost and the performance penalty of enforcing the safety guards are negligible. In addition, we propose a more aggressive technique called corruption recovery buffer (CRB), which can further increase the level of security. Combined with the safety guards, the CRB can be used to save suspicious writes made by an attack and can restore the original architecture state before the attack. By performing detailed execution-driven simulations on the programs selected from SPEC CPU2000 benchmark, we evaluate the effectiveness of the proposed microarchitectural techniques. Experimental data shows that enforcing a single safety guard can reduce the number of system failures substantially by protecting the stack against return address corruptions made by the attacks. Furthermore, a small 1KB CRB can nullify additional data corruptions made by stack smashing attacks with only less than 2% performance penalty.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
게다가, 리눅스의 시그널 핸들러는 일반적으로 실행 가능한 스택에 의존하고 있다. Openwall 프로젝트의 리눅스 커널 패치는 시그널 핸들러를 수정하고 trampoline 함수의 구현을 수정하여 이러한 문제들을 해결하려 하였다. 하지만 이러한 패치는 여전히 데이타 변조에 대해 취약하며 이로 인해 서비스 거부 상태로 이어질 수 있다.
특히, 어떻게 공격이 여러 데이타 및 제어 변조들을 일으키고, 결국 잘못된 프로그램행위를 유발하게 되는지 분석해 보고자 한다. 두 번째 목표는 제안된 마이크로구조 기법들이 얼마나 효율적으로 동작하는지 알아보는 것이다. 버퍼 오버플로우 시나리오의 다양한 상황들을 만들어내기 위해, 응용 프로그램의 스택 또는 데이타 영역에 임의로 쓰레기 값들을 삽입한다.
또한, 악성 코드들은 종종 프로그램 주소 공간의 스택 또는 데이타 영역으로부터 명령어를 가져오려 하는데, 이 역시 보통의 프로그램 수행에서는 잘 일어나지 않는 동작이다. 본 논문에서는 이러한 비정상적인 증상들을 검출하기 위해 명령어와 데이타 참조들의 주소 영역을 검사하여 그 안전성을 검증하는 '안전점검 장치(safety guard)'라 불리는 새로운 마이크로구조 기술을 제안한다. 이러한 안전 점검 장치로 인한 성능 손실은 없으며 무시할 수 있는 아주 적은 하드웨어 비용으로 구현될 수 있다.
있다. 본 논문에서는 프로세서에 쉽게 적용될 수 있는, 새로운 마이크로구조 기법들을 제안한다. 이 기법들은 실생활의 거의 모든 버퍼 오버플로우 시나리오를 방어하는데 있어 매우 효율적이다.
본 논문에서는, 버퍼 오버플로우 문제에 대한 새로운 하드웨어적인 해결 방안을 제안한다. 그러므로, 소프트웨어적인 해결 방안에서 발생하는 재 컴파일이나 경계영역 검사 수행을 위한 별도의 코드 실행을 필요로 하지 않는다.
이러한 이전의 기법들은 모든 다른 종류의 데이타 변조를 막아낼 수가 없다’ 이는 이전의 기법들을 이용하는 시스템들이 여전히 서비스 거부 상태에 대해 취약하다는 것을 의미한다. 이 논문에서는 버퍼 오버플로우 공격으로 인한 데이타 및 제어 변조들을 탐지하고 복구할 수 있는 하드웨어 기법들을 이용함으로써 이러한 문제점들을 다루게 될 것이다.
첫째, 버퍼 오버플로우 공격들의 여러 시나리오들에 대해서 알아보려 한다. 특히, 어떻게 공격이 여러 데이타 및 제어 변조들을 일으키고, 결국 잘못된 프로그램행위를 유발하게 되는지 분석해 보고자 한다.
첫째, 버퍼 오버플로우 공격들의 여러 시나리오들에 대해서 알아보려 한다. 특히, 어떻게 공격이 여러 데이타 및 제어 변조들을 일으키고, 결국 잘못된 프로그램행위를 유발하게 되는지 분석해 보고자 한다. 두 번째 목표는 제안된 마이크로구조 기법들이 얼마나 효율적으로 동작하는지 알아보는 것이다.
가설 설정
1. 고장: 공격이 성공적일 경우, 이를 고장이라 부를 것이다. 이는 성공적인 공격이 시스템의 고장을 유발하기 때문이다.
정확한 시뮬레이션을 위해서, SimpleScalar 2.0 tool- set을 사용하였으며 이를 이용해 기본 캐시/TLB를 가지며 4개의 비순차적인(out-of-order) 파이프라인을 가지는 프로세서 모델을 가정하였다. 각 응용 프로그램마다 50번의 독립적인 시뮬레이션을 수행하였으며, 각 시뮬레이션은 256바이트 크기의 쓰레기 값을 갖는 입력데이타를 실행 도중에 스택에 삽입하는 단일 공격을 동반한다.
제안 방법
SimpleScalar toolset 2.0의 sim-outorder.c와 연관된 파일들의 수정을 통해 각 복구 기법들을 구현하였다. 명령어 참조 안전 점검 장치의 사용은 외부 악성 코드로 인한 제어 변조를 막아주지만 모든 종류의 데이타 변조들에 대해 여전히 취약하다.
0 tool- set을 사용하였으며 이를 이용해 기본 캐시/TLB를 가지며 4개의 비순차적인(out-of-order) 파이프라인을 가지는 프로세서 모델을 가정하였다. 각 응용 프로그램마다 50번의 독립적인 시뮬레이션을 수행하였으며, 각 시뮬레이션은 256바이트 크기의 쓰레기 값을 갖는 입력데이타를 실행 도중에 스택에 삽입하는 단일 공격을 동반한다. 총 50번의 공격이 각 응용 프로그램마다 가해지며, 각각의 공격은 모두 다른 시점에 일어나게 된다.
첫째, 버퍼 오버플로우 공격으로 인해 발생하는 데이타 및 제어 변조들을 분석하고 그것들을 여러 형태의 데이타 및 제어 변조 시나리오들로 분류하였다. 둘째, 데이타 및 명령어 참조의 안전성을 검사함으로써 프로세서를 이용하여 그러한 공격들로 인해 발생하는 제어 및 데이타 변조들을 탐지하고 막야낼 수 있는 방법을 제안한다. 이러한 안전 보호 점검 장치들은 어떠한 종류의 프로세서들에도 적용될 수 있으며, 하드웨어 비용이 적고 성능 저하가 거의 없다.
이러한 안전 점검 장치로 인한 성능 손실은 없으며 무시할 수 있는 아주 적은 하드웨어 비용으로 구현될 수 있다. 또한 본 논문에서는 이러한 안전 점검 장치에 추가하여, 의심스러운 메모리 쓰기 들을 임시 저장하여 공격이 탐지될 경우 시스템을 공격이 전의 상태로 되돌랄 수 있는 '변조 복구 버퍼(Corruption recovery buffer; CRB)'라는 더욱 강화된 보안기술을 제안한다.
이러한 안전 보호 점검 장치들은 어떠한 종류의 프로세서들에도 적용될 수 있으며, 하드웨어 비용이 적고 성능 저하가 거의 없다. 또한, 변조 복구 버퍼라 불리는 더욱 강도 높고 안전한 마이크로구조 기법을 제안한다. 이는 버퍼 오버플로우 공격들에 관해 제안된 최초의 복구 기법일 것이다.
있었다. 본 살험에서는 시뮬레이션 도중에 프로그램 주소 공간의 다양한 데이타 영역들을 임의로 변조함으로써, 스택 스매싱 공격은 물론 실제 상황에서 아직 발생하지 않은 다양한 형태의 새로운 버퍼 오버플로우 시나리오들을 발생시켰다. 실험 결과에 따르면 안전 점검 장치 만을 사용하여 스택 스매싱 공격의 상당 부분을 감소시킬 수 있다는 것을 확인하였다.
그리고 기존 연구에서는 다루어지고 있지 않은 서비스 거부 상태에 대해 다루고 있다. 셋째로, 제안된 기법들을 평가하고, 상세한 구조 시뮬레이션을 수행함으로써 다양한 공격 시나리오들에 대해 알아본다. 실험 환경에서는 프로그램의 주소 공간 내의 임의의 데이타 영역에 쓰레기 데이타를 삽입함으로써 현실에서 보고되지 않은 다양한 종류의 공격 시나리오들을 만들어낼 수 있다.
이를 위해, 변조 복구 버퍼(CRB)라고 불리는 특별한 하드웨어 버퍼에 안전하지 않은 - 오버플로우가 발생 가능한 - 쓰기들을 저장한다. 데이타 참조 안전 점검 장치 위반이 발생했을 때, 프로세서는 CRB내의 모든 안전하지 않은 값들을 버리고, 조용히 그 이후의 안전하지 않은 쓰기 들을 무시한다.
이상의 실험 외에도 CRB에 의한 성능 오버헤드 측정실험도 수행하였는데, 특히 CRB가 가득 차거나, 또 다른 CRB 트리거가 발생하는 경우, CRB내의 데이타를 메모리로 보내기 위해 요구되는 추가적인 지연 사이클 (stall cycles)을 측정하였다. 프로세서 모델은 두 개씩의 읽기, 쓰기 포트를 가진 nonblocking L1 캐쉬를 사용하며, 매 사이클 당 두 개의 단일 워드 쓰기를 허용한다, 4이슈의 비순차적(out-of-order) 파이프라인이 사용되고 있지만, 시뮬레이션의 모든 경우들에 있어 1KB CRB의 성능 오버헤드는 2% 미만이다.
제안된 마이크로구조 안전 장치들의 효용성을 평가하기 위해, 안전 점검 장치들 뿐만 아니라 CRB를 사용할 수 있도록 프로세서 모델을 수정하였다. SimpleScalar toolset 2.
제어 및 데이타 변조를 비정상 실행 및 비정상 종료로 좀 더 나누어보도록 한다. 그림 9(b)는 비정상 실행의 분포 및 비정상 종료의 상세한 분류를 보여준다.
이 논문이 기여하는 바는 다음과 같다. 첫째, 버퍼 오버플로우 공격으로 인해 발생하는 데이타 및 제어 변조들을 분석하고 그것들을 여러 형태의 데이타 및 제어 변조 시나리오들로 분류하였다. 둘째, 데이타 및 명령어 참조의 안전성을 검사함으로써 프로세서를 이용하여 그러한 공격들로 인해 발생하는 제어 및 데이타 변조들을 탐지하고 막야낼 수 있는 방법을 제안한다.
대상 데이터
이를 위해 SPEC CPU2000 벤치마크 중에서 선정한 다섯 개의 응용 프로그램들을 실험에 사용하였다. 실험에 사용된 프로그램은 압축 프로그램인 gzip과 bzip2, 오브젝트 기반 데이타베이스인 vortex, 지진 모델링 프로그램인 equake그리고, 최소 비용 네트워크 흐름 분석기인 mcf이다. 차후 본 논문의 실험을 CPU2000 벤치마크에 포함되어 있는 모든 응용 프로그램들로 확대해 나가려 한다.
버퍼 오버플로우 시나리오의 다양한 상황들을 만들어내기 위해, 응용 프로그램의 스택 또는 데이타 영역에 임의로 쓰레기 값들을 삽입한다. 이를 위해 SPEC CPU2000 벤치마크 중에서 선정한 다섯 개의 응용 프로그램들을 실험에 사용하였다. 실험에 사용된 프로그램은 압축 프로그램인 gzip과 bzip2, 오브젝트 기반 데이타베이스인 vortex, 지진 모델링 프로그램인 equake그리고, 최소 비용 네트워크 흐름 분석기인 mcf이다.
셋째로, 버퍼 오버플로우 공격은 악성 코드 공격의 여러 형태들 중에서 가장 널리 사용되고 있다. 지난 3년간 모든 보안 취약점들의 약 4분의 1가량[3], 그리고 SANS Institute와 FBI에 의해 선정된 가장 심각한 20가지 인터넷 보안 취약점들 중에서 14가지가 버퍼 오버플로우 취약점을 사용하였다[4]. 넷째로, 모든 악성 코드 공격들 중에서 가장 지속적인 형태라고 할 수 있다.
성능/효과
1) 명령어 참조 안전 점검 장치 + 강제 복귀: 제어 변조에 대한 가장 간단한 방어 방법으로, Libsafe, PC- 암호화 기법과 같은 방어 수준을 제공한다.
4) CRB 구조 十 조용한 복구: 데이타 참조 안전 점검 장치에 추가하여 CRB를 사용하여 데이타 변조를 완전히 차단하는 가장 안전한 방어 방법이다.
SPEC CPU2000 벤치마크로부터 선정된 다수의 프로그램들에 대한 상세한 시뮬레이션을 수행함으로써, 제안된 마이크로구조 기술들의 효용성을 평가할 수 있었다. 본 살험에서는 시뮬레이션 도중에 프로그램 주소 공간의 다양한 데이타 영역들을 임의로 변조함으로써, 스택 스매싱 공격은 물론 실제 상황에서 아직 발생하지 않은 다양한 형태의 새로운 버퍼 오버플로우 시나리오들을 발생시켰다.
지난 3년간 모든 보안 취약점들의 약 4분의 1가량[3], 그리고 SANS Institute와 FBI에 의해 선정된 가장 심각한 20가지 인터넷 보안 취약점들 중에서 14가지가 버퍼 오버플로우 취약점을 사용하였다[4]. 넷째로, 모든 악성 코드 공격들 중에서 가장 지속적인 형태라고 할 수 있다. 버퍼 오버플로우 공격은 1988년에 Robert Morris가 작성한 인터넷 웜 이후로 오랜 기간 알려져 왔지만, Code Red I/Ⅱ, SQL Slammer와 W32/Blaster오小 같은 최근의 웜의 발발에서 알 수 있듯이 계속해서 심각한 보안 위협을 제공하고 있다.
놀랍게도, 데이타 및 제어 변조들로 인한 모든 종류의 시스템 고장은 데이타 안전 점검 장치와 더불어 제안된 복구 기법인 CRB를 사용함으로써 완전하게 제거된다. 따라서, 버퍼 오버플로우 공격의 가장 혼한 형태인 스택 스매싱 공격에 있어, 악성 코드는, 제안된 안전한 프로세서 모델 내에서 공격을 가하는 프로세스의 제어를 바꾸지 못할 뿐 아니라 서비스 거부 상태 역시 유발하지 못한다.
이것은 여러 요인에 의한 것으로 첫째, 버퍼 오버플로우는 버퍼 인근의 데이타만 변조하는 것이 아니라, 프로그램의 제어를 가로채 악의적인 목적을 가진 임의의 코드를 실행하는 것을 가능하게 한다. 둘째로, 이러한 악성 코드들은 어떠한 수동 조작 없이도 스스로 복제되고 전파될 수 있기 때문에, 모든 형태의 악성 코드 공격들 중에서 가장 빠른 전파 속도를 가지고 있다. 한 예로 CAIDA 의 보고에 따르면, SQL Slammer 웜은 약 8분 만에 전 세계 수십만 대의 패치가 되어있지 않은 SQL 서버들을 감염시킬 수 있었다 [2].
실험 결과에 따르면 안전 점검 장치 만을 사용하여 스택 스매싱 공격의 상당 부분을 감소시킬 수 있다는 것을 확인하였다. 또한, 1KB 크기의 작은 CRB 를 안전 점검 장치와 함께 사용할 경우 2% 이하의 성능 저하만으로 스택 스매싱 공격으로부터 발생하는 모든 추가적인 데이타 변조들을 막아낼 수 있었다.
mcf의 경우, 입력 크기를 증가시키면 데이타 변조가 제어 변조로 바뀌게 되는데 이는 외부 입력이 스택 내의 복귀 주소를 덮어쓸 정도로 충분히 크다는 것을 의미한다. 또한, equake의 경우 입력 크기가 256 바이트인 경우 약 44%의 제어 변조를 나타내지만 입력 크기가 1024 바이트인 경우 데이타 변조가 발생함을 확인할 수 있다. 이는 equake의 스택 프레임에서 복귀 주소가 스택 포인터에서 약 256 바이트 거리에 저장되어 있기 때문이다.
그러므로, 소프트웨어적인 해결 방안에서 발생하는 재 컴파일이나 경계영역 검사 수행을 위한 별도의 코드 실행을 필요로 하지 않는다. 뿐만 아니라, 하드웨어 수준에서의 방어는 프로세서에서 실행중인 모든 시스템 및 응용 프로그램들에 적용할 수 있어서, 각 제품에 맞는 특정 패치를 일일이 설치해야 하는 기존의 방법에 비해 보다 안전하게 보호해줄 수 있다. 버퍼 오버플로우 공격은 일반 프로그램 실행에서는 발생하지 않는 이상한 증상이나 혼적을나타내는 것이 일반적이다.
이것은 RAPS 를 통해 복귀 주소의 위치를 추적하여 강제로 PC 값을 복귀 주소로 바꿈으로써 가능하다. 세 번째는 모든 안전하지 않은 저장 연산들을 무시하고, 원래의 실행 흐름은 변화시키지 않는 방법이다. 이것을 '조용한 복구(calm recovery)'라고 한다.
본 살험에서는 시뮬레이션 도중에 프로그램 주소 공간의 다양한 데이타 영역들을 임의로 변조함으로써, 스택 스매싱 공격은 물론 실제 상황에서 아직 발생하지 않은 다양한 형태의 새로운 버퍼 오버플로우 시나리오들을 발생시켰다. 실험 결과에 따르면 안전 점검 장치 만을 사용하여 스택 스매싱 공격의 상당 부분을 감소시킬 수 있다는 것을 확인하였다. 또한, 1KB 크기의 작은 CRB 를 안전 점검 장치와 함께 사용할 경우 2% 이하의 성능 저하만으로 스택 스매싱 공격으로부터 발생하는 모든 추가적인 데이타 변조들을 막아낼 수 있었다.
하지만 libsafe 기법을 사용하는 데에는 몇 가지 문제점이 따르게 된다. 첫째로 대상 버퍼의 정확한 크기를 계산하는 것이 불가능하다. 가장 좋은 방법은 버퍼의 크기를 버퍼의 시작 지점과 프레임 포인터의 차이와 동일하게 설정하는 것이다.
후속연구
데이타 참조 안전 점검 장치에 대한 위반이 발생하면 CRB에 저장된 값들은 안전하지 않으며 그 이후의 기록들은 무시될 것이다. 또한 조용한 복구(calm recovery)에서와 마찬가지로 프로세서는 모든 안전하지 않은 쓰기들을 무시한 후, 정상 실행을 계속할 것이다. 이러한 버퍼 오버플로우 공격이 진행되는 동안 실제로 메모리에는 쓰기 연산이 발생하지 않으므로 데이타도제어도 변조되지 않는다.
이타 변조들을 완전히 제거할 수 있다. 이러한 가능성 있는 초기 결과들을 바탕으로, 힙 영역에서의 함수 포인터 변조와 같은 더욱 희귀한 버퍼 오버플로우 공격들을 탐지하고 복구할 수 있는 보다 효율적인 방법들을 앞으로 연구할 계획이다.
실험에 사용된 프로그램은 압축 프로그램인 gzip과 bzip2, 오브젝트 기반 데이타베이스인 vortex, 지진 모델링 프로그램인 equake그리고, 최소 비용 네트워크 흐름 분석기인 mcf이다. 차후 본 논문의 실험을 CPU2000 벤치마크에 포함되어 있는 모든 응용 프로그램들로 확대해 나가려 한다. 본 실험 방법은 이미 보고된 공격은 물론 아직 실제로 보고되지 않은 발생 가능한 모든 공격 시나리오들을 생성할 수 있다.
Cooperative Association for Internet Data Analysis(CAIDA), Analysis of the Sapphire Worm, http://www.caida.org/analysis/ security/sapphier/, Jan. 2003
Common Vulnerabilities and Exposures(CVE), [TECH] Vulnerability Types Seen in CVE, http://cve.mitre.org/board/archives/2002-10/msg00005.html
SANS Institute and FBI, The Twenty Most Critical Internet Security Vulnerabilities-The Expert's Consensus, http://www.sans.org/top20, 2003
Snow, B., Future of Security, Panel Presentation at IEEE Security and Privacy, May 1999
Openwall Project, Linux kernel patch from the open wall project, http://openwall.com/linux
Chiueh T.-c. and Hsu F.-H., RAD: A CompileTime Solution to Buffer Overflow Attacks, In Proceedings of the 21st International Conference on Distributed Computing Systems, 2001
Cowan, C., Beattie, S., Day R. F., Pu, C., Wagle, P., and Walthinsen, E., Protecting Systems from Stack Smashing Attacks with StackGuard, In the Linux Expo, 1999
Lee, G. and Tyagi, A., Encoded Program Counter: Self-Protection from Buffer Overflow Attack, In Proceedings of the International Conference on Internet Computing, June 2000
Pyo C. and Lee, G., Encoding Function Pointers and Memory Arrangement Checking against Buffer Overflow Attack, In Proceedings of the Fifth International Conference on Information and Communications Security, October 2003
Jones R. and Kelly, P., Bounds Checking for C, http://www-ala.doc.ic.ac.uk/-phjk/BoundsChecking.html, July 1995.
Baratloo, A., Singh, N., and Tsai, T., Transparent Run-Time Defense Against Stack Smashing Attacks, In Proceedings of the USENIX Annual Technical Conference, June 2000
Richard W M Jones and Paul H J Kelly, Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs, May 1997
Cowan, C., Wagle, P., Pu, C, Beattie S. and Walpole, L, Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade, In Proceedings of the DARPA Information Survivability Conference and Exposition. January 2000
Peter Silberman and Richard Johnson, A Comparison of Buffer Overflow Prevention Implementations and Weaknesses
Bulba and Ki13r, Bypassing Stackguard and Stackshield, Phrack, 10(56), May 2000
Jun Xu, Zbigniew Kalbarczyk, Sanjay Patel and Ravishankar K. Iyer, Architecture Support for Defending Against Buffer Overflow Attacks
John P. McGregor, David K. Karig, Zhijie Shi, and Ruby B. Lee, A Processor Architecture Defense against Buffer Overflow
※ AI-Helper는 부적절한 답변을 할 수 있습니다.