Computer >> 컴퓨터 >  >> 스마트폰 >> 스마트폰

안드로이드 기본 브라우저의 심각한 보안 결함, 킷캣 업그레이드를 미룰 이유가 없다

아직 안드로이드 4.4 킷캣(KitKat)으로 업그레이드하지 않으셨나요? 지금 소개할 내용이 업그레이드를 결심하는 데 결정적인 이유가 될지도 모릅니다. 킷캣 미만 버전 스마트폰에 탑재된 기본 브라우저에서 심각한 보안 취약점이 발견되었는데, 이를 악용하면 악성 웹사이트가 다른 웹사이트의 데이터에 접근할 수 있습니다.

보안 연구원 라파이 발로흐(Rafay Baloch)가 처음 발견한 이 문제는, 악성 웹사이트가 다른 프레임에 임의의 자바스크립트를 삽입할 수 있게 만듭니다. 그 결과 쿠키가 유출되거나 웹사이트의 구조와 마크업이 직접 조작될 위험이 생깁니다.

보안 업계도 이를 심각하게 받아들이고 있습니다. 유명한 보안 테스트 프레임워크 메타스플로잇(Metasploit)을 개발한 Rapid7은 이 문제를 두고 '프라이버시의 악몽'이라고 표현했습니다. 이 공격이 어떻게 작동하는지, 왜 위험한지, 그리고 어떻게 대응해야 하는지 하나씩 살펴보겠습니다.

무력화된 기본 보안 원칙, 동일 출처 정책(SOP)

이러한 공격을 원천적으로 차단해야 하는 기본 원칙이 바로 동일 출처 정책(Same Origin Policy, SOP)입니다. 간단히 말해, 한 웹사이트에서 실행되는 클라이언트 측 자바스크립트는 다른 웹사이트에 간섭하거나 접근할 수 없어야 한다는 규칙입니다.

이 정책은 1995년 넷스케이프 내비게이터 2(Netscape Navigator 2)에서 처음 도입된 이후 웹 애플리케이션 보안의 근간이 되어 왔습니다. 모든 웹 브라우저가 필수 보안 기능으로 이 정책을 구현하고 있기 때문에, 실제 환경에서 이런 유형의 취약점이 발견되는 일은 극히 드뭅니다.

SOP가 어떻게 작동하는지 더 깊이 이해하고 싶다면 아래 영상을 참고하세요. 독일에서 열린 OWASP(Open Web App Security Project) 행사에서 촬영된 자료로, 지금까지 본 SOP 설명 중 가장 훌륭한 것 중 하나입니다.

https://www.youtube.com/watch?v=WnjZJ38YEB4

브라우저가 SOP 우회 공격에 취약하다면 피해 범위는 상상 이상으로 넓어집니다. 공격자는 HTML5 명세에 도입된 위치 정보 API를 활용해 피해자의 현재 위치를 알아내는 것은 물론, 로그인 세션이 담긴 쿠키까지 훔칠 수 있습니다.

다행히 대부분의 브라우저 개발사는 이런 공격을 매우 중요한 문제로 다룹니다. 그렇기에 이런 공격이 실제 환경에서 발견되었다는 사실은 더욱 주목할 만합니다.

공격은 어떤 방식으로 작동할까?

SOP의 중요성과, 안드로이드 기본 브라우저의 치명적 결함이 공격자로 하여금 이 핵심 보안 장치를 우회하게 만들 수 있다는 점은 이제 알겠습니다. 그렇다면 구체적으로 어떤 원리로 작동하는 걸까요?

라파이 발로흐가 공개한 개념 증명(PoC) 코드는 대략 다음과 같은 구조였습니다.

[※ 현재 해당 코드는 삭제됨]

먼저 코드에는 아이프레임(iFrame)이 사용되었습니다. 아이프레임은 하나의 웹페이지 안에 다른 웹페이지를 삽입할 수 있게 해주는 HTML 요소입니다. SEO에 부정적인 영향을 준다는 이유로 예전만큼 널리 쓰이지는 않지만, 여전히 HTML 명세의 일부이며 아직 폐기(deprecated)되지는 않았습니다.

그다음에는 입력 버튼을 나타내는 HTML 태그가 등장합니다. 여기에는 특수하게 조작된 자바스크립트(끝에 붙은 '\u0000' 문자에 주목하세요)가 담겨 있어, 버튼을 클릭하면 현재 웹사이트의 도메인 이름을 출력하도록 되어 있습니다. 그런데 안드로이드 브라우저의 오류 탓에 이 코드는 아이프레임의 속성에 접근해 버리고, 결과적으로 'rhainfosec.com'이라는 외부 도메인이 자바스크립트 경고창에 그대로 출력됩니다.

안드로이드 기본 브라우저의 심각한 보안 결함, 킷캣 업그레이드를 미룰 이유가 없다

구글 크롬, 인터넷 익스플로러, 파이어폭스에서 같은 공격을 시도하면 단순히 오류로 처리됩니다. 브라우저에 따라 자바스크립트 콘솔에 '공격이 차단되었다'는 로그가 남기도 합니다. 그런데 안드로이드 4.4 미만 기기의 기본 브라우저는 이유를 알 수 없이 이 차단 동작을 수행하지 않습니다.

안드로이드 기본 브라우저의 심각한 보안 결함, 킷캣 업그레이드를 미룰 이유가 없다

도메인 이름 하나를 출력하는 것 자체는 대단해 보이지 않을 수 있습니다. 하지만 다른 웹사이트의 쿠키에 접근하고 임의의 자바스크립트를 실행할 수 있다면 이야기는 완전히 달라집니다. 다행히 우리가 취할 수 있는 대응책이 있습니다.

어떻게 대응해야 할까?

사용자가 선택할 수 있는 방법은 몇 가지 있습니다. 첫 번째이자 가장 확실한 방법은 안드로이드 기본 브라우저 사용을 중단하는 것입니다. 기본 브라우저는 낡았고 보안에 취약하며, 요즘 시장에는 훨씬 뛰어난 대안이 넘쳐납니다. 구글은 안드로이드용 크롬을 출시했고(아이스크림 샌드위치 이상 버전 지원), 파이어폭스와 오페라의 모바일 버전도 이용할 수 있습니다.

특히 파이어폭스 모바일은 주목할 만합니다. 훌륭한 브라우징 경험을 제공할 뿐 아니라, 모질라의 자체 모바일 OS인 파이어폭스 OS(Firefox OS)용 앱을 실행할 수 있고, 다양한 유용한 애드온도 설치할 수 있습니다.

https://www.youtube.com/watch?v=zCe_1DxBQDc

보안에 더욱 철저하고 싶다면 파이어폭스 모바일용 NoScript 포팅 버전도 있습니다. 다만 대부분의 웹사이트는 클라이언트 측 기능 구현에 자바스크립트를 크게 의존하기 때문에, NoScript를 켜면 상당수 사이트가 정상적으로 작동하지 않을 수 있습니다. 어쩌면 이것이 제임스 브루스(James Bruce)가 NoScript를 '악의 삼위일체(trifecta of evil)'라고 부른 이유일지도 모르죠.

마지막으로, 가능하다면 안드로이드 브라우저와 운영체제를 모두 최신 버전으로 업데이트하는 것이 좋습니다. 구글이 추후 이 버그에 대한 수정 패치를 배포하더라도 즉시 보호받을 수 있기 때문입니다.

참고로 이 문제가 안드로이드 4.4 킷캣 사용자에게도 영향을 줄 가능성이 있다는 소문이 있습니다. 다만 아직 브라우저 교체를 권할 만큼 확실한 근거는 확인되지 않았습니다.

결코 가볍지 않은 프라이버시 문제

이번 사건은 분명 스마트폰 보안의 중대한 문제입니다. 하지만 다른 브라우저로 갈아타기만 해도 사실상 이 공격으로부터 자유로워집니다. 다만 안드로이드 운영체제 전반의 보안성에 대해서는 여전히 풀어야 할 과제가 많습니다.

여러분은 어떻게 하실 건가요? 더 안전하다고 알려진 iOS나 (필자가 개인적으로 좋아하는) 블랙베리 10으로 갈아탈 생각이신가요? 아니면 안드로이드를 계속 사용하면서 Paranoid Android나 OmniRom 같은 보안 강화 커스텀 롬을 설치하실 건가요? 아니면 그다지 걱정하지 않으신다면?

여러분의 생각을 댓글로 들려주세요. 기대하겠습니다!