뉴스 목록
The Hacker News2026. 09. 15.

Telegram Desktop 취약점, HTML 내보내기 파일의 숨겨진 JavaScript로 메시지 유출 가능

한 줄 요약

Telegram Desktop의 HTML 채팅 내보내기 기능에서 숨겨진 JavaScript(웹 브라우저가 자동으로 실행하는 코드)가 심어질 수 있는 취약점이 발견되었습니다. 악의적인 봇이 메시지 버튼 안에 스크립트를 숨겨두면, 사용자가 채팅을 HTML로 내보내 브라우저에서 열었을 때 스크립트가 자동 실행되어 모든 메시지 내용을 공격자 서버로 빼낼 수 있습니다. 취약점은 Telegram Desktop 4.15.1(2024년 3월)부터 6.9.3 버전까지 약 2년 4개월간 존재했으며, 7.0.1 버전에서 수정되었습니다. 앱을 업데이트해도 이미 내보낸 HTML 파일은 보호되지 않으므로, 수정 전 버전으로 만든 파일은 다시 내보내거나 JavaScript를 비활성화한 상태에서 열어야 합니다.

사건

ExPatch 소속 보안 연구원 Denis Rostilov·Aleksander Rostilov가 Telegram Desktop HTML 내보내기 코드에서 봇 인라인 키보드 버튼 텍스트를 이스케이프(특수문자 변환) 처리하지 않는 결함을 발견했습니다. 봇이 버튼 텍스트에 <script> 태그를 심으면 내보낸 HTML 파일에 그대로 포함됩니다.

영향

내보낸 HTML 파일을 브라우저에서 열면 스크립트가 자동 실행되어 메시지·발신자명·타임스탬프·채팅명·로컬 파일 경로 등이 공격자 서버로 유출됩니다. 페이지 내용을 위변조할 수도 있어, 기록 자료로 쓰이는 내보내기 파일의 날짜·발신자·메시지를 조작하거나 가짜 인증 폼으로 교체하는 것도 가능합니다.

원인

HTML 내보내기 코드가 메시지 본문·발신자명 등 다른 필드에는 이스케이프를 적용했지만, 봇 인라인 키보드의 버튼 텍스트는 이스케이프 없이 HTML에 직접 삽입했습니다. 해당 코드는 2024년 3월 버전 4.15.1부터 존재했습니다.

대응

Telegram Desktop 6.9.4 베타(2026년 7월 3일) 및 7.0.1 안정 버전(7월 14일)에서 누락된 이스케이프 처리를 추가해 수정했습니다. Telegram은 6월 1일 보고 접수 후 7월 1일 취약점을 인정하고 $500 버그 바운티를 제안했으나, 연구원들은 이를 거절하고 자선 기부를 요청했습니다.

실무 포인트

앱 업데이트만으로는 이전에 내보낸 HTML 파일의 위험이 제거되지 않습니다. 수정 전 버전(6.9.3 이하)으로 생성한 HTML 내보내기 파일은 다시 내보내거나, 재내보내기가 어려울 경우 JavaScript를 비활성화한 브라우저에서만 열어야 합니다. 특히 메시지 출처 확인이 어려운 대규모 그룹 내보내기 파일을 주의해야 합니다.

본문

보안 연구팀 ExPatch가 9월 12일 공개한 보고서에 따르면, Telegram Desktop의 결함으로 인해 봇 메시지에 심어진 숨겨진 JavaScript가 사용자가 HTML로 내보낸 채팅 파일 안에 포함될 수 있었습니다.

Telegram 화면에서 해당 메시지는 링크 버튼이 달린 평범한 메시지처럼 보였으며, 스크립트는 사용자가 내보내기 파일을 웹 브라우저에서 열었을 때에만 실행되었습니다. 실행된 스크립트는 파일 안의 모든 메시지를 공격자가 제어하는 서버로 전송하거나, 페이지에 표시되는 내용을 임의로 바꿀 수 있었습니다.

Telegram은 7월에 수정 버전을 배포했지만, 앱 업데이트는 이전 버전으로 내보낸 파일에는 영향을 미치지 않으므로, 구 버전으로 생성한 HTML 내보내기 파일에는 스크립트가 여전히 남아 있을 수 있습니다.

Telegram Desktop은 Windows·macOS·Linux용 Telegram 앱으로, 특정 대화 하나 또는 계정의 전체 대화를 브라우저에서 열 수 있는 HTML 페이지 형태로 저장하는 기능을 제공합니다. 봇은 메시지 아래에 버튼 행을 붙일 수 있으며(Telegram에서는 '인라인 키보드'라고 부름), 각 버튼에 표시할 텍스트는 봇이 직접 지정합니다.

연구원 Denis Rostilov와 Aleksander Rostilov는 수정 전까지 내보내기 코드가 버튼 텍스트를 이스케이프 처리 없이 HTML 페이지에 그대로 삽입했다는 사실을 발견했습니다.

이스케이프란 < 같은 문자를 브라우저가 코드로 해석하지 않고 텍스트로 표시하도록 변환하는 처리로, 내보내기 코드는 메시지 본문·발신자명 등 다른 필드에는 이 처리를 적용했습니다.

따라서 봇은 버튼 텍스트에 <script> 태그를 삽입할 수 있었으며, 연구원들이 테스트한 Telegram Desktop 빌드에서는 보이지 않는 문자를 덧붙여 버튼이 비어 있는 것처럼 보이게 만들었습니다.

봇이 반드시 공격 대상 채팅에 참가해 있을 필요는 없습니다. 웹 링크 버튼만 달린 메시지는 전달(포워드)될 때 버튼이 그대로 유지되므로, 봇 메시지를 그룹에 전달한 멤버가 의도치 않게 스크립트를 함께 옮기게 됩니다. 연구원들에 따르면, 전달된 메시지는 삭제되기 전까지 채팅 기록에 일반 메시지와 같이 남아 있으며 수개월 또는 수년 뒤에도 내보내기에 포함될 수 있습니다.

연구원들은 취약점 발견 이틀 후인 6월 3일 Telegram에 신고했으며, 자신들의 계정과 테스트 그룹에서만 실험했다고 밝혔습니다. 보고서에는 실제 사용자를 대상으로 악용됐다는 주장은 포함되어 있지 않습니다.

연구원들에 따르면, 해당 메시지가 포함된 내보내기 파일을 열면 별도의 클릭 없이 스크립트가 실행되었습니다. 스크립트는 파일 안의 모든 메시지(발신자명·타임스탬프 포함), 채팅명·유형·멤버 수, 그리고 로컬 파일 경로까지 읽어 공격자 서버로 전송할 수 있었습니다.

Telegram Desktop의 내보내기 코드는 긴 내보내기를 1,000개 메시지 단위의 파일로 분할하므로, 하나의 파일에서 유출되는 내용은 해당 파일에 포함된 메시지에 한정되며 전체 채팅이나 Telegram 계정 전체는 노출되지 않습니다.

스크립트는 페이지 자체를 조작할 수도 있었습니다. 연구원들의 시연에서는 내보내기 전체가 가짜 Telegram '인증' 양식으로 교체되었습니다.

연구원들은 같은 방식으로 기록 자료로 활용되는 파일의 날짜·발신자·메시지 내용을 변경할 수 있다고 밝혔습니다. 다만 Telegram 서버에 저장된 채팅 원본이나 디스크에 저장된 내보내기 파일 자체는 변경되지 않습니다.

연구원들은 이 취약점을 CVSS 3.1 기준 10점 만점에 8.2점으로 평가했으며, 9월 14일 현재 Telegram이나 미국 국가취약점데이터베이스(NVD)로부터 별도의 점수는 부여되지 않은 상태입니다.

스크립트가 실행되려면 세 가지 조건이 모두 충족되어야 합니다: 수정 전 버전의 Telegram Desktop으로 HTML 내보내기를 생성했을 것, 스크립트가 심어진 메시지가 내보내기 범위에 포함될 것, 해당 파일이 JavaScript가 활성화된 브라우저에서 열릴 것.

연구원들은 Telegram Desktop의 HTML 내보내기만 분석했으며, JSON 내보내기 형식이나 Telegram 다른 앱의 내보내기 기능은 검토하지 않았습니다.

전달된 봇 메시지가 내보내기에 포함되는지 여부는 내보내기 방식에 따라 달라집니다. 채팅 메뉴에서 특정 채팅을 내보내면 모든 멤버의 메시지가 포함됩니다. 내보내기 코드와 Telegram 문서에 따르면, 전체 계정 내보내기는 기본적으로 그룹·채널에서는 계정 소유자 본인의 메시지만 포함하지만, 1:1 대화 및 봇과의 대화에서는 모든 메시지가 포함됩니다.

Telegram Desktop 개발자 John Preston이 작성한 수정 커밋 8457d13a는 누락된 이스케이프 처리를 추가합니다. 이 커밋은 6월 30일 작성되었으며, 7월 3일 6.9.4 베타에, 7월 14일 7.0.1 안정 버전에 반영되었습니다. GitHub에 공개된 첫 번째 수정 버전입니다. 이스케이프가 누락된 코드는 2024년 3월 4.15.1 버전부터 약 2년 4개월간 안정 버전에 포함되어 있었습니다.

  • 영향 버전: Telegram Desktop 4.15.1(2024년 3월) ~ 6.9.3
  • 수정 버전: 6.9.4 베타(2026년 7월 3일), 7.0.1(2026년 7월 14일) 이상

연구원들의 사용자 권고 사항:

  • Telegram Desktop을 7.0.1 이상, 또는 베타 채널 사용 시 6.9.4 이상으로 업데이트하세요.
  • 업데이트 후, 수정 전에 HTML로 내보낸 채팅이 있다면 다시 내보내거나, 기존 파일은 JavaScript를 비활성화한 상태에서만 열어야 합니다.
  • 수정 전에 생성한 HTML 내보내기 파일은 신뢰하지 않는 것으로 취급하세요. 특히 각 메시지의 출처를 확인하기 어려운 대규모 그룹의 내보내기 파일은 더욱 주의가 필요합니다.

앱을 업데이트하기 전까지는 새로운 HTML 내보내기를 생성할 이유가 없습니다. 취약점이 있는 코드로 생성된 내보내기 파일에만 결함이 존재하기 때문입니다.

9월 14일 현재, Telegram은 기존 내보내기 파일을 보유한 사용자를 위한 별도 안내를 공개하지 않은 상태입니다.

보안 공지 없음, CVE 없음

6.9.4 및 7.0.1 릴리스 노트, 앱 변경 이력, 그리고 Telegram의 7월 14일 업데이트 공지 어디에도 해당 수정 사항은 언급되어 있지 않으며, GitHub의 Telegram Desktop 저장소에도 보안 권고가 등록되어 있지 않습니다.

이 취약점에 대한 CVE 식별자도 존재하지 않습니다. 연구원들은 9월 11일 기준으로, 9월 14일 The Hacker News가 공개 취약점 데이터베이스를 검색한 결과 관련 항목을 찾을 수 없었다고 밝혔습니다.

연구원들에 따르면, Telegram은 7월 1일 취약점을 확인하고 $500 버그 바운티를 제안했으나, 연구원들은 이를 거절하고 자선 기부로 대신해 달라고 요청했습니다. 또한 패치 배포 전까지 공개를 유보하겠다고 제안하며 협력 공개 일정을 요청했습니다.

"저희는 공개 공시 가능성도 검토했으나 승인할 수 없습니다. 이미 해결된 취약점이라도 공개할 경우 향후 더 많은 Telegram 사용자가 위험에 처할 수 있습니다. 예를 들어 취약점 정보가 공개되면 악의적인 행위자가 이를 악용해 Telegram 사용자에게 금전적 피해를 줄 수 있습니다." — Telegram 지원팀이 7월 1일 보낸 이메일(연구원들이 스크린샷으로 공개)

연구원들은 이 이메일을 패치 배포 후에도 공개를 허용하지 않겠다는 의사로 받아들였습니다. 연구원들은 보고서에 비공개 계약이 적용되지 않았다고 밝혔으며, 패치가 배포된 이후인 9월 12일 내용을 공개했습니다.

Telegram의 공개 버그 바운티 규정에는 "해결되기 전에 공개된" 취약점은 바운티 대상이 되지 않는다고 명시되어 있습니다. 해당 페이지에는 패치 배포 이후 공개에 관한 내용은 포함되어 있지 않습니다.

출처
The Hacker News · thehackernews.com
원문 보기

분야별 뉴스

관심 분야의 보안 이슈를 모아 보세요.

TORUN SECURITY

투런이 제공하는 보안 솔루션

공격 표면 관리부터 엔드포인트·내부정보 보호까지, 기업 환경에 맞는 보안 솔루션을 투런이 함께 설계합니다.