1. 버퍼 오버플로우(Buffer Overflow)란?
프로그램 실행 시 입력받는 값이 버퍼의 크기를 넘어가 버퍼 이후의 공간을
침범하는 현상을 버퍼 오버플로우라고 한다.
2. 문제점
버퍼에서 주의해야 할 점은 버퍼 오버플로우가 발생 시 버퍼 이후의 공간에 값이
들어차게 되는데 이 때 들어차는 방식이 밀어내기가 아닌 덮어쓰기 방식이다.
이 말은 4칸 짜리 버퍼 A B C D 가 있고 a b c d e의 입력을 받아 오버 플로우가
발생 한다면 현재 입력 받은 값을 밀어내는 것이 아닌 버퍼가 a b c d e의 값으로
덮어 씌어지게 된다.
예를 들어, 올바르게 버퍼 값을 받는다고 가정한 로직에서 고의로 버퍼를 초과시켜
이상한 값을 덮어씌운다면 로직이 의도한대로 실행되지 않아 위험성이 커지는데
해커들은 이러한 방법을 이용하여 프로그램을 해킹할 수 있다.
-> 이상한 입력 값을 쑤셔 넣어서 연결되는 다음 함수로 이동할 수 있다.
3. 대처법
요즘에는 Visual studio 등 대부분이 오버플로우에 대한 예외처리가 되있지만
프로그램의 Input을 받는 모든 부분에서 버퍼 오버플로우는 발생할 수 있기 때문에
개발자가 예외처리를 꼼꼼히 진행해야 한다.
'간단한 IT 지식' 카테고리의 다른 글
[오늘의 지식] 라운드 로빈(Round Robin) 알고리즘 (0) | 2024.02.21 |
---|---|
[오늘의 지식] L Value, R value (0) | 2024.02.20 |
[오늘의 지식] 어드레서블 에셋 (0) | 2024.02.16 |
[오늘의 지식] 가상 메모리(Virtual Memory System) (0) | 2024.02.15 |
[오늘의 지식] RAII패턴 (0) | 2024.02.14 |