Watchfire 에서 dangling pointer 를 원격에서 공격하는 매우 신뢰할만한 방법을 발견했다고 발표했습니다. dangling pointer 는 메모리 해제 후 NULL 로 초기화하지 않은 포인터를 말합니다.
예를 들어
int *p = NULL;
p = (int *) malloc(sizeof(int));
... 생략 ...
free(p);
했을 때 p 는 여전히 malloc 한 그 위치를 가리키고 있습니다.
이 경우 p 를 dangling pointer 라고 하는데요.
dangling pointer 문제를 막으려면
free(p);
p = NULL;
형태로 NULL 로 초기화 해야 하는 걸로 압니다.
이 때 공격이 성공하려면 조건으로
1. p 가 가리키는 메모리 주소를 정확히 알 것
2. p 가 가리키는 공간에 데이터를 쓸 수 있을 것
혹은
1. p 가 가리키는 메모리 주소를 정확히 알 것
2. p 가 가리키는 주소를 해커의 데이터가 들어 있는 다른 주소로 변경할 수 있을 것
위의 두 가지 경우가 있겠는데요.
Watchfire 에서 이번 BlackHat 에 기법을 공개한다고 하니, 어떤 기법인지 기대해보면 재미있을 듯...
AppScan 팔려고 Watchfire 엔지니어들 고생하는군요.
참고 자료 : http://searchsecurity.techtarget.com/originalContent/0,289142,sid14_gci1265116,00.html
예를 들어
int *p = NULL;
p = (int *) malloc(sizeof(int));
... 생략 ...
free(p);
했을 때 p 는 여전히 malloc 한 그 위치를 가리키고 있습니다.
이 경우 p 를 dangling pointer 라고 하는데요.
dangling pointer 문제를 막으려면
free(p);
p = NULL;
형태로 NULL 로 초기화 해야 하는 걸로 압니다.
이 때 공격이 성공하려면 조건으로
1. p 가 가리키는 메모리 주소를 정확히 알 것
2. p 가 가리키는 공간에 데이터를 쓸 수 있을 것
혹은
1. p 가 가리키는 메모리 주소를 정확히 알 것
2. p 가 가리키는 주소를 해커의 데이터가 들어 있는 다른 주소로 변경할 수 있을 것
위의 두 가지 경우가 있겠는데요.
Watchfire 에서 이번 BlackHat 에 기법을 공개한다고 하니, 어떤 기법인지 기대해보면 재미있을 듯...
AppScan 팔려고 Watchfire 엔지니어들 고생하는군요.
참고 자료 : http://searchsecurity.techtarget.com/originalContent/0,289142,sid14_gci1265116,00.html



덧글
송재훈 2007/07/24 15:12 # 삭제 답글
ISS와 WatchFire가 모두 IBM에 인수합병 되었죠. IBM에서 보안 사업은 앞으로 ISS 통해서 할 것이라는 얘기가 있더군요.
somma 2007/07/24 17:33 # 삭제 답글
어떻게 공격하는지 궁금하네요. :-)
moto99 2007/07/25 16:06 # 삭제 답글
담아가요~
winDP 2007/08/23 21:50 # 답글
IBM 이 보안 사업을 시작한건 가요?