텔레그램 데스크톱 HTML 내보내기 파일에서 스크립트 실행 위험 발견

텔레그램 데스크톱의 HTML 내보내기 기능에서 인라인 버튼 텍스트가 이스케이프 없이 기록되는 저장형 크로스사이트 스크립팅(stored XSS) 취약점이 확인됐습니다. 과거에 생성된 채팅 아카이브 HTML 파일을 웹 브라우저로 열면 임의의 스크립트가 실행돼 메시지 콘텐츠가 유출되거나 변조될 수 있습니다. 취약점은 v7.0.1 릴리스에서 수정됐지만 이미 내보낸 기존 파일의 위험은 앱 업데이트만으로 해소되지 않습니다. 기업 내 메신저 아카이브 관리자와 보안 관제 담당자가 직접 파일을 점검해야 하는 이유입니다. 분석 기준 시점(2026-09-16)까지 공개된 근거 자료에서는 와일드(in-the-wild) 실제 악용 증거가 확인되지 않았습니다.

취약점 개요

2026년 7월 패치 이후 보안 연구 기관 ExPatch 소속 Denis Rostilov와 Aleksander Rostilov가 텔레그램 데스크톱 HTML 내보내기 파이프라인의 저장형 XSS 취약점을 공개했습니다. 텔레그램 데스크톱에서 채팅을 HTML 형식으로 내보낼 때 인라인 버튼(inline keyboard button)의 텍스트가 이스케이프 과정 없이 HTML 파일에 그대로 기록됩니다. 악성 JavaScript가 버튼 텍스트에 포함된 채 내보내기 파일에 저장되면 해당 파일을 브라우저로 여는 순간 스크립트가 실행됩니다.

이 취약점은 CVSS 3.1 기준 8.2(High)로 평가됐으며 벡터는 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N입니다. 공격 벡터(AV:L)가 로컬(Local)이라 공격자가 파일을 직접 전달하거나 대상 사용자가 악성 파일을 열도록 유도하는 전제 조건이 필요합니다. 다만 인증 권한(PR:N)이 불필요하고 한 번 실행되면 기밀성(C:H)과 무결성(I:H) 모두에 고도의 영향을 미치며 영향 범위(S:C)가 변경된다는 점이 이 점수에 반영됐습니다.

영향을 받는 내보내기 파일은 두 종류입니다.

  • export_results.html: 전체 채팅 내보내기 시 생성되는 파일
  • messages.html: 단일 채팅만 내보내기 시 생성되는 파일

텔레그램 공식 내보내기 문서(Telegram Data Export Schema)에 따르면 HTML 내보내기는 웹 브라우저로 파일을 열어 확인하는 방식으로 설계돼 있습니다. 사용자가 이 파일을 브라우저 탭에서 여는 행위 자체가 곧 스크립트 실행 트리거가 됩니다.

항목 상세
취약점 유형 저장형 XSS (Stored XSS)
CVSS 3.1 8.2 (High) / CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
영향 파일 export_results.html, messages.html
영향 빌드 Beta 6.9.4 / Stable 7.0.1 이전
수정 버전 v7.0.1 (2026년 7월, 커밋 8457d13a)
공격 벡터 텔레그램 봇 인라인 버튼 텍스트
공개 주체 Denis Rostilov, Aleksander Rostilov (ExPatch)
CVE 번호 할당 확인되지 않음

기술적 원인: exportoutputhtml.cpp 이스케이프 누락

취약점의 기술적 원인은 텔레그램 데스크톱 소스 코드 export_output_html.cpp 파일의 1752행에 있습니다. 채팅을 HTML로 내보내는 과정에서 button.text.toUtf8() 호출이 인라인 버튼 텍스트를 어떤 이스케이프 변환도 거치지 않은 채 HTML 페이지에 그대로 기록합니다.

공격 시나리오는 다음 경로를 따릅니다:

  1. 공격자가 텔레그램 봇을 만들거나 악용해 인라인 키보드를 구성합니다.
  2. 인라인 버튼 텍스트에 악성 JavaScript 페이로드를 삽입합니다.
  3. 해당 키보드가 포함된 메시지를 대상 그룹 채팅으로 전송합니다.
  4. 대상 사용자가 해당 채팅을 HTML로 내보내면 악성 스크립트가 export_results.html 또는 messages.html에 저장됩니다.
  5. 내보내기 파일을 브라우저로 여는 순간 스크립트가 실행됩니다.

특히 ExPatch 연구에 따르면 페이로드가 보이지 않는 유니코드 문자로 감싸져 있어 텔레그램 인터페이스에서 버튼이 빈칸이나 무해한 텍스트로 보일 수 있습니다. 더 위험한 점은 텔레그램이 URL 기반 인라인 버튼을 포워딩 시 보존한다는 특성입니다. 악성 버튼 텍스트가 새 채팅 히스토리에 잔존해 추가 전파까지 가능합니다.

영향 범위와 전제조건

스크립트가 실행되면 내보내기 문서에 렌더링된 모든 메시지에 접근할 수 있습니다. 발신자명과 타임스탬프, 채팅 메타데이터는 물론 내부 자격 증명이나 업무 논의 같은 기밀성 있는 콘텐츠까지 포함됩니다.

실행된 스크립트는 다음 조작이 가능합니다:

  1. 내보낸 채팅 문서를 텔레그램 브랜드 위조 인증 페이지로 대체
  2. 특정 메시지 숨김
  3. 표시되는 타임스탬프나 발신자명 변조
  4. 대화 내용 재작성

이 취약점은 단순한 스크립트 주입을 넘어 내보내기 아카이브의 무결성 자체를 훼손할 수 있습니다. HTML 내보내기 파일을 감사 기록이나 법적 증거로 보관하는 기업이라면 변조된 아카이브가 신뢰성을 잃는 문제가 생깁니다.

전제 조건

  • 사용자가 취약 빌드(Beta 6.9.4 / Stable 7.0.1 이전)로 HTML 내보내기를 수행해야 함
  • 악성 인라인 버튼이 포함된 채팅이 내보내기 대상에 포함돼야 함
  • 생성된 HTML 파일이 웹 브라우저로 열려야 스크립트가 실행됨
  • 사용자 상호작용이 필요하지만 파일만 열면 스크립트가 트리거됨 (UI:R)

수정 현황: 커밋 8457d13a 및 v7.0.1 릴리스

텔레그램은 2026년 7월 커밋 8457d13a(“Fix escaping in HTML export of keyboards”)로 이 취약점을 수정했습니다. 수정은 v7.0.1 릴리스에 포함됐으며 버튼 텍스트에 HTML 이스케이프를 적용하면서 copy-callback 버튼 관련 JavaScript 문자열 주입 리스크도 함께 처리했습니다.

영향을 받는 빌드는 Beta 6.9.4 이전과 Stable 7.0.1 이전 버전입니다. 이 시점 이전에 내보내기 기능을 사용한 모든 사용자가 생성한 HTML 파일에는 취약점이 포함됐을 수 있습니다.

운영상 영향과 잔여 위험

가장 중요한 점은 앱 업데이트가 이전 내보내기 파일을 재생성하지 않는다는 사실입니다. 수정이 적용된 v7.0.1 이후에도 수정 이전 빌드로 생성된 HTML 파일은 여전히 악성 스크립트를 포함할 수 있습니다. 위험의 중심은 실행 중인 앱이 아니라 이미 생성된 오래된 채팅 아카이브 파일 자체입니다.

기업 내 메신저 아카이브 관리자가 짚어 둘 사항입니다.

  • v7.0.1 이전 버전으로 생성된 export_results.htmlmessages.html 파일이 내부 네트워크 어디에 저장돼 있는지 파악
  • 해당 파일을 브라우저로 열기 전까지 스크립트 실행 리스크가 상존한다는 점 인식
  • 파일 이동·공유 시 수신자에게 동일 위험이 전파된다는 점 안내
  • 패치된 빌드로 새로 생성한 파일은 이 취약점의 대상이 아니라는 점 확인

탐지·대응 절차

보안 관제 및 취약점 분석 담당자를 위한 대응 절차는 다음과 같습니다.

  1. 파일 목록 파악: 2026년 7월(Stable 7.0.1 릴리스) 이전에 텔레그램 데스크톱으로 생성된 export_results.html, messages.html 파일을 네트워크 파일 서버, 공유 폴더, 개인 저장소에서 식별합니다.
  2. 정적 점검: 식별된 HTML 파일의 소스에서 인라인 버튼 텍스트 영역 내 이스케이프되지 않은 스크립트 실행 패턴이 포함됐는지 검색합니다. (인라인 버튼 텍스트가 이스케이프 없이 기록된다는 기계적 원인에 기반한 운영 권장 사항)
  3. 버전 확인: 내보내기 파일을 생성한 텔레그램 데스크톱 버전이 Beta 6.9.4 / Stable 7.0.1 이전인지 확인합니다.
  4. 브라우저 열기 금지: 점검이 완료된 파일은 브라우저로 직접 열지 말고 소스 텍스트 편집기로만 내용을 확인합니다.
  5. 재내보내기: 꼭 필요한 경우 최신 패치 버전(7.0.1 이상)으로 해당 채팅을 새로 내보내 깨끗한 파일을 생성합니다.
  6. 전파 경로 추적: 인라인 버튼이 포함된 메시지가 포워딩으로 잔존할 수 있으므로 관련 채팅 그룹 내 포워딩 기록을 확인합니다.

확인되지 않은 부분과 한계

본 분석의 근거 자료에서 확인되지 않은 사항은 다음과 같습니다.

  • CVE 번호: 텔레그램 데스크톱 소스 저장소에서 내부적으로 추적됐지만 CVE 번호가 할당되지 않은 상태입니다.
  • 벤더 공식 보안 공지: 텔레그램 측 공식 보안 어드바이저리 문서가 공개 자료로 확인되지 않습니다.
  • 와일드 악용 여부: 분석 기준 시점(2026-09-16)까지 공개된 근거 자료에는 실제 와일드(in-the-wild) 악용 사례 확인 내용이 포함되지 않습니다.
  • JSON 내보내기 영향 여부: 이 취약점은 HTML 내보내기 파이프라인(export_output_html.cpp)에 국한돼 확인되며 JSON 내보내기 파이프라인이 동일하게 영향받는지 여부는 현재 근거에서 확인되지 않습니다.
  • 커밋 8457d13a의 상세 구현: 수정 커밋이 버튼 텍스트에 HTML 이스케이프를 적용하고 copy-callback 버튼 관련 리스크를 함께 수정한다는 사실은 확인되지만 정확한 이스케이프 구현 코드의 전체 변경 내용은 공개 자료로 확인되지 않습니다.

위 한계 사항은 향후 텔레그램 공식 발표나 추가 연구 보고서가 공개되면 보완될 여지가 있습니다. 기업 보안 정책 관점에서는 CVE 번호가 없어도 CVSS 8.2(High)라는 평가가 내보내기 아카이브 파일 정적 점검 절차를 즉시 실행할 충분한 근거가 됩니다.

댓글 남기기