vulnerability
버퍼 오버플로우(Buffer Overflow)
빈 칸
2024. 5. 10. 19:27
KISA 가이드


버퍼 오버플로우란?
버퍼에 데이터를 쓰는 소프트웨어가 버퍼의 용량을 초과하여 인접한 메모리 위치를 덮어쓸 때 발생하는 비정상적인 현상
공간이 충분하지 않은 컨테이너에 너무 많은 정보가 전달되어 해당 정보가 인접 컨테이너의 데이터를 대체

버퍼란?
버퍼는 데이터를 다른 장소로 이동하는 동안 임시로 저장하는 데 사용되는 물리적 메모리 저장 영역
버퍼 오버플로우 악용
- 공격자는 신중하게 조작된 입력을 프로그램에 의도적으로 삽입
- 프로그램이 해당 입력을 충분히 크지 않은 버퍼에 저장하도록 하여 버퍼 공간에 연결된 메모리 일부를 덮어씌움
- 프로그램의 메모리 레이아웃이 잘 정의되어 있다면 공격자는 실행 코드가 포함된 것으로 알려진 영역을 의도적으로 덮음
- 공격자는 이 코드를 자신의 실행 코드로 대체하여 프로그램의 작동 방식을 크게 변경
- ex) 메모리의 덮어쓴 부분에 포인터(메모리의 다른 위치를 가리키는 객체)가 포함되어 있는 경우
- 공격자의 코드는 해당 코드를 익스플로잇 페이로드를 가리키는 다른 포인터로 대체
- 전체 프로그램의 제어권이 공격자의 코드로 넘어갈 수 있음
버퍼 오버플로 공격에 취약한 대상은?