버퍼 오버플로우(Buffer Overflow) 공격 방법이란?

2019. 9. 3. 19:41

1. 버퍼 오버플로우 (Buffer Overflow)

 

버퍼 오버플로우를 설명하는 이미지 (출처: 구글링)

 

버퍼 오버플로우는 일종의 버그이며, 이를 응용하여 시스템을 공격하는 하나의 방식을 의미한다.

 

버퍼 오버플로우는 메모리 버퍼의 사용 영역이 실제 할당된 영역 이상의 공간을 침범하는 현상이다.

 

버퍼 오버플로우의 발생 시 버퍼에 다 담기지 못한 값은 버퍼 이후의 공간에 들어차게 되며 이 값들은 이후의 공간에 덮어 쓰이는 현상이 발생한다.

 

 

2. 공격 방식

 

해커들은 이런 버그를 이용하여 시스템 영역의 메모리에 침입하여 관리자 권한을 획득하거나 주요 정보를 탈취하는 등의 방식으로 시스템을 공격한다.

 

다음 그림은 스택 오버플로우를 이용한 시스템 공격 방식에 대한 설명이다.

 

버러 오버플로우의 시스템 공격 방식 (출처: 구글링)

 

간단히 설명을 붙이자면 스택 오버플로우를 시스템 영역까지 확장시킨 후 스택의 Return 값을 변조하여 시스템 레지스터에서 실행할 명령어를 변조해 해커가 원하는 명령어를 실행하도록 하는 방식이다.

 

 

3. 대응책

 

ASLR(Address Space Layout Randomizetion)

라이브러리, 스택, 힙 공간을 실행시킬 때마다 무작위로 배치하여 공격 위치를 특정할 수 없도록 하는 방식

 

DEP(Data Execution Prevention)

실행되어선 안 되는 메모리 영역에서 코드의 실행을 방지하여 임의의 코드가 실행되는 것을 방지하는 방어기법

 

BELATED ARTICLES

more