비밀번호가 유출되지 않았다는 말은 보통 안심의 신호로 읽힌다. 2026년 9월 11일 공개된 트위치 확장 프로그램 사건에서는 그 말이 성립하는데도 계정은 안전하지 않았다.
애플리케이션 보안 기업 Socket이 공개한 분석에 따르면, 시청 환경 개선 기능을 내세운 확장 프로그램 하나가 약 3만 1천 명의 트위치 OAuth 토큰을 운영자가 통제하는 프록시 서버로 흘려보냈다. 크롬 웹스토어 설치 기준 약 3만 명, 파이어폭스 부가기능 쪽이 수백 명 규모다.
비밀번호는 한 글자도 오가지 않았다. 그럴 필요가 없었다.
토큰 한 줄이 비밀번호를 대신하는 이유
OAuth 액세스 토큰은 흔히 로그인 상태로 뭉뚱그려 이해되지만, 규격상 성격이 더 단순하고 그래서 더 위험하다. 토큰 사용 방식을 정의한 RFC 6750은 bearer 토큰을 이렇게 규정한다.
A bearer token is a security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can.
토큰을 가진 쪽이면 누구든 원래 소유자와 동일하게 쓸 수 있다는 뜻이다. 암호 키 소지를 증명할 필요도 없다. 이 정의에서 곧바로 따라 나오는 결과가 이번 사건의 핵심이다. 토큰이 새면 비밀번호를 바꾸지 않아도 계정이 쓰이고, 2단계 인증을 켜 두어도 그 단계를 다시 거치지 않는다. 인증은 이미 끝난 상태로 취급되기 때문이다.
보도된 범위에서 이 토큰으로 가능한 행위에는 채팅 메시지 게시, 귓속말 전송, 채널 포인트 사용이 포함된다. 계정 소유권을 빼앗는 탈취와는 층이 다르지만, 이용자 이름으로 남는 행위라는 점은 같다.
세션 자격증명이 왜 인증 수단을 무력화하는지는 세션 토큰 탈취: MFA를 무력화하는 AiTM 피싱 킷 5종의 공격 원리에서 더 자세히 다뤘다.
확장 프로그램은 어디서 토큰을 집었나
Socket이 기술한 경로는 브라우저 확장의 권한 구조를 그대로 이용한다.
확장의 콘텐츠 스크립트는 트위치 웹 클라이언트가 자기 API에 쓰는 인증 헤더를 읽어 확장 내부로 넘긴다. 최신 버전대에서는 영상 재생목록 요청을 운영자 프록시로 돌리면서 토큰을 요청 파라미터에 붙여 보낸다. 그 결과 토큰은 프록시의 일반 요청 로그에 평문으로 남는다. 별도의 은닉 채널이나 암호화가 없다는 점이 오히려 규모를 키운다. 운영자 인프라의 로그를 보는 누구든 자격증명을 읽을 수 있는 상태가 된다.
한 가지 세부가 이 구조의 성격을 드러낸다. 토큰 전송에서 예외로 빠진 채널이 열 곳 있었다. 모두 러시아어권 스트리머 채널이고, 확장 코드에 하드코딩돼 있었다. 시청자가 그 채널을 볼 때는 토큰이 흘러가지 않는다. 기술적 필요로 설명되지 않는 예외다. 운영 주체와 이해관계가 있는 채널만 골라 비켜 간 셈이다.
확장을 배포한 쪽은 트위치와 Kick, VK Live를 대상으로 하는 상업용 봇 서비스로 알려져 있다. 스스로 2만 6천 명 이상의 스트리머가 쓰고 10억 건 넘는 메시지를 처리했다고 홍보한다. 시청자 계정 자격증명이 이런 서비스와 만나면 시청 수와 팔로우를 부풀리는 데 쓰일 수 있는 자원이 된다.
심사를 통과한 확장이 나중에 달라진다
이 사건에서 독자가 가져갈 구조적 교훈은 확장 프로그램 하나의 악성 여부가 아니라 검수 시점과 실행 시점의 간극이다.
크롬 웹스토어 개발자 정책은 확장이 기능 구현에 필요한 가장 좁은 권한만 요청해야 하고, 선언한 단일 목적과 무관한 권한 사용을 금지한다. Manifest V3는 원격 호스팅 코드 실행을 막고 콘텐츠 보안 정책을 강화했다. 그런데 이번 경로는 그 제약을 우회할 필요가 없었다. 트위치 페이지에 접근할 권한 자체가 기능상 정당해 보이고, 그 권한 안에서 인증 헤더를 읽는 동작이 이뤄졌기 때문이다.
모질라 쪽은 검토 모델이 다르다. 부가기능을 업데이트마다 검토하고, 서명 기반 배포이므로 악성 버전이 확인되면 서명을 철회해 다음 실행부터 로드를 막을 수 있다. 다만 이번 확장은 Socket 보고 시점까지 두 스토어에서 모두 게시 상태였고, 어느 쪽이 언제 내렸는지는 공개 자료로 확인되지 않는다. 특정 버전에서 문제가 수정됐다는 주장도 1차 자료로는 확인되지 않았다. 트위치의 공식 입장이나 토큰 일괄 폐기 여부도 마찬가지로 확인된 바 없다.
트위치가 떠난 한국에 남은 것
트위치는 2023년 12월 5일 한국 사업 종료를 공식 발표하고 2024년 2월 27일 국내 서비스를 닫았다. 그러니 이번 사건의 직접 피해자는 한국에 많지 않다.
구조는 남았다. 한국 시청자 다수가 옮겨 간 치지직과 SOOP에도 서드파티 확장 프로그램이 크롬·파이어폭스 스토어에 올라와 있고, 일부는 기능 설명에 로그인 세션 연동을 명시한다. 플랫폼이 공식 제공하는 확장 생태계가 아니라 개별 개발자가 만든 보조 도구라는 점까지 이번 사례와 같다. 토큰을 다루는 방식이 규격상 bearer라는 점도 플랫폼을 가리지 않는다.
즉 같은 사건이 한국에서 재현되려면 새로운 기법이 필요하지 않다. 시청 보조 기능, 페이지 접근 권한, 그리고 업데이트 권한 세 가지가 이미 갖춰져 있다.
관찰 가능한 지점
이 유형에서 흔적은 플랫폼 계정 쪽보다 클라이언트 쪽에 남는다.
확장이 토큰을 옮길 때는 페이지가 원래 부르지 않을 외부 호스트로의 요청이 발생한다. 브라우저 개발자 도구의 네트워크 기록에서 영상 재생과 무관한 도메인이 인증 정보를 실은 요청을 받는 형태로 관찰된다. 확장 권한 목록에서 특정 사이트 전체 읽기·쓰기 권한이 기능 설명에 비해 넓게 잡혀 있는지도 같은 층의 단서다.
플랫폼 쪽에서는 계정 활동 기록이 단서가 된다. 본인이 하지 않은 채팅이나 귓속말, 쓰지 않은 채널 포인트 소비처럼 계정 이름으로 남은 행위가 그것이다. 토큰이 유효한 동안에는 이 행위가 정상 로그인 세션과 동일하게 기록되므로, 비밀번호 변경 여부만으로는 구분되지 않는다.
참고 자료
안내 및 법적 고지
AI 활용 안내
이 글은 AI(Claude)의 도움을 받아 작성되었습니다.
인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항
본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다.
언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라
처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.