Internet Explorer 8 보안 1부 : DEP/NX 메모리 보호

 

 

안녕하세요. 저는 인터넷 익스플로러 보안 팀의 에릭 로렌스입니다. 저는 이번 주에 시작되는 RSA 보안 컨퍼런스에 맞춰서 인터넷 익스프로러 8 베타 1의 보안 기능들에 관해 좀 더 많은 정보를 공유하고자 합니다. 다음 몇 주동안 저희는 보안 필터, 향상된 Active X 제어, 안전한 매쉬업에 필요한 새로운 AJAX 기능 (XDomainRequest and XDM) 등 베타 1에서 향상된 보안 기능들에 관한 자세한 정보들을 블로깅 할 것입니다. 이게 전부는 아니고 나중에 더 많은 부분들을 말씀드리겠습니다.

인터넷 익스플로러 8의 보안 기능들은 크게 사회공학 취약점, 웹 서버 취약점, 브라우저 기반의 취약점, 이렇게 3가지 보안 취약점을 대상으로 합니다. 이 글은 IE 8의 데이터 실행 방지(Data Excution Prevention, DEP) 기능을 이용하여 브라우저 기반 취약점 문제를 완화시키는 방법을 다룹니다.

* IE 8의 DEP/NX 메모리 보호 기능

윈도우즈 비스타의 익스플로러 7는 DEP/NX라고 불리는 "온라인 공격을 줄이기 위해 메모리 보호 사용" 기능이 기본적으로 비활성화 되어 있습니다. (DEP는 Data Excution Prevention, NX는 No Execute의 약어입니다.)

그렇지만 윈도우즈 서버 2008, 비스타 SP1, SP1 이후 버전의 익스플로러 8부터 이 기능이 기본적으로 활성화 되었습니다.

DEP/NX는 데이터 영역에 공격 코드를 넣고 실행하지 못하도록 합니다. DEP/NX과 주소 공간 레이아웃 랜덤화(Address Space Layout Randomization, ASLR) 같은 기술을 같이 사용하게 되면 공격자가 버퍼 오버런과 같은 메모리 관련 취약점들을 익스플로잇 하기 힘들어집니다. 이 보호 기능은 익스플로러와 익스플로러의 애드온 양쪽 다 적용됩니다. 사용자 프롬프트가 새로 뜨거나 하는 일은 없습니다.

* DEP/NX 호환성

익스플로러 7에서 DEP/NX 기능은 호환성 문제로 인해 기본적으로 비활성화 되었습니다. 몇몇 유명한 애드온들은 DEP/NX와 호환되지 않기 때문에 활성화 하게 되면 충돌(crash)이 발생합니다. 대부분 이런 문제는 애드온이 예전 버전의 ATL 라이브러리를 이용하여 빌드되었기 때문에 발생합니다. ATL 7.1 SP1 이전 버전은 동적으로 생성되는 코드를 사용하기 때문에 DEP/NX와 호환되지 않습니다. 상당수의 유명한 애드온 개발자들은 DEP/NX와 호환되도록 업데이트해서 올려놓겠지만, 몇몇 애드온들은 IE 8이 출시되기 전까지 업데이트 되지 않을 것 같습니다.

다행히도 윈도우즈 서버 2008과 최근에 출시된 윈도우즈 서비스팩에 포함된 새로운 DEP/NX API는 이전 버전의 ATL과 호환됩니다. 새로운 API는 이전 버전의 ATL에서 만들어진 애드온과 익스플로러가 충돌하지 않게 합니다.

가끔 다른 이유로 애드온이 DEP/NX 호환되지 않는 경우가 있는데, 이럴 때는 그룹 정책 옵션을 써서 익스플로러에서 특정 애드온은 임시로 DEP/NX를 사용하지 않도록 할 수 있습니다. 로컬 관리자는 IE를 관리자 권한으로 실행해서 도구 > 인터넷 옵션 > 고급 > "온라인 공격을 줄이기 위해 메모리 보호 사용" 옵션을 해제하면 됩니다.

* 보호상태 확인하기

DEP/NX로 보호되는 프로세스는 윈도우즈 비스타 작업 관리자의 프로세스 탭을 통해 확인할 수 있습니다. 비스타 이전의 윈도우에서는 프로세스 익스플로러(예전에 sysinternals에서 제공하던 프로그램)를 써서 확인할 수 있습니다. 메뉴에서 View > Select Columns 메뉴에서 "Data Execution Prevention"이 체크되어 있는지 확인하면 됩니다.

* 애드온 개발자가 할 일
익스플로러용 애드온을 만든다면, 아래의 방식을 이용하여 사용자들이 좀더 편하게 IE 8로 옮겨가도록 할 수 있습니다.

1. 애드온이 이전 버전의 ATL을 사용하여 제작되었다면, ALT v7.1 SP1 혹은 그 이후의 버전(Visual Studio 2005는 ATL 8.0을 포함합니다)으로 리빌드 하세요.
2. /NXCompat 링커 옵션을 사용해서 DEP/NX 호환성을 표시하세요.
3. DEP/NX가 활성화된 비스타의 IE8 베타 1에서 애드온을 테스트 하세요.
4. 스택 보호(Stack Defense, /GS), 안전한 예외 처리(Safe Exception Handling, /SafeSEH), 주소공간 레이아웃 랜덤화(Address Space Layout Randomization, ASLR, /DynamicBase)등 여러가지 방어 기법을 적용하세요.

감사합니다.

에릭 로렌스
프로그램 매니저

 

* 역자 : 이글은 IE8 Security Part I: DEP/NX Memory Protection (영문)을 NCHOVY 인터넷스톰센터에서 번역해 주셨습니다. 진심으로 감사의 말씀을 드립니다.