나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-03-25 19:33:07

XSHM

1. 개요2. 원리3. 특징4. 논란
4.1. 법률적인 다툼의 소지4.2. 사용자의 사생활 침해4.3. 보안 문제
5. 사례6. 대응책7. 의의8. 외부 링크9. 관련 문서

1. 개요

XSHM (Cross(X)-Site History Manipulation, 또는 CSHM)
교차 사이트 히스토리 조작

웹 사이트의 스크립팅을 통해 공격자가 사용자의 브라우저 히스토리를 조작하여, 사용자가 브라우저에서 뒤로가기를 통해 이전 페이지로 되돌아갈 때 원래의 페이지 대신에 다른 페이지로 바꿔치기하는 기법이다.

브라우저 히스토리 조작(Browser History Manipulation) 또는 브라우저 뒤로가기 조작(Browser Previous Page Manipulation) 기법이라고 불리기도 한다.

이러한 기법을 사용하여 악의적으로 광고 페이지에 대한 조회수를 늘리는 것을 광고 납치라고 한다. 심각한 경우에는 해킹 수법으로서 활용되는 경우도 보고되고 있다.

2. 원리

XSHM 공격은 최근에 들어서 출몰하기 시작하였다. 광고를 통한 비즈니스 모델이 생긴 2010년대부터 유행하기 시작하였는데, 광고로 수익을 내는 사이트 운영자가 사용자들이 보다 많은 광고를 접하도록 유도하여 페이지 뷰를 늘려 자신들의 광고 수익을 늘리는 하는 방법을 모색하게 되었다. 결국 공격 대상자의 컴퓨터에 악성코드를 심지 않고도 다음과 같이 웹에서 동작하는 스크립트만으로 사이트 방문자들의 브라우저를 조작하는 기법이 생기게 되었다.
1. 사용자가 사이트 A에서 사이트 B로 이동한다. 이때 최근 히스토리는 A → B로 되어있다.
2. 사이트 B에서 악의적인 스크립트를 통해 사용자의 최근 히스토리를 A → C → B로 조작한다.
3. 사용자가 뒤로가기를 할 경우에 사이트 A 대신에 사이트 C가 보인다.
XSHM 공격이 진행되는 과정
1. 사용자가 사이트 A에서 사이트 B로 이동한다. 이때 최근 히스토리는 A → B로 되어있다.
2. 사이트 B에서 악의적인 스크립트를 통해 사용자의 최근 히스토리를 A → C → D → B로 조작해서 사이트 D에 광고를 넣고 사이트 C에 브라우저의 앞으로가기 버튼을 누른 효과를 주는 납치태그 혹은 사이트 D로 이동하는 리다이렉트를 넣는다.
3. 이 경우 뒤로가기로는 광고가 있는 사이트 D를 빠져나가지 못한다.
XSHM 공격이 진행되는 과정 2
위와 같은 스크립트를 짜기 위하여 HTML5에서 정의된 히스토리 API를 사용한다.

히스토리 API에 있는 pushState() 함수와 replaceState() 함수를 사용하여 사용자의 히스토리를 변조할 수 있다. 이러한 함수가 포함된 스크립트를 웹 사이트에 포함시켜 사용자의 브라우저를 후킹하게 된다.

3. 특징

이 공격의 주된 타깃은 모바일 기기로 검색 엔진을 통해 웹서핑을 하는 사용자들이다. 각종 검색 엔진의 모바일 웹에서는 검색 결과와 연관된 페이지를 새 탭으로 띄워주기보다는 기존의 탭에서 바로 해당 페이지로 이동시키는데 XSHM 공격은 이런 점을 노린 것이다.

몇몇 사이트의 경우에는 이렇게 해서 접속했을 때에 이전의 검색 결과가 나타난 페이지와 자신 사이의 히스토리에 사용자가 접속한 적이 없는 페이지를 끼워넣어서 뒤로가기를 했을 때에 검색 엔진으로 되돌아가는 것이 아니라 광고로 떡칠된 사이트나 불순한 내용의 사이트로 이동시킨다.

구글 검색도 예전에는 데스크탑 웹에서 다른 사이트를 새 탭을 통해 이동시켰으나 현재는 기존 탭에서 바로 해당 페이지로 이동시킨다. 이 때문에 데스크탑 웹에서도 모바일 웹에 비해서는 빈도가 적지만 여전히 XSHM 공격이 일어나고 있다.

HTML5가 상용화되면서 XSHM 공격은 더욱 빈번해졌으며 그 이전에도 자바스크립트를 통해 사이트 방문자들의 브라우저 히스토리를 조작하는 공격이 빈번하였다.

XSHM 공격을 하는 사이트로 인해 뒤로가기를 원래 한 번 해야 할 것을 두 번 하는 정도는 양반이며, 뒤로가기를 여러 번 눌러도 광고 루프에 갇히는 경우도 생긴다. 이 경우가 제일 악질인데 이전 페이지와 자신 사이의 히스토리에는 뒤로가기를 무력화시키는 스크립트로 이루어진 빈 페이지를 추가하고 사용자로 하여금 여러번 뒤로가기를 눌러도 소용없이 탭을 닫지 않는 이상에 계속해서 광고에 갇히게 된다.

4. 논란

특정 개인이 아닌 사기업에서도 자신들의 웹 사이트를 통해 광고 수익을 추구하기 위하여 암묵적으로 XSHM 공격을 행하고 있다는 점에서 상당한 논란을 불러 일으키고 있다.

4.1. 법률적인 다툼의 소지

이러한 행위가 해당 사이트의 이용 약관에도 규정되어 있지 않고 사용자들에게 동의조차도 구하지 않은 상황에서 버젓이 무단으로 이루어지고 있다. 법률상의 분쟁이 발생할 수 있는 여지가 매우 높다. 또한, 사용자의 브라우저에 허가없이 접근하여 히스토리를 조작하는 것은 해킹 행위로 해석될 여지가 있다. 그리고 해킹 행위는 명백한 범죄 행위이다.

그러나 몇몇 뉴스 사이트를 제외하면, 이런 짓을 공공연하게 하는 곳들은 대부분 잡혔다면 진작에 처벌받았을 불법적인 사이트이므로 큰 차이는 없다.

4.2. 사용자의 사생활 침해

원래 히스토리 API는 XSHM 공격을 위하여 만들어진 웹 API가 아님에도 불구하고 웹 개발자들이 자신들의 과도한 이윤 추구를 위하여 악용되고 있다. 그리고 이로 인해 브라우저의 제어권이 웹 사이트로 넘어가며 사용자들은 자신들의 브라우저에서 히스토리 목록이 악의적으로 조작당하고 원치 않거나 상당히 불순한 내용의 광고를 보게되는 정신적인 피해를 입고 있다. 사실 히스토리 API가 존재한다는 사실만으로도 사용자의 브라우저에 대한 사생활 침해 논란 및 보안 문제가 심각해질 수밖에 없다.

위에서도 언급되었다시피 광고 납치 중에서 최악의 상황인 경우 XSHM 기법을 통해 아무리 뒤로가기를 빠르게 연타해도 광고에서 빠져나갈 수 없는 상황이 보고되고 있다.

4.3. 보안 문제

사용자의 브라우저 내에 있는 히스토리를 외부인이 마음대로 조작하는 것 자체로도 브라우저의 제어 권한에 대한 보안 문제가 심각하다고 할 수 있다. 그리고 히스토리에 대한 접근 권한을 제어할 수 있는 브라우저는 Chrome 정도가 전부고, 거기서 막히기 전까지는 아예 존재하지 않았다.

또한, 해커들이 특정 웹 사이트를 해킹한 다음 자신들의 악성코드를 설치하는 악성 스크립트를 웹 사이트에 삽입한 다음 XSHM 공격을 통해 해당 악성코드를 유포하는 경우도 생기고 있다.

5. 사례

국내의 경우에는 언론사들의 모바일 웹 사이트에서, 해외의 경우에는 토렌트 사이트를 중심으로 암묵적으로 XSHM 공격이 빈번하게 이루어지고 있다.

6. 대응책

크롬이나 삼성 인터넷 등 일부 브라우저는 뒤로가기 버튼을 꾹 누르거나 길게 클릭하면 이전 히스토리가 보이므로 납치 페이지 이전으로 돌아갈 수 있다. 기술적 대응이 아니라 근본적으로 막는 방법은 아니다.

크로뮴 엔진을 기반으로 한 네이버 웨일에서 '뒤로가기 조작방지'를 활성화하여 대응이 가능하다.

삼성 인터넷 11.2 이상 버전에서도 원하지 않는 웹페이지 차단이라는 설정으로 대응이 가능하다.

7. 의의

브라우저 히스토리를 조작하여 광고를 삽입하는 언론사의 행위에 대해서 공론화가 되자 포털 사이트를 중심으로 인터넷 언론 규정을 개편하였다.

2019년, 네이버카카오의 연합으로 만들어진 뉴스제휴평가위원회에서는 이용자에게 불쾌한 광고 경험을 제공하는 언론사에 대해서 해당 언론의 기사 노출을 제한하기로 하였다. 개정된 가이드라인에 따르면 기사가 나오는 페이지에 광고가 불필요하게 많거나 가독성을 해치는 경우, 뒤로가기를 할 경우에 광고가 뜨게 하는 경우 해당 언론사는 포털 검색이나 뉴스 메인에서 퇴출되는 불이익을 받게된다.

이로 인해 현재는 뒤로가기 광고를 넣는 언론사는 줄어들었지만 구글 검색을 통해 들어올 경우에는 여전히 뒤로가기 광고를 보여주는 뉴스 사이트들이 있다. 이 역시도 네이버다음의 검색 페이지를 통해서 접속하는 시나리오를 기준으로 평가하는 뉴스제휴평가위원회의 가이드라인에 다한 허점을 노린 것으로 볼 수 있고, 사용자가 네이버 및 다음 검색 페이지를 통해 접속했는지를 확인하기 위해 HTTP 참조자나 브라우징 히스토리에 접근하게 되므로 사생활 침해의 소지가 높다.

8. 외부 링크

9. 관련 문서



[1] 2021년 로고를 바꾼 즈음하여 XSHM 공격을 멈췄다가 2022년 1월 재개.