[KJtimes=김은경 기자] 온라인동영상서비스(OTT) 티빙에서 3954만 개 계정과 소스코드가 포함된 개발 프로젝트 361건이 유출된 것으로 최종 확인됐다. 공격자는 개발자가 보유한 '접속키'를 탈취해 개발환경에 침투한 뒤 운영환경으로 이동했고, 이용자 정보가 저장된 데이터베이스(DB)까지 접근했다.
특히 티빙은 2024년 자체 모의해킹 과정에서 개발·운영환경 접속키가 소스코드에 노출되는 취약점을 확인하고도 개선하지 않은 것으로 조사됐다. 여기에 전체 개발자에게 모든 개발 프로젝트 접근 권한을 부여하고, 비정상적인 데이터 흐름을 실시간으로 탐지·차단하는 체계도 제대로 갖추지 못했던 것으로 나타났다.
과학기술정보통신부 민관합동조사단은 3일 티빙 침해사고 조사 결과를 발표하고 사고 원인과 피해 규모, 정보보호 관리체계의 문제점을 공개했다.
사고는 지난 5월 30일 티빙 데이터베이스 서버의 작업량이 급증하면서 시스템 과부하가 발생한 것을 계기로 드러났다. 티빙은 이상징후를 분석하는 과정에서 비인가자가 내부 서버에 접근해 이용자 정보를 조회한 사실을 확인했고, 6월 1일 한국인터넷진흥원(KISA)에 침해사고를 신고했다.
조사단은 6월 2일부터 현장조사에 착수했고, 6월 3일 민관합동조사단을 구성해 개발자 단말기 포렌식과 보안장비·DB·시스템 로그 분석 등을 진행했다.
조사 결과 공격자는 개발자의 '개발환경 접속키'를 사전에 탈취해 5월 29일 개발환경에 침투했다. 이후 개발환경에서 접근할 수 있는 개발 프로젝트 361건 전체를 빼냈다. 해당 프로젝트는 30.35GB 규모로, 티빙의 콘텐츠 추천·검색 알고리즘과 이용자 관리·인증체계, 결제 관리, 유료 서비스 운영 등에 사용되는 소스코드가 포함됐다.
문제는 개발환경에서 끝나지 않았다. 공격자는 유출한 소스코드에서 운영환경에 접근할 수 있는 접속키를 확보했다.
◆'하드코딩·평문 저장' 접속키가 운영환경 침투 통로로
조사단이 확인한 개발 프로젝트 361건에는 모두 43개의 운영환경 접속키가 포함돼 있었다. 이 가운데 41개는 소스코드에 하드코딩돼 있었고, 3개는 환경변수에 평문으로 저장돼 있었다. 1개가 중복돼 실제 키는 43개였다.
즉, 운영환경에 접근할 수 있는 중요한 인증정보가 별도의 보안 저장공간으로 분리되지 않고 개발 프로젝트 안에 노출돼 있었던 셈이다.
공격자는 이 가운데 2개의 운영환경 접속키를 실제 공격에 활용했다. 하나는 대규모 데이터 가공·분석 및 클라우드 저장소 접근 권한을 갖고 있었고, 다른 하나는 가상서버를 생성할 수 있는 권한을 갖고 있었다.
공격자는 운영환경에 침투한 뒤 이용자 정보가 저장된 DB의 접속정보(ID·PW)까지 확보했다. 조사단은 이 DB 접속정보 역시 암호화되지 않은 평문 상태로 저장돼 있었다고 밝혔다.
1차 정보유출 시도는 5월 30일 오전 9시 22분부터 오후 6시 58분까지 이뤄졌다. 공격자는 클라우드 저장소에 직접 제작한 정보유출용 스크립트를 삽입하고 DB에 접근해 이용자 정보를 빼내려 했다.
이 과정에서 DB 서버의 CPU 이용률이 5월 30일 오후 6시 100%까지 치솟으면서 이상징후 알림이 발생했고, 티빙이 해당 작업을 차단했다.
하지만 공격은 여기서 끝나지 않았다. 공격자는 다음날인 5월 31일 오후 7시부터 오후 10시 20분까지 가상서버 생성 권한을 가진 또 다른 운영환경 접속키를 이용해 별도의 가상서버를 만든 뒤 대규모 정보유출을 시도했다.
이번에는 CPU 과부하를 발생시키지 않도록 CPU 이용률을 10% 이내로 제한한 것으로 조사됐다. 공격자는 DB에 있던 이용자 정보를 가상서버로 일괄 저장한 뒤 외부 서버로 빼냈고, 이후 가상서버를 삭제해 흔적을 없앴다.
조사단은 이 과정에서 약 24GB 규모의 이용자 정보가 유출된 것으로 판단했다.
결과적으로 이번 사고에서 유출된 이용자 계정은 활성 계정 2206만 개, 휴면·탈퇴 등 비활성 계정 1737만 개, 테스트 계정 11만 개 등 총 3954만 개였다. 다만 이는 계정 기준으로 중복이 포함된 수치다. 실제 조사에서는 한 명이 최대 13개 계정을 보유한 사례도 확인됐다.
유출된 정보는 계정별로 차이가 있지만 ID, 비밀번호, CJ ONE 통합ID, 성명, 휴대전화번호, 이메일 주소, 생년월일, 연계정보(CI) 등 20개 항목, 70종에 달했다.
휴대전화번호와 이메일 주소 일부는 암호화된 상태였지만 암호화키가 함께 유출돼 복호화가 가능했기 때문에 평문으로 유출된 정보와 동일한 수준으로 판단됐다. 반면 비밀번호는 일방향 암호화 상태로 유출돼 평문 복호화는 불가능한 것으로 조사됐다.
특히 본인인증 과정에서 생성되는 연계정보(CI)를 보유한 계정 1904만 개는 평균 11.1개 항목, 17.6종의 정보가 유출됐다. CI가 없는 계정 2040만 개는 평균 4.6개 항목, 5.9종이 유출됐다.
정부가 이번 사고를 단순한 '해킹 피해'로만 보지 않는 이유도 여기에 있다. 조사단은 티빙의 정보보호 체계에서 접속키 관리뿐 아니라 접근권한 통제, 이상징후 탐지, 사고보고, 취약점 조치 등 여러 단계의 문제가 동시에 확인됐다고 판단했다.
티빙은 개발자 149명을 포함해 전체 임직원 265명 규모였지만 정보보호 전담인력은 외주인력을 제외하면 4명 내외에 그쳤다. 모든 개발자에게 전체 개발 프로젝트에 접근할 수 있는 권한을 부여한 것도 문제로 지적됐다.
접속키의 발급·사용·변경·폐기와 정기점검을 위한 관리절차도 없었다. 사내 메신저 등을 통해 접속키를 다른 사람과 공유한 사실도 조사에서 확인됐다.
더 심각한 대목은 과거에 이미 취약점이 확인됐다는 점이다. 티빙은 2024년 모의해킹을 통해 개발·운영환경 접속키가 소스코드에 그대로 노출되는 문제를 발견했지만 이를 개선하지 않았다. 시스템 로그 역시 선별적으로 관리돼 신규 장비인 VPN에는 충분한 로그관리 정책이 적용되지 않았고, 약 6일간의 접속기록만 보관된 것으로 조사됐다.
사고 대응 과정에서도 허점이 드러났다. 5월 30일 오후 6시 이상징후가 발생했지만 정보보호 전담조직과 정보보호 최고책임자(CISO)에게 상황이 공유된 것은 약 14시간 뒤인 5월 31일 오전 10시 10분이었다.
침해사고 신고도 법정 기한을 넘겼다. 조사단은 티빙이 침해사고를 인지한 시점을 5월 31일 오전 10시 10분으로 판단했지만 실제 KISA 신고는 6월 1일 오후 3시 8분에 이뤄졌다. 정보통신망법상 침해사고 신고 의무를 위반한 것으로, 과기정통부는 3000만원 이하의 과태료를 부과할 예정이다.
◆티빙, 공식 사과 "정보보호 체계 근본적 재구축하겠다" 입장
티빙은 이날 사고에 대해 공식 사과하고 정보보호 체계를 근본적으로 재구축하겠다는 입장을 밝혔다. 최주희 티빙 대표는 "이번 침해 사고로 인해 고객 여러분께 큰 심려와 불안을 끼쳐드린 점 진심으로 사과드린다"며 "대표이사로서 무거운 책임을 느낀다"고 밝혔다. 티빙은 외부 전문가로 구성된 정보보호혁신 자문위원회를 신설하고 중장기 정보보안 강화 로드맵을 다시 수립하겠다고 밝혔다.
과기정통부는 티빙에 9월 중 재발방지 대책 이행계획을 제출하도록 하고 10~12월 이행 여부를 점검한 뒤 2027년 1월부터 후속 점검에 나설 예정이다. 필요한 경우 정보통신망법에 따라 시정조치를 명령한다는 방침이다.
이번 사고는 대규모 개인정보 유출이 반드시 첨단 해킹기술에서 시작되는 것은 아니라는 점도 보여줬다. 개발환경에 저장된 접속키 하나가 운영환경으로 이어지고, 과도한 접근권한과 평문으로 관리된 인증정보가 DB 접근으로 연결되면서 피해 규모가 걷잡을 수 없이 커졌다.
결국 재발 방지의 핵심은 새로운 보안 솔루션을 추가하는 데 그치지 않는다. 누가 어떤 시스템에 접근할 수 있는지, 중요한 인증정보를 어디에 보관하는지, 이상행위를 누가 얼마나 빨리 발견하는지, 과거에 발견한 취약점을 실제로 개선했는지 등 기본적인 보안 관리체계가 제대로 작동하는지가 관건이다.























