문제는 해커들이 ROP를 이용해서 공격하기 시작하면서 DEP가 무용지물이 됐다는 거.

옛날에 나도 고1 때 DEP 말고 다른 방식으로, 코드 세그먼트와 데이터 세그먼트를 분리한 형태로 OS를 설계하면 버퍼 오버플로 공격 못할 거라 예상했었는데 아무튼 이런 유형의 방어법을 깬 ROP는 레알 신박 ㅋㄷㅋㄷ

그리고 ROP에 대항해서 ASLR 기법이 나왔지만 호환 문제 때문에 완벽하게 막히지 않음.

왜냐하면 ASLR을 모듈에서 지원하려면 compiler가 relocation table 정보를 넣어줘야 하는데

Vista 이전에 만들어진 exe binary는 이 정보가 없기에 OS가 ASLR을 적용하고 싶어도 할 수가 없기 때문.

이 경우엔 DLL module에 한해서만 ASLR이 적용됨.


근데 Vista 이후에 만들어진 EXE도 결국 어떻게 뚫긴 하던데

아마 기존 개발자들이 안일하게 생각했던 보안 이슈에서 메모리 찾아내어서 악용했을 거 같음.

아니면 버퍼 오버플로 취약점이 아니든지.


나중에 자세히 살펴봐야 겠다. 고딩 이후 보안에 너무 관심을 놓고 산 듯 ㅋㅋㅋ