20080420 :: 당신의 주민번호는 안녕하십니까

옥션이 사용자의 패스워드를 암호화하지 않고 텍스트 그대로 저장했더라는 흉흉한 소문이 돌고 있습니다. 사실인지 확인은 되지 않은 듯 합니다만, 좀 어처구니 없기는 하네요. 바로 직전 글에서 쓸데없이 주민등록번호를 요구하는 사이트들의회원가입 절차도 문제가 있고, 또 거기에 익숙해지다보니 꽤나 중요한 개인정보인 주민등록번호를 아무 거리낌없이 웹으로 전송하는 사용자들의 보안 의식 부재도 문제가 있다고 말씀드린 바 있습니다만, 오늘은 이런 싸이트들이 입력받은 회원들의 개인정보를 얼마나 소중히 다뤄주시고 있는지, 한 번 살펴보도록 하겠습니다.

SQL 강제 주입

SQL 강제 주입이라는 기법이 있습니다. 동적으로 쿼리문을 생성하는 사이트들에 대해 폼으로 전송하는 아이디나 이메일 주소 따위의 내용에 별 거 아닌 거 같은 폼 데이터를 전송하여 쿼리문을 바꿔치기 하는 수법입니다. 예를 들어 입력받은 사용자 아이디와 비밀번호를 체크하여 인증하는 쿼리중에 다음과 같은 IF 문이 있다고 합시다.

IF ‘DB속의 사용자 ID’‘입력받은 사용자 아이디’ AND ‘입력받은 패스워드’ = ‘DB속의 사용자패스워드’ ….

이런 방식으로 동적으로 쿼리문을 만들게 될 때 ID 란에 ‘ or 1=1 — 이라고 입력한다면 위의 쿼리는 다음과 같이 됩니다.

IF ‘DB속의 사용자 ID’ = or 1=1 — ‘입력받은패스워드’ = ‘DB속의사용자패스워드’ …

즉, ID를 비교하는 구문을 무조건 참으로 만든 다음(1=1) 이후 부분은 모두 주석처리 해버리는 겁니다.

이러한 기법은 동적으로 쿼리를 생성하지 않거나, 문제가 될 수 있는 특수기호를 치환하는 방법으로 회피할 수 있습니다. 워낙에 고전적인 방법이라 전문가가 아닌 저도 어렵지 않게 관련된 내용을 찾아볼 수 있었고, 또 오래된 방법이다 보니 요즘은 ‘ or 1=1 —라고 입력해도 ‘존재하지 않는 사용자 아이디입니다’ 따위의 메세지를 보게 됩니다.

요즘은 통하지 않는 방법?

시험삼아 네이버에서 찾은 몇몇 쇼핑몰에 대해서 위의 테스트를 해보니 다행히 강제주입따위의 공격은 우습다는 식으로 잘 막히더군요. 그런데 소규모 개인 쇼핑몰도 아닌, 어떤 의류 브랜드가 하는 쇼핑몰에서 문제가 생겼습니다.

사실, 이 글을 쓰기에는 좀 여러가지로 망설여지는게 많았었는데 이런 방법이 있었다…라고 말하는 것과 실제로 이렇게 뚫리는 사이트가 있다라고 하는 것은 아무래도 많이 다르니까요.  아무튼 해당 브랜드는 미국 메이저리그 야구팀들의 유니폼을 모티브로 힙합 간지 캐주얼을 전개하는 아는 사람은 다 아는 곳입니다. 실제로 이곳을 강제 주입으로 로그인에 성공한 것은 어제 오늘의 일이 아닙니다. 1년전 쯤에 발견하고 해당 웹사이트 관리자에게 수차례 메일을 보낸 적이 있으며, 개인정보가 노출되는 회원에게도 이러저러하여 보니 개인정보가 그대로 드러나고 있으니 탈퇴를 하든 항의를 하시라고 메일을 보낸 적이 있습니다.

여기서 위에서 말한 강제 주입을 통해 로그인을 시도해보겠습니다. 이미 1년 전에 이런 방법으로 로그인이 된다는 정보는 관리자에게 전달을 했고, 사이트 개편도 있었던 거 같아서 될 거라고는 생각을 안했지만…

로그인 아이디 입력

패스워드에는 아무거나 집어넣어도 상관이 없습니다. 당연히 ‘아이디가 존재하지 않습니다’가 나올 줄 알았는데, 이게 왠일입니까 ‘SUCCESS’라고 표시되면서 로그인이 되어 버립니다.좀 어처구니가 없군요. 그러면, 지난 번에 메일을 보냈던 같은 회원일까요?

여기서 또 한번 골 때리는 장면을 목격합니다. 네, 그 분 이더군요. 물론, 보냈던 메일들에 대해서 아무런 회신을 받은 바 없긴 하지만 이정도 일 줄을 몰랐습니다.

로그인된 회원의 정보

보시다시피 이름과 주민번호 연락가능한 전화번호와 주소, 전자우편주소까지 죄다 나와버립니다. 물론 여기서는 단 한명의 회원의 정보만 노출이 되었다고 할 수 있지만, 사실 주민번호와 메일 주소정도만 알고 있으면 ‘비밀번호찾기’ 기능으로 너무나 쉽게 뚫어낼 수 있는 다른 서비스가 많이 있는데다가, 실명과 주민번호만 알면 다른 사이트에 신규 가입은 얼마든지 가능하므로 앞으로 어떤 피해가 발생할지는 아무도 모르는 일입니다.

책임은 지지 않는 개인정보보호정책

물론 이 사이트도 회원정보 보호정책이라는 게 있(었)겠지요. 담당자도 있을 것입니다. 하지만 옥션이나 네이버와 마찬가지로 ‘해킹에 의한 피해는 책임질 수 없음’을 들어버리는 건 아닌지 모르겠습니다. 글쎄요 저는 요즘 같은 때에는 이러한 SQL 강제 주입이 해킹의 축에 속할 수나 있는지는 도저히 모르겠습니다. 그렇다면 ‘구글링’을 통해 회원정보가 고스란히 담겨져 있는 엑셀 파일을 내려받을 수 있는 사이트들은 어떤가요?

예전에 한 번 검색 엔진 구글이 해킹툴로 활용된다는 식의 기사를 본 적도 있는데요, 정말이지 환장할 노릇입니다. 그곳의 보안 담당자라는 분은 그래서 방화벽 솔루션을 다른 걸로 교체한다는 둥 말도 안되는 말씀을 하시던데, 구글링으로 찾아서 내려받았다는 말은 결국 어떻게든 링크를 타고 갈 수 있는 ‘노출된 데이터’라는 말과 동일한 거 아닌가요? 어떤 아이피로 접근하든 접근할 수 있는 권한이 있다는 뜻입니다. 그런걸 마치 ‘첨단 기술이 집대성된 고성능 검색 엔진을 해킹에 활용’했다고 말하는 뻔뻔함은 어디 가면 할인 받아서 살 수 있는지 참으로 궁금합니다.

어쨌거나 아주 소수, 정말이지 아주 소수의 사람들만 국가적인 보안 위기라고 목놓아 소리치고 있는 현실이 안타깝습니다. 언론이라는 자들은 이 걸 단순히 가십거리 이상도 이하도 아닌 것으로 치부하고 자극적인 기사만 쏟아내고 있지요. 단순히 주민번호를 사이트에서 받아가지 말자는게 주된 요지가 아니라, 범국가적인 차원에서 보안 개념에 대한 교육이 필요하지 않나 생각됩니다.

  • 저도 몇몇 사이트에서 테스트중일때 SQL인젝션을 시도해봤는데, 이외로 저런 고전적인 수법이 통하는 곳이 간혹 있더군요 -_-; 어이가 없었습니다.

  • //Draco
    네이버도 청와대도… 대한민국이 해커 트레이닝의 장으로 탈바꿈하는 요즘입니다. 죽쒀서 개준다더니 인프라가 어떻고 IT강국은 개뿔요…