[단독] KT 홈페이지 치명적 버그 밝혀져...해킹 빌미 제공
KT 홈페이지에 어처구니없는 버그가 발견돼 충격을 주고 있다. 특별한 해킹툴을 사용하지 않아도 고객의 이름, 주민등록번호, 전화번호, 요금제, 휴대폰명, 할부기록, 카드사, 카드유효기간 등 상당수의 개인정보가 그대로 노출된다는 것이 확인됐다. 이 치명적 버그가 이번 KT 1천200만명 고객정보 유출 해킹사건의 빌미를 제공한 결정적 원인으로 추정된다.
KT 해킹사건 관련 기사들이 보도되던 6일 5시 경, 바자아자(basaaja)라는 닉네임의 블로거는 자신의 네이버 블로그에 ‘KT 개인정보 얼만큼 뚫렸나 전격 분석! (데이터 포함) 해킹’이란 제목으로 자신이 분석한 내용을 올렸다.
블로그 내용에 따르면, “나도 KT 유저다. 혹시나 하는 마음에 KT 홈페이지에 로그인해 이용 대금 명세서란의 데이터를 봤다. 내 계정으로 가져온 AJAX 데이터를 브라우저의 개발자 도구를 통해 확인한 결과 경악을 금치못했다. 나의 모든 데이터가 담겨있다. 이름, 주민번호, 전화번호, 내가 사용하는 요금제, 휴대폰, 할부 기록, 카드사, 카드유효기간까지...”
블로거는 해당 게시물에 어떤 정보들이 보여지는지 상세하게 기술하고 있다. 이름, 요금 정보, 부가서비스 내역, 휴대폰 구매일자, 휴대폰 기종, 할부금 정보, 주민번호, 카드사 정보, 카드 유효기간, 주소, 서비스 종류, 이메일, 휴대폰 일련번호, 통신사 이동 경로, 아이디 등등이 그대로 노출되고 있다는 것을 보여줬다.
그는 이렇게 말한다. “물론 위의 데이터들은 누구나 자기 계정으로 들어가면 브라우저에 넘어오는 데이터이다. 저 데이터들을 가공해 화면에 출력해 주는 건데. 문제는 해당 페이지에는 필요 없는 데이터들도 AJAX를 통해 모두 넘어온 후 보여준다는 점. 보통 서버에서 클라이언트로 보낼 때 필요한 데이터만 보내야 하는데, 주민번호 등등 그냥 올 노출이다. 가장 기초적인 마스킹도 없다”고 말한다.
좀더 정확한 내용을 알고 싶어 해당 블로거와 인터뷰를 시도했다. 그와의 이메일 인터뷰 내용을 상세히 공개하겠다. 해당 블로그 운영자(방성남. 33)는 알고 보니 주식회사 앳모바일 대표이자 개발 경력이 10년이나 된 베테랑 개발자였다.
-블로그에 올린 내용을 봤는데요. 좀더 자세한 설명을 부탁드립니다.
우연히 기사(KT 해킹사건)를 보게 되었습니다. 기사의 내용은 KT 고객 정보가 이용대금명세서 페이지의 명세서 번호를 조작하는것 만으로 뚫렸다는 거였죠. KT 고객이기 때문에 불안한 마음에 직접 어떤 데이터가 넘어오는지 체크해봤습니다. 제 KT 계정을 가지고 브라우저를 통해 넘어오는 데이터를 브라우저 내부에 기본적으로 들어가 있는 개발자 도구를 이용하여 분석하는게 법적으로 문제가 되리란 생각은 안들었거든요.
제가 확인한 내용은 충격적이었습니다. 유출 여부를 떠나서 웹 페이지에는 보여지지 않은 내용들, 즉 주민등록번호, 카드 유효기간 등등이 AJAX 데이터에는 그대로 나와 있었거든요.
-AJAX 데이터라고 하셨는데, 좀더 자세히 설명해주시죠.
잠시 개발 측면에서 설명을 드리자면 기존에는 웹 개발을 하면 모든 페이지를 서버에서 한번에 만들어서 클라이언트로 전송하는 방법을 주로 사용했습니다. 하지만 매번 페이지를 새로 로드해야 하는 문제점을 가지고 있기 때문에 점차 추세가 실제로 사용하는 데이터는 동적으로 AJAX를 통해 받아와서 새로고침 없이 클라이언트에 출력하는 방식으로 바뀌게 되었죠.
즉 우리가 보는 이용대금명세서에는 주민등록번호나 카드 유효기간 같은 것들이 보이진 않지만 그 이용대금명세서를 만들어 내기 위해 클라이언트 브라우저에 전송된 JSON 형식의 데이터에는 개인 정보가 * 표시 없이 그대로 보여졌습니다. 이 부분이 일차적인 문제점이라고 생각됩니다.
-전송구간 데이터 암호화를 해도 소용이 없다는 말씀인가요?
해커에게 점령 당한 컴퓨터의 사용자가 올레 웹사이트에 접속해 이용대금명세서를 조회하면 개인정보도 같이 넘겨질 가능성이 커지는 거죠. 아무리 HTTPS를 통해 올레 서버와 고객 컴퓨터 간의 통신 데이터를 암호화 한다고 해도 소용이 없는거죠. 고객 컴퓨터에서는 데이터 자체가 암호화 되지 않은 상태로 보여질 수 있으니깐요.
실제로 명세서의 일련번호를 조작해 데이터를 획득하는 작업은 하지 않았습니다만, 언론에 기사화 된 것처럼 이용명세서의 일련번호를 임의로 조작하는 방법으로 정보를 획득했다면 저 방법밖에 없을 것이란 생각이 들었습니다. 언론에서 말한 거의 모든 정보가 넘어 오기 때문이지요.
<방 대표의 PC에서 실제 보여진 정보 노출 화면 캡처 이미지>
-캡쳐 화면도 보내주셨는데 좀더 설명 부탁드립니다.
제가 캡쳐해둔 화면을 보면 FarMonBillingDetailInfo_Ajax***, FarMonBillingContractList***의 파일을 통해 각각 빌링 정보와 계약 정보가 담겨 있는 것을 볼 수 있습니다. 그리고 우측 하단의 요청 데이터란을 보면 POST로 특정 변수를 넘기게 되어 있는 것을 볼 수 있죠. sdpCont… sdpBillA… billSeqNo 등등의 데이터가 보일겁니다. 아쉽게도 캡쳐한 화면은 그것 하나밖에 없네요. 아마 여기에 관련 데이터를 조작하면 결과가 다른 사람들 정보로 나오게 될 것 같습니다. 저는 실제로 값을 조작하진 않았습니다. 불법이니까요.
-KT 홈페이지 개발 자체에 문제가 있었던 걸까요?
만약 언론에서 이야기한대로 명세서의 일련번호만 바꿔 조회해서 모든 데이터를 가져간 것이라면 개발 자체가 잘못된 것이란 생각이 듭니다. 1년차 초급 개발자들에게 항상 말하는 것이 모든 데이터는 본인 인증부터 하고 데이터를 전송하라는 것이거든요. 개발에 있어서 가장 기본이 되는 내용입니다. 심지어 해당 방식의 해킹은 2000년에 유행하던 방식이죠.
-개발할 때 보안을 고려한 코딩이 되어야 하는데 안타깝네요.
대기업에서 아무리 좋은 보안 장비를 가져다 설치해도 개발자의 작은 실수 하나가 회사에 치명타를 입힐 수 있죠. 그런데 개발자 입장에서는 어쩔 수 없는 면도 있어요. 상당수의 개발자들이 파견업체에 소속되어 보안에 대한 개념도 없이 일하는 경우가 허다하고 위에선 보안을 강화해 달라고 강요는 하지만 실제 주어지는 개발 시간은 늘 부족하죠. 관리는 대기업의 정직원이 하고 실제 개발은 파견업체 직원들이 하는 경우도 허다하잖아요. 그들에게 보안을 요구 할 수 있을까요? 내 회사가 아닌데...그리고 그들은 그 프로젝트를 끝내고 다른 회사로 가서 다시 작업을 합니다. 얼마전 금융권 대량 개인정보 유출 사태에서 보듯이 아웃소싱은 보안적인 면에서 굉장히 위험한 인원 관리 방법이라고 생각합니다. 데이터 및 기존 회사의 업무 비밀을 가지고 쉽게 이직할 수 있게되는 것이죠. 정직원이 아니니까요. 뭐 이야기가 다른 곳으로 흘렀네요.
-블로그에 글을 공개하신 후 반응이 어떤가요?
일단 위 내용은 모두 추론입니다. 제가 담당 경찰은 아니니까요. 그리고 어떤 분들이 왜 이런 내용을 위험하게 블로그에 공개 했냐고 하시는데 전 언론에 기사가 뜨고 범인들이 체포되었다는 소식을 듣고 나서 다른 사람의 것을 조회하는 기능은 당연히 막았겠지 하고 글을 작성한 것입니다. 다시 말하지만 타인 정보를 제가 보게 되면 저도 범죄자가 됩니다. 제 블로그에 어떤 분이 숫자만 바꾸니깐 잘 보이더라는 말을 듣고 충격을 받긴 했습니다. 설마 아직도 안고치진 않았겠죠?
인터뷰 내용은 여기까지다. KT 홈페이지 보안담당자는 이 사실을 몰랐을까. 아니면 알고도 보안상 문제가 없다고 생각한 것일까. 방성남 대표와 인터뷰 내용중 기자의 마음을 흔든 것은 바로 “대기업에서 아무리 좋은 보안 장비를 가져다 설치해도 개발자의 작은 실수 하나가 회사에 치명타를 입힐 수 있죠”라는 말이었다.
KT 측의 신속한 보안조치를 촉구한다. 또한 KT 이외 통신사들도 이번 사건에 대해 자유롭지는 않을 것이다. 비슷한 구조였다면 신속한 조치가 필요하다. 방 대표의 말처럼, 파견 직원에게 보안을 강요하는 것은 옳은 방법이 아니다. 아웃소싱은 보안관리 측면에서 매우 위험한 관리 방법인 것이다.
이번 KT 정보유출 사건은 단순한 해킹사고가 아니라 우리나라 IT의 암울한 현상들이 뒤엉켜 발생한 산출물이다.
데일리시큐 길민권 기자 mkgil@dailysecu.com
이래서 전산업무 아웃소씽 함부로 하는 게 아니다.
kt 경영진들 그저 자기들 이익만 생각하지 회사의 장기 비전 생각하는 넘 아무도 없다.
그 결과가 오늘날의 kt이다.
이제 와서 뻔뻔하게 "남탓 하지 말자구?"
자신부터 반성해라!