3줄 요약
1. 기존의 클릭재킹 공격을 한층 업그레이드 시킨 새 기법 등장.
2. 이름은 더블클릭재킹으로, 첫 번째 클릭과 두 번째 클릭 사이에 악성 요소를 삽입하는 게 핵심.
3. 브라우저 개발사들이 이 문제를 인지하고 새 브라우저 만드는 게 중요.
[보안뉴스 문가용 기자] 클릭재킹(clickjacking)은 이제 너무나 흔한 공격 기술이다. 10년 넘게 공격자들 사이에서 꾸준히 사용되어 오고 있으며, 당하는 사람들마저도 익숙한, 그런 유형의 공격이라고 할 수 있다. 그런데 이 유행이 슬슬 바뀌려는 조짐이 보이고 있다. 클릭재킹을 넘어, 더블클릭재킹이라는 것이 등장한 것이다.
[이미지 = gettyimagesbank]
클릭재킹이란
먼저 클릭재킹이란 click(클릭)과 hijacking(납치)의 합성어로, 말 그대로 사용자의 마우스 클릭을 공격자가 훔치는 것을 의미한다. 악성 웹사이트를 만들 때 보이지 않는 버튼을 만든 후, 이를 다른 콘텐츠로 위장시켜 클릭을 유도한다면 공격자는 그 클릭을 통해 악성 프로그램을 설치한다거나 다른 웹사이트로 강제 접속시킬 수 있게 된다.
“하지만 최근 브라우저들은 기본적으로 이러한 공격에 대한 차단 기술을 탑재하고 있습니다. 게다가 사용자들도 점점 수상한 것들에 클릭하지 않기 시작했습니다. 그러면서 클릭재킹으로 먹고 사는 게 점점 힘든 일이 되어가고 있기도 합니다. 물론 클릭재킹이 고대의 유물이 된 건 아니고, 여전히 유효한 공격 기술입니다. 공격자들도 방어자들의 변화에 맞춰 전술을 변화시키고 있고요. 그 변화 끝에 나온 게 더블클릭재킹일 수 있습니다.” 보안 전문가 파울로스 이벨로(Paulos Yibelo)가 자신의 블로그를 통해 한 설명이다.
더블클릭재킹 해부
이벨로는 더블클릭재킹을 한 마디로 요약해 “한 순간의 타이밍과, 사건이 발생하는 순서 사이의 독특한 특징을 악용하는 공격”이라고 설명한다. 그러면서 공격의 순서를 다음과 같이 정리한다.
1) 공격자는 버튼을 포함한 웹 페이지를 생성한다. 이 버튼은 새 창을 여는 기능을 가지고 있다.
2) 사용자가 이 버튼을 클릭하면 새 창이 열리며 사용자에게 “더블클릭 하시오”라는 안내를 내보낸다. 동시에 이 새 창은 window.opener.location을 사용해 부모 창의 위치를 다른 곳으로 옮긴다.
3) 위치가 바뀐 부모 창 안에는 인증 페이지 등 실제 공격에 악용될 페이지가 포함된다.
4) 이러는 동안 제일 위에 있는 “더블클릭 하시오” 창은 여전히 제이 위에 남아있다.
5) 사용자가 안내에 따라 더블클릭을 하는데,
6) 첫 번째 클릭이 이뤄지는 순간에 제일 위에 있던 “더블클릭 하시오” 창이 닫힌다.
7) 창이 닫히면서 부모 창 안의 인증 페이지(혹은 다른 공격용 페이지)가 순간적으로 노출되고,
8) 사용자는 더블클릭을 하고 있었으므로 노출된 페이지 위에서 두 번째 클릭을 하게 된다.
9) 사용자는 자기도 모르게 공격자를 인증해 주거나 악성 코드를 실행하는 등 두 번째 클릭 때 누른 페이지의 목적에 맞게 범인을 돕게 된다.
“즉 더블클릭재킹은 더블클릭의 첫 번째 클릭과 두 번째 클릭 사이의 그 찰나같은 순간을 이용한 공격이라고 할 수 있습니다. 공격자는 캡챠처럼 보이는(그러므로 진짜처럼 보이는) 창을 열거나 닫는 등의 수법을 이용해 사용자들의 클릭과 클릭 사이의 그 미세한 틈을 노릴 수 있습니다.”
이 공격 기법이 기존 클릭재킹보다 위험하다고 볼 수 있는 건 왜일까? 이벨로는 여섯 가지 이유를 꼽는다. “일단 클릭재킹에 대한 방어 기술들을 대부분 우회한다는 게 가장 큽니다. 그러면서도 사용자의 개입을 최소화 하는 공격이기도 하지요. 실제 상황에서 체감하는 한 번 클릭이나 더블클릭에는 큰 차이가 없으니까요. 세 번째로 이는 새로운 공격 기법이기 때문에 여러 공격자들이 창의적으로 연구할 가능성이 높고, 실제 대부분의 웹사이트가 이 공격에 취약한 상태이기도 합니다. 웹사이트만이 아니라 플러그인도 얼마든지 이 공격에 악용될 수 있고, 브라우저 위치 변경도 피해자의 눈을 속임으로써 전혀 모르게 할 수도 있습니다. 은밀한 공격도 가능하다는 겁니다.”
어떻게 대비해야 할까?
이벨로는 자바스크립트를 활용해 중요한 버튼을 기본적으로 비활성화하는 방식으로 이 문제에 접근했다. 즉 “사용자의 마우스 이동이나 키보드 입력 등, 뭔가 의도가 다분한 제스처가 발생하기 전까지 페이지 내 중요한 버튼이 비활성화 된다면 더블클릭재킹의 위험이 상당히 줄어든다”는 발상인 것이다.
“그렇게 하면 모든 제출 버튼이 초기에는 비활성화 됩니다. 사용자가 마우스를 움직이거나 탭 키를 누르는 등의 동작을 하기 시작하면 버튼이 활성화 됩니다. 이렇게만 해두어도 숨겨진 작업을 실행하기 어려워지고, 심지어 사용자들 입장에서의 웹 탐색 경험이 크게 변하지도 않습니다. 사실 사용자 편에서는 뭐가 변했는지도 알아채기 힘듭니다.”
하지만 이벨로의 이러한 대처 방안은 단기적 해결책이 될 뿐이다. 보다 장기적으로 더블클릭재킹의 위험을 완화시키려면 브라우저를 개발하는 회사들이 더블클릭재킹에 대해 이해하고 방어 기술을 브라우저에 탑재시켜야 한다. “클릭재킹 공격이 처음 문제가 됐던 2008년에도 자바스크립트를 가지고 단기적인 완화 대책을 마련했었습니다. 그러다가 브라우저 내에 독특한 방어 기술들이 포함되기 시작했고요.”
그래서?
일반인이나 보안 담당자들이 더블클릭재킹에 대비하기 위해 지금 당장 할 수 있는 일은 크게 두 가지다. 하나는 브라우저 개발사들의 소식에 귀를 기울여 더블클릭재킹에 대한 방어 대책이 마련된 제품을 사용하기 시작하는 것이다. 물론 그러한 제품들이 언제 나올지, 그 전에 브라우저 개발사들이 더블클릭재킹 공격의 대책을 마련하고 있는지는 아직 명확히 알 수 없다. 따라서 하염없는 기다림이 될 수 있다.
그 다음, 사이트나 웹 서비스, 웹 애플리케이션이나 플러그인 개발자라면 민감한 페이지들을 하나하나 찾아내는 일부터 시작할 수 있다. 인증이나 결제 승인이 이뤄지는 페이지들이 여기에 포함될 수 있는데, 그런 모든 페이지들에 방어 스크립트를 적용하면 한결 안전해질 것이다.
기존의 클릭재킹 공격에 대한 경계심을 계속해서 유지하는 것도 중요하다. 더블클릭재킹이나 클릭재킹인, ‘속지 않아야 한다’는 방어자의 입장에서는 크게 다를 게 없다. 인터넷을 돌아다니다가 무심코 아무 거나 클릭하지 말아야 한다는 걸 기억하면 클릭재킹과 더블클릭재킹 모두를 어느 정도 막을 수 있다. 더불어 더블클릭을 요구하는 창이나 안내 문구가 나온다면 함부로 응하지 말고 더블클릭이 왜 필요한지, 그런 서비스를 제공하는 회사가 어디인지부터 알아보는 게 좋다.
더블클릭재킹 공격을 구현한 개념증명용 코드와, 개발자들이 즉시 사용할 수 있는 실제 방어 스크립트는 1월 9일 발간되는 프리미엄 리포트 내 보안뉴스 확장판을 통해 열람이 가능해질 전망입니다.
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>