Microsoft EMET을 사용 중이라면, Windows용 보안 제품 중 가장 뛰어난 성능을 자랑하는 만큼 반드시 사용해야 할 필수 도구일 것입니다. 그리고 아마 구글 브라우저(Google Chrome)를 애플리케이션 목록에 추가하고 필요한 완화(Mitigation) 정책까지 설정해 두었을 겁니다.
그런데 어느 날 갑자기 Google 크롬이 실행되지 않고 계속 충돌하는 현상이 나타납니다. 특히 Chrome 35와 EMET 4.0의 조합에서 이 문제가 발생하지만, 사실 어떤 버전 조합에서든 비슷한 충돌이 일어날 수 있습니다. 완화 정책은 그대로 유지하면서도 브라우저가 정상적으로 작동하길 원하실 텐데요. 지금부터 이 문제를 해결하는 방법을 살펴보겠습니다.
문제 상황
크롬을 실행하려고 하면 그저 충돌할 뿐입니다. 딱히 유용한 디버그 정보도 많지 않습니다. 다만 Microsoft EMET이 개입하여 시스템 트레이에 알림 팝업이 뜨고, 보고서를 제출할 수 있는 옵션이 나타납니다. 이 보고서는 Microsoft가 문제를 조사하고 수정하는 데 도움이 될 수 있습니다. 결국 이는 일종의 오탐(false positive)이라고 볼 수 있는 상황인데, 엄밀히 따지면 EMET에는 진짜 오탐이 존재하지 않으며, 이는 프로그램의 잘못된 코딩 방식 등을 의미한다고 볼 수 있습니다.
이벤트 뷰어(Event Viewer)에서 확인할 수 있는 정보 역시 크게 도움이 되지 않습니다. 일반적인 예외(generic exception) 메시지만 있을 뿐이고, 여러 가지 메모리 주소에서 발생하기 때문입니다. 일반 사용자에게는 전혀 쓸모없는 정보죠. 하지만 적어도 단서는 확보한 셈입니다.
CallerCheck Failed:
PID : 0x2320/8992
TID : 3758
API Name : kernel32.LoadLibraryW
ReturnAddress: 0E2E8FB5
CalledAddress: 771348F3
StackPtr : 0035F684
해결 방법
별로 마음에 들지 않으실 수도 있지만, IT 분야의 고전적인 해결책을 소개하겠습니다. 바로 업그레이드입니다. 네, EMET을 최신 버전으로 업그레이드하세요. 당시 기준 최신 버전은 4.1입니다. 이 최신 버전에서는 Google 크롬이 아무 문제 없이 정상 작동합니다. 다소 단순해 보이는 방법이지만, 굳이 코드 깊숙이 파고들고 싶지는 않으시겠죠? 간단하고 우아한 해결책입니다.
결론
때로는 가장 좋은 해결책이 벤더에게 어려운 작업을 맡기는 것입니다. 문제를 너무 깊이 파고들지 마세요. 거기서 좋은 결과를 기대하기 어렵습니다. 대신 이미 향상된 호환성이 반영된 새 버전을 사용함으로써 문제를 우회하는 것이 현명합니다.
더욱 좋은 점은 EMET 4.1이 기존 버전에서 설정했던 모든 규칙과 설정을 그대로 유지한다는 것입니다. 또한 안정적이고 견고하며, 여기저기 흩어져 있던 몇 가지 버그도 수정되었습니다. 이 경우 업그레이드하는 것이 가장 스마트한 선택입니다. 매우 간단한 튜토리얼이지만, 몇몇 분들의 소중한 시간을 절약해 줄 수 있기를 바랍니다. 유익하게 활용하세요!
감사합니다.