1/29/2009

두가지 스택 오버 플로우


IE7에서 INPUT 태그에 수천바이트 이상의 문자열을 집어 넣으면 스택 오버 플로우가 난다고 버그트랙에 권고문이 올라온 모양이다.
바로 마이크로소프트 SWI에서 해명 기사가 올라 왔다.


스택은 쓰레드 생성시에 지정되는 메모리 영역으로서, 너무 많은 데이타를 스택에 집어 넣다 보면 언제가는 스택이 꽉 차는 경우가 있다. 이 경우는 진짜 말그대로 스택이 넘치는 스택 오버 플로우가 생기는 것이다.
스택의 변수의 바운더리를 넘겨서 데이타를 저장할 수 있는 스택 오버플로우와는 다른 종류의 버그이고, 보안상의 위협보다는 프로그램의 사용성에 문제를 일으키는 것으로 안다.
alloca()와 같은 함수를 너무 남용했을 경우에도 발생할 수 있으므로 주의를 기울여야 한다.
하지만 보안상으로 exploit은 불가능한 것으로 생각된다.
특이한 것은 스택 값을 덮어 써서 나는 스택 오버플로우는 디버거에서 스택 오버플로우라고 에러코드가 절대 나지 않고 다만 EIP등이 엉뚱한 곳으로 튀는 반면, 버퍼가 모자라서 생기는 버퍼 오버플로우는 디버거 메시지가 스택 오버플로우로 나와서 사람을 헷갈리게 한다는 것이다.

Posted via email from bugtruck's posterous

댓글 없음:

댓글 쓰기