Skip to content

Stack buffer overflow

스택 버퍼 오버플로(stack buffer overflow)는 프로그램이 프로그램이 의도한 데이터 구조체의 메모리 주소(일반적으로 고정된 버퍼 길이를 갖는) 외부의 콜 스택에 쓸 때 발생한다. 스택 버퍼 오버플로 버그는 프로그램이 스택에 위치한 버퍼에 할당된 것보다 더 많은 데이터를 쓸 때 발생한다. 이것은 항상 스택에서 인접한 데이터의 오염을 유발하며 실수로 오버플로된 경우 프로그램은 충돌하거나 부정확하게 동작한다. 스택 버퍼 오버플로는 버퍼 오버플로로 알려진 일반적인 프로그래밍 부량의 한 종류이다. 스택에서 버퍼에 겹쳐쓰는 것은 힙에 존재하는 버퍼에 겹쳐쓰는 것보다 더 문제를 일으키기 쉬운데 그 이유는 스택이 모든 활성화된 함수 호출을 위한 반환 주소를 포함하기 때문이다.

스택 버퍼 오버플로는 스택 스매싱이라고 알려진 공격의 한 부분으로서 고의적으로 유발될 수 있다. 만약 영향을 받는 프로그램이 특정한 권한에서 실행되고 있거나 신뢰되지 않는 네트워크 호스트들(또는 웹 서버)에서 데이터를 받는다면 이 버그는 잠재적으로 보안 취약점이 된다. 만약 스택 버퍼가 신뢰받지 않은 사용자로부터 공급된 데이터로 채워진다면 사용자는 실행 가능한 코드를 실행 중인 프로그램에 삽입하고 프로세스의 제어를 얻는 방식으로 오염시킬 수 있다. 이것은 공격자가 컴퓨터에 대한 비인가된 접근을 얻을 수 있는 가장 오래되고 신뢰받는 방식들 중 하나이다.

Favorite site