텔레그램 데스크톱(tdesktop)의 채팅 HTML 내보내기 기능에서 인라인 버튼 텍스트가 이스케이프 없이 파일에 기록되는 저장형 크로스사이트 스크립팅(stored XSS) 취약점이 확인됐다. 이 글은 영향 범위, 기술적 원인, 탐지와 대응 순서, 그리고 확인되지 않은 부분을 한계로 정리한다.
개요

텔레그램 데스크톱 HTML 내보내기 기능에서 인라인 버튼 텍스트가 이스케이프되지 않은 채 HTML 페이지에 기록되는 취약점이 ExPatch 기술 보고서와 The Hacker News 보도를 통해 확인됐다. 수정 이전 생성된 내보내기 파일에 스크립트 콘텐츠가 내장된 경우, 이 파일을 웹 브라우저로 열면 내장된 스크립트가 실행된다. 언론 보도에 따르면 임베드된 스크립트가 내보내기 파일에 포함된 메시지 콘텐츠를 읽을 수도 있다. 수정은 v7.0.1 릴리스(보도에 따르면 7월, 커밋 8457d13a)에 포함됐지만, 앱 업데이트가 이전 내보내기 파일을 재생성하지는 않으므로 위험의 중심은 앱이 아니라 이미 생성된 오래된 채팅 아카이브 파일이다.
적용 환경·전제조건
- 텔레그램 데스크톱(tdesktop)의 HTML 내보내기 기능: v6.9.4 (Beta) / v7.0.1 (Stable) 이전 빌드로 생성된 내보내기 파일
- 내보내기 파일은 export_results.html(전체 내보내기)과 messages.html(단일 채팅 내보내기)
- 공식 내보내기 문서(Telegram Data Export Schema)에 따르면 HTML 내보내기는 웹 브라우저로 파일을 열어 보는 방식
- 이런 오래된 내보내기 파일이 저장·공유되어 웹 브라우저로 열리거나 열릴 수 있는 환경
위험이 실제로 실현되려면 다음 전제가 충족돼야 한다. 파일에 인라인 버튼 텍스트 부분에 스크립트 콘텐츠가 포함되어 있어야 하고, 파일이 실제로 브라우저에서 열려야 한다. 조건부 판단으로, 조직 내에 수정 이전 생성된 파일을 열람·공유하는 경로가 없다면 직접적 영향은 제한적이다.
기술 절차·판단 근거
원인은 텔레그램 데스크톱 소스 코드 export_output_html.cpp의 1752행 한 줄이다. 채팅을 HTML로 내보낼 때 button.text.toUtf8()이 인라인 버튼 텍스트를 이스케이프 없이 HTML 페이지에 그대로 기록한다. 버튼 텍스트에 스크립트 콘텐츠가 포함되면, 그것이 실행 가능한 스크립트로 내보내기 파일에 저장된다.
Fix escaping in HTML export of keyboards. 커밋은 이 행을 수정해 텍스트를 처리한 뒤 기록하도록 변경했다. 스크립트는 실행 중인 앱이 아니라 내보내기 파일 자체에 저장되어 있기 때문에, 앱을 업데이트해도 이미 내보낸 파일은 해결되지 않는다.
여기서 판단의 근거가 나온다. 잔여 위험은 수정 이전 생성된 파일에 국한되고, 패치된 빌드로 새로 생성한 파일은 이 취약점의 대상이 아니다. 악용 상태는, 취약점을 문서화한 기술 보고서와 언론 보도가 확인되고 수정 커밋과 릴리스의 존재가 확인됐으나, 분석 기준으로 와일드(in-the-wild)에서 실제 악용된 증거는 확인되지 않았다는 수준이다.
운영상 영향
- 위험은 파일 자체에 있다. 오래된 내보내기 파일을 브라우저로 열면 내장된 스크립트가 실행된다
- 언론 보도에 따르면 스크립트가 내보내기 파일에 포함된 메시지 콘텐츠를 읽을 수 있어, 아카이브에 담긴 메시지의 비밀성이 위협받을 수 있다
- 파일이 앱이 아니라 브라우저로 열리므로 위험은 열람자의 앱 버전으로 완화되지 않는다. 수신자가 최신 앱을 사용해도 공유받은 파일을 브라우저로 열면 위험하다
- 메일·파일 공유 채널은 이 파일이 이동하는 경로다. 출처를 알 수 없는 채팅 아카이브는 격리 처리가 필요하다
조직 내에 수정 이전 파일의 열람·공유 경로가 없다면 직접적 영향은 제한적이다. 다만 외부에서 받은 채팅 아카이브 파일은 신뢰할 수 없는 파일로 취급하는 것이 안전하다.
탐지·대응
점검 대상 식별
- 수정판 릴리스 시점(7월)보다 이전에 생성된 HTML 내보내기 파일을 식별해 점검 대상에 포함
- 내보내기 HTML 소스에서 부적절히 이스케이프된 인라인 버튼 콘텐츠나 스크립트 태그를 스캔
- 메일·스토리지·파일 공유 채널에 텔레그램 데스크톱 HTML 내보내기 파일이 존재하는지 확인
즉시 조치
- 텔레그램 데스크톱을 v7.0.1 이상으로 업데이트해 이후 생성되는 내보내기 파일이 취약하지 않도록 확보
- 수정 이전 생성된 오래된 내보내기 파일을 웹 브라우저로 여는 것 중단
- 이메일·파일 공유로 받은 채팅 아카이브 파일(export_results.html, messages.html)을 신뢰할 수 없는 파일로 취급하고 격리
- 공유받은 파일의 출처와 생성 시점을 확인하는 절차 적용
중장기 개선
- 필요한 채팅 아카이브를 패치된 빌드(v7.0.1 이상)로 다시 내보내기
- 더 이상 필요 없는 오래된 내보내기 파일을 삭제하거나 격리 저장
- HTML 내보내기 파일의 보관·공유 전 재검증(제거 처리 포함) 기준 마련
한계 및 참고자료
- 벤더 또는 독립 기관의 심각도 점수(CVSS 등)가 증거에 포함되어 있지 않아, 기술적 깊이 외에 정량적 위험도는 제시할 수 없다
- CVE 번호와 벤더 공식 보안 공지(어드바이저리)가 증거에서 확인되지 않는다
- 수정 커밋의 전체 변경 내용이 확인되지 않아, 수정에서 적용된 정확한 이스케이프 구현은 서술할 수 없다
- 증거는 HTML 내보내기 파이프라인만 다루며, JSON 내보내기가 영향받는지 여부는 포함되지 않는다
- 와일드 악용 부재는 본 조사의 검색 결과에 근거한 것이며, 독립적인 확인을 거치지는 않았다
- 참고 링크는 아래 섹션에 나열한다
참고자료
- The Ghost in the Chat: stored XSS in Telegram Desktop HTML export
- Fix escaping in HTML export of keyboards. (commit 8457d13a)
- Release v 7.0.1 · telegramdesktop/tdesktop
- Telegram Desktop Flaw Lets Hidden JavaScript Exfiltrate Messages From HTML Exports
- Telegram Data Export Schema
함께 읽으면 좋은 글
- CVE-2026-84941 대응: Omada Controller SAML 메타데이터 XXE와 로컬 파일 노출 점검
- CVE-2026-17176 대응: TP-Link Deco BE11000 TDDP 명령 주입과 인접망 root 탈취 위험
- Surfshark 내부 테스트 서버 무단 접근 사고: 대응 중 외부 접속 단절과 코드 이력 자격증명 회전
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!