삼성 갤럭시 스토어에 공격자가 원격으로 애플리케이션 설치, 실행 등 악의적으로 사용자의 삼성 기기를 이용할 수 있었던 버그가 존재했다.
이는 갤럭시 스토어 애플리케이션 내 삼성의 마케팅 및 콘텐츠 서비스(Marketing & Content Service)를 위한 딥 링크의 구성 방식이 잘못돼 발생한 버그였다. 특정 딥 링크를 처리할 때 발생하는 XSS(Cross Site Scripting) 취약점과 관련된 버그다.
사용자가 애플리케이션에 있는 링크나 프로그램을 클릭하면 해당 요청으로 웹의 자원 식별자인 URI(Uniform Resource Identifier)가 호출된다. 호출 후 안드로이드 시스템에서는 다음 작업을 위해 웹 URI를 받을 때까지 계속 요청한다. 이 과정을 딥 링크(deep link)라고 한다. URI는 인터넷 자원의 이름을 식별하기 위한 주소고, URL은 웹의 정확한 위치를 나타내는 주소다.
XSS 취약점은 교차 사이트 스크립팅 혹은 크로스 사이트 스크립팅이라고 한다. 공격자가 공격자의 의도한 대로 스크립트(script)를 작성하고 그 스크립트가 다른 사용자에게 전달되는 취약점을 말한다. 이를 공격에 사용하면 그대로 교차 사이트 스크립팅 공격이다. 공격자가 원하는 대로 스크립트를 작성하고, 사이트나 프로그램의 버그를 이용해서 그 스크립트를 심어 둔다. 이 상태에서 사용자가 웹 브라우저나 기타 접속 경로에서 별도의 검증 없이 실행시키면 그대로 공격자가 의도한 대로 피해를 받는다. 예를 들어, 공격자가 스크립트에 악의적인 웹 사이트로 이동하는 요청을 작성했다면 사용자는 그대로 악의적인 사이트에 접속할 수밖에 없다. 이외에도 공격자가 스크립트 내에 웹 사이트를 변조한다거나 사용자의 로그인 세션 정보를 탈취하는 등 악의적인 행위를 심어 뒀다면 사용자는 공격에 당하게 된다.
정리하자면 마케팅 및 콘텐츠 서비스 웹 사이트를 위한 딥 링크 처리 방식이 잘못됐고, 딥 링크가 포함된 웹 사이트의 링크에 접속할 때 갤럭시 스토어 애플리케이션의 웹뷰(Webview)에서 XSS 공격으로 자바스크립트(Java Script) 코드를 실행시킬 수 있었다. 웹뷰는 스마트폰 애플리케이션에 웹 페이지를 표시해 준다.
잠재적으로 삼성의 마케팅 및 콘텐츠 서비스 웹 사이트를 포함해 사용자가 사용하고 있는 삼성 기기에도 피해가 갈 수 있었던 공격이다.
공격자는 이 상황에서 XSS 공격을 통해서 사용자가 브라우저나 다른 애플리케이션에서 웹 사이트를 방문할 때 스크립트 안에 악성코드를 삽입하고 실행할 수 있었다. 만약 공격자가 삼성 디바이스를 사용하는 사용자에게 악성코드 기반 애플리케이션을 다운로드하도록 스크립트를 작성한다면 사용자의 기기는 별다른 검증 없이 그대로 악성 앱을 설치할 수 있었다.
반면 현실적으로 공격자가 사용자에게 이 공격을 성공하려면 HTTPS(Hyper Text Transfer Protocol over Secure) 프로토콜과 크롬(Chrome)의 CORS(Cross-Origin Resource Sharing) 제한부터 우회해야 한다.
HTTPS는 일반 월드 와이드 웹(World Wide Web) 프로토콜인 HTTP(Hyper Text Transfer Protocol)보다 보안이 더 강화된 버전이다.
CORS는 교차 출처 리소스 공유라고 하고, 추가적인 정보를 이용해서 브라우저가 실행 중인 애플리케이션에 접근 권한을 부여하도록 하는 메커니즘이다. 쉽게 말하자면 다른 외부 출처의 리소스가 내부에 접근하도록 허용하는 것이라고 이해하면 된다.
하지만 크롬 브라우저에서는 CORS가 보안상의 이유로 제한이 걸려 있다. 브라우저에서부터 보안을 위해 외부 리소스를 사용하지 않고 오직 내부 리소스만 사용할 수 있도록 제한해 두는 것이다. 동일 출처만 허용하는 정책으로, XSS 보안 취약점을 이용한 공격을 방어하는 방법 중 하나다.
보안 결함으로 인해 갤럭시 스토어 내부에 XSS 취약점이 존재했지만 실제 피해로 이어지지 않았던 이유도 HTTPS와 크롬의 CORS 제한이 설정돼 있었기 때문이다.
해당 버그는 갤럭시 스토어 4.5.32.4 버전에서만 발생했으며 현재는 패치 완료된 상태다.
테크플러스 에디터 박효정
tech-plus@naver.com
[fv0012]
댓글0