간단한 IT 지식

[오늘의 지식] 버퍼 오버플로우(Buffer Overflow)

Sh_Blog 2024. 2. 19. 12:21

 

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

프로그램 실행 시 입력받는 값이 버퍼의 크기를 넘어가 버퍼 이후의 공간을

침범하는 현상을 버퍼 오버플로우라고 한다.

 

2. 문제점

버퍼에서 주의해야 할 점은 버퍼 오버플로우가 발생 시 버퍼 이후의 공간에 값이

들어차게 되는데 이 때 들어차는 방식이 밀어내기가 아닌 덮어쓰기 방식이다.

 

이 말은 4칸 짜리 버퍼 A B C D 가 있고  a b c d e의 입력을 받아 오버 플로우가

발생 한다면 현재 입력 받은 값을 밀어내는 것이 아닌 버퍼가 a b c d e의 값으로

덮어 씌어지게 된다. 

 

예를 들어, 올바르게 버퍼 값을 받는다고 가정한 로직에서 고의로 버퍼를 초과시켜

이상한 값을 덮어씌운다면 로직이 의도한대로 실행되지 않아 위험성이 커지는데

해커들은 이러한 방법을 이용하여 프로그램을 해킹할 수 있다.

-> 이상한 입력 값을 쑤셔 넣어서 연결되는 다음 함수로 이동할 수 있다.

 

3. 대처법

요즘에는 Visual studio 등 대부분이 오버플로우에 대한 예외처리가 되있지만

프로그램의 Input을 받는 모든 부분에서 버퍼 오버플로우는 발생할 수 있기 때문에

개발자가 예외처리를 꼼꼼히 진행해야 한다.