저는 똑똑하고 지능적인 소프트웨어를 정말 좋아합니다. 여기서 '똑똑한 소프트웨어'란 단순히 눈앞의 불편함만 해결하는 도구가 아니라, 철학적으로 올바르게 설계되어 근본적인 전략적 문제를 풀어내는 도구를 의미합니다. 윈도우에서 이런 설계 철학의 대표적인 예로는 EMET과 익스플로잇 완화(Exploit Mitigation) 기능을 꼽을 수 있습니다. 두 기능 모두 구식이 된 블랙리스트 방식, 즉 악성 소프트웨어를 일일이 차단하는 필터링 모델을 사용하지 않습니다. 대신 잘못된 메모리 접근 명령 자체를 걸러내는 철학적 접근을 취합니다. 어떤 앱이든 동작에 문제가 있으면 그대로 차단되는 것이죠.
그래서 마이크로소프트가 최근 공개한 Windows Defender Application Guard라는 솔루션에 큰 관심을 갖게 되었습니다. 이 도구는 하드웨어 기반 격리(hardware isolation)를 활용해 위협을 차단한다고 합니다. 서명 데이터베이스도 없고, 끝없는 추적 경쟁도 없습니다. 대신 격리된 브라우징 환경을 제공하고, 그 안에서 무슨 일이 벌어지든 외부로 새어 나가지 않습니다. 말하자면 '라스베이거스처럼' 안의 일은 밖으로 나가지 않는다는 개념입니다. 그래서 바로 테스트를 시작해 보았습니다.
Application Guard 설치 과정
하지만 기대는 순식간에 무너졌습니다. Application Guard는 다른 두 보안 솔루션과 마찬가지로 기업용으로 설계된 기능인데, 다른 점이라면 최소 Windows 10 Pro가 필요하다는 것입니다. 제 테스트 머신에는 해당 에디션이 없었기 때문에 시도 자체가 실패로 끝날 것임을 알고 있었습니다. 그럼에도 테스트를 끝까지 진행하고 이 글을 쓰는 이유는, 결과와 상관없이 여기서 얻을 수 있는 교훈이 중요하다고 생각했기 때문입니다. 이 글의 마지막이 행복한 결말로 끝나지는 않겠지만, 적어도 허무하게 인터넷을 떠도는 무의미한 글만은 아닐 것입니다.
물론 여기에는 어느 정도 뻔뻔한 자기 홍보 요소도 숨어 있습니다(제가 아니라 마이크로소프트요). Application Guard는 Microsoft Edge를 격리 엔진으로 사용하며(내부적으로 Hyper-V가 작동), 이를 위해 Firefox와 Chrome용 브라우저 확장 프로그램도 함께 제공됩니다. 놀랍게 들리시나요? 맞습니다. Edge 탭을 격리 모드로 실행할 수 있게 해주는 확장 프로그램을 설치하는 방식입니다. 예전 Firefox의 IETab과 비슷하지만, 기반 기술은 다르고 호환성보다 보안에 초점이 맞춰져 있다는 차이가 있습니다.
Foxfire... 아니, Firefox 확장 프로그램부터 설치해 보았습니다. 설치 후 열린 탭에는 한 단계 더 진행해야 한다고 안내했고, 그다음 단계는 스토어에서 Application Guard 본체 앱을 받아오는 것이었습니다. 솔직히 이건 상당히 엉터리로 설계된 흐름이라고밖에 할 수 없습니다. 이유는 여럿 있습니다.

첫째, 제가 기억하기로는 Windows Enterprise 환경에서는 스토어를 거의 사용하지 않습니다. 둘째, Windows Phone이 안타깝게도 단종된 지금, 스토어라는 개념 자체가 무의미해졌으므로 사용자를 스토어로 안내하는 데 큰 가치가 없습니다. 셋째, App Guard 구성 요소는 제어판을 통해서도 설치해야 하는데, 4년이 지난 지금도 제어판은 설정 앱보다 여전히 유용하고 강력합니다. 넷째, 스토어에 접속하면 당연히 온라인 계정 로그인을 요구합니다. 로컬 계정을 사용하거나 기업 로그온 환경이라면 이 요구는 명백히 빗나간 설계입니다.

참고로 저는 운영 환경을 테스트하던 중이었는데, 스토어와 Windows Update 설정을 변경하고 관련 서비스를 비활성화해 둔 상태라 윈도우가 컴패니언 앱을 설치하지 못했습니다. 서비스를 잠시 켜고 앱을 설치한 뒤 다시 꺼두었습니다. 아주 간단한 작업이었죠.
그런데 문제는 그 다음이었습니다. 앱 설치를 진행하는 동안 Firefox 브라우징이 차단되었습니다. 그렇습니다. App Guard 확장 프로그램이 인터넷 연결을 막아버린 것입니다. 이것 역시 나쁜 설계입니다. 사용자에게 즉시 설정을 완료하라고 강요하면서도, 정작 설정 중 필요한 정보를 검색할 웹 접근조차 막아버리는 셈이니까요.

App Guard 확장 프로그램을 비활성화하면 우회할 수 있긴 하지만, 그래도 이해가 안 됩니다. 훨씬 우아한 방법은 충분히 있었을 텐데 말이죠. 예컨대 모든 구성 요소를 하나의 번들로 묶어 제공하거나, 설치 과정을 조각조각 나눠서 밀어붙이지 않으면 될 일입니다.

이 단계를 마치자 Firefox 확장 화면에는 또 다른 미완성 항목이 나타났습니다! 그리고 이것이 제가 해결할 수 없는 부분이었습니다. 바로 Home 에디션이라는 제약이었죠. 그런데 왜 처음부터 이 내용을 알려주지 않았을까요? 지금처럼 진행하다 보면 마치 스토어로 데려가 앱을 설치하게 만드는 게 목적인 듯한 느낌마저 듭니다.

정말 짜증이 났습니다. 시스템이 Home 에디션이라 기술 자체를 사용할 수 없다면 컴패니언 앱을 설치하게 할 이유가 없었기 때문입니다. 하지만 마이크로소프트는 같은 실수를 반복하는 모양새입니다. GWX를 통한 공격적 마케팅, 강제 업데이트 논란에 이어 이번엔 이런 식입니다. 프로페셔널하지 못합니다.
애초에 이런 소프트웨어가 진지한 사용자층을 겨냥한 것이라면, 그들은 스토어를 뒤질 리 없습니다. 이미 사실상 죽은 플랫폼이 된 스토어를 굳이 쓸 이유가 없으니까요(제 Lumia 950 같은 기기를 떠올리면 참으로 씁쓸합니다). 또한 상당수가 로컬 계정을 사용할 가능성이 높고, 기업 환경이라면 아예 다른 규칙이 적용됩니다.
마이크로소프트 입장에서는 Hyper-V와 Application Guard 같은 선택적 윈도우 기능 추가, 시스템 구성까지 모두 처리해 주는 단일 MSI 또는 EXE 파일 하나를 제공하고, 브라우저 확장 설정만 사용자에게 남겨두면 그만이었을 겁니다. 그게 끝입니다. 하지만 분명 어딘가에 '스토어'라는 체크박스가 있었고, 누군가는 그걸 체크해야 했던 모양입니다. 자세히 읽어보면 진단 데이터 전송 언급도 있고요. 한숨이 절로 나옵니다. 이들은 대체 언제 배울까요?
그리고 모든 것이 제대로 설치된다면, 그때야말로 실질적인 구성(configuration) 단계가 시작됩니다.
보안상 이점
Application Guard를 직접 테스트해 보기 전까지는 판단을 보류하겠습니다. 관심 있는 분은 ghacks의 관련 글을 읽어보시는 것을 추천합니다. 제 초라한 시도보다 더 많은 정보를 얻으실 수 있을 겁니다. 다만 저는 몇 가지 의문점을 갖고 있습니다. 만약 이 기능이 EMET이나 Exploit Mitigation과 같은 합리적인 철학 위에 만들어졌다면 훌륭한 제품일 겁니다. 하지만 말이죠. 첫째, Edge는 이제 Chrome과 동일한 엔진(Chromium)을 사용하므로 보안 및 샌드박싱 개념도 비슷합니다. 이 상황에서 Application Guard가 주는 추가 이점은 무엇일까요?
둘째, Application Guard는 Exploit Mitigation과 어떻게 공존할 수 있을까요? 저는 여러 프로그램에 완화(mitigation) 옵션을 적용해 두었지만 Edge에는 적용하지 않았습니다. 사용하지 않는 브라우저니까요. 그렇다면 익스플로잇에 강화된 제 Firefox가, 브라우저 자체의 기본 보안 수준과 무관하게, 강화되지 않은 Edge보다 더 안전하다는 뜻일까요?
Firefox 이야기를 좀 더 해보자면, Adblock이나 NoScript를 사용하는 사용자라면 이미 상당량의 노이즈와 쓰레기 트래픽을 걸러내고 있을 겁니다. 그리고 그 노이즈들이 하필 보안 위험과 연관된 경우가 많죠. 그렇다면 Application Guard는 위의 방법들로 커버되지 않는 어떤 추가 이점을 제공하는 걸까요?
가장 중요한 질문...
Home 에디션 사용자는 이 좋은 기능을 사용할 수 없습니다. 하지만 실제 테스트 전까지 읽은 자료만으로 판단하자면, 정말 좋은 기능이라면 다음과 같은 근본적인 질문이 생깁니다:
Application Guard가 정말 중요하고 효과적인 기능이라면, 왜 Home 에디션 사용자는 보호 대상에서 제외되는 걸까요? 반대로 Home 에디션 사용자가 이미 충분한 보안을 갖추고 있다면, Application Guard에는 실질적인 가치가 있는 걸까요?
결론
Application Guard는 정말 매력적인 개념으로 들립니다. 하지만 현재 구현 상태는 거칠고 미숙합니다. 첫째, Home 에디션 사용자가 배제되어 있습니다. 물론 기업 대상 기능이라는 건 이해합니다. 둘째, 설치 과정이 번거롭고 난잡합니다. 시스템이 호환되지 않는다면 스토어 단계 자체가 불필요한데, 브라우저 확장 화면에서 조각조각 확인 절차를 진행할 이유가 없습니다. 그리고 어차피 스토어 단계는 불필요합니다. 모바일 시대 이후의 마이크로소프트에서 스토어는 실행 가능한 배포 방식이 아니며, 일반적인 Pro 또는 Enterprise 사용 환경과도 맞지 않습니다. 셋째, 보안 측면의 실질적 효과, 그리고 격리 환경에서 Edge를 사용하는 것의 가치에 대한 실질적인 의문이 남습니다.
훌륭한 보안 기능 이상의 무언가를 느낄 수밖에 없습니다. 약 15년간 꾸준히 시장 점유율이 하락해 온 마이크로소프트 브라우저를, 어떻게든 사람들이 쓰게 만들려는 시도로 보이기도 합니다. 컨테이너 + 격리라는 전반적인 아이디어 자체는 흥미롭습니다. 신선하고, 혁신적이며, 제 취향의 재미있는 발상입니다. 하지만 이 기능이 정말 근본적인 문제, 즉 사람들이 브라우저로 저지르는 어리석은 행동을 해결해 줄까요? 그리고 현대의 Firefox나 Chrome에서 소위 '드라이브바이 익스플로잇(drive-by exploit)'이 여전히 현실적인 위협일까요? 글쎄요, 어쩌면 그럴지도 모릅니다.
언젠가 실질적인 답을 찾을 수 있기를 바랍니다. Application Guard가 EMET 등과 비교해도 손색없이 견고하고 유연한 도구라면, 브라우저 엔진 논란과 별개로 가치 있는 기능이 될 수 있을 것입니다. 하지만 지금으로서는 첫인상이 다소 삐걱거렸던 만큼 회의적인 시각을 유지하고 있습니다. 다음 기회에 계속 다루어 보겠습니다.
감사합니다.