텔레그램 데스크톱 채팅 내보내기, 숨긴 스크립트로 메시지 유출
최근 30일 조회수 — 좋아요 —핵심 요약
텔레그램 데스크톱의 HTML 채팅 내보내기에서 escaping 누락으로 봇 버튼에 숨긴 스크립트가 실행돼 메시지가 유출될 수 있었다.
텔레그램 데스크톱(Telegram Desktop)의 채팅 내보내기 기능에서 봇 메시지에 숨긴 자바스크립트가 실행되는 취약점이 발견됐다. 보안 업체 ExPatch가 9월 12일 공개한 조사 결과에 따르면, 이 취약점을 이용하면 사용자가 HTML로 내보낸 대화 파일을 열었을 때 그 안의 모든 메시지를 공격자 서버로 빼돌리거나 화면 내용을 통째로 바꿔치기할 수 있다. 텔레그램은 7월에 이미 수정판을 냈지만, 그 이전 버전으로 만들어진 내보내기 파일은 여전히 이 악성 스크립트를 품고 있을 수 있다.
연구자 데니스 로스틸로프(Denis Rostilov)와 알렉산더 로스틸로프(Aleksander Rostilov)가 찾아낸 문제의 근원은 이스케이프(escaping) 처리 누락이다. 텔레그램 데스크톱은 개별 대화나 계정 전체를 HTML 페이지로 저장해 브라우저에서 열어볼 수 있게 해주는데, 이때 봇이 메시지 아래 붙이는 버튼(인라인 키보드)의 텍스트를 escaping 없이 그대로 HTML에 기록했다. escaping이란 < 같은 문자를 브라우저가 코드가 아닌 단순 텍스트로 표시하도록 변환하는 처리로, 원래는 메시지 본문과 발신자 이름 등에 적용됐어야 했다. 이 구멍을 이용하면 버튼 텍스트 안에 스크립트 태그를 심고, 눈에 보이지 않는 문자로 채워 텔레그램 데스크톱 화면에서는 버튼이 비어 있는 것처럼 보이게 만들 수 있었다.
더 심각한 대목은 공격 대상 채팅방에 봇이 직접 들어가 있을 필요조차 없다는 점이다. 웹 링크 버튼만 달린 메시지는 전달(포워드)돼도 버튼이 그대로 유지되기 때문에, 누군가 이 봇 메시지를 그룹으로 옮기기만 하면 스크립트도 함께 실려간다. 이후 이 메시지는 삭제되기 전까지 대화 기록에 평범하게 남아 있다가, 몇 달 또는 몇 년 뒤 만들어진 내보내기 파일에도 포함될 수 있다.
파일을 브라우저로 열면 클릭 없이 스크립트가 곧바로 실행됐다. 이 스크립트는 파일 안의 모든 메시지와 발신자명, 시각, 채팅방 이름·유형·멤버 수, 로컬 파일 경로까지 읽어 공격자 서버로 전송할 수 있었다. 다만 텔레그램 데스크톱의 내보내기 기능은 1000개 메시지 단위로 파일을 나누기 때문에, 한 파일이 노출하는 범위는 그 파일 자체에 국한되고 계정 전체나 대화 전체로 번지지는 않는다. 연구자들은 시연에서 이 스크립트로 내보내기 페이지 전체를 가짜 텔레그램 “본인 인증” 양식으로 바꿔치기하는 것도 보여줬다. 같은 방식으로 기록용으로 쓰이는 파일의 날짜, 발신자, 메시지 내용을 바꿔치기할 수도 있다고 밝혔는데, 다만 텔레그램 서버상의 실제 대화나 디스크에 저장된 내보내기 파일 자체를 변경하지는 못한다.
연구팀은 CVSS 3.1 기준 이 취약점에 8.2점을 매겼다. 9월 14일 현재 텔레그램이나 미국 국가취약점데이터베이스(NVD)의 공식 점수는 나와 있지 않다. 스크립트가 실행되려면 세 조건이 겹쳐야 한다. 수정 전 버전의 텔레그램 데스크톱으로 내보내기를 했어야 하고, 악성 메시지가 그 대화 범위 안에 있어야 하며, 파일을 자바스크립트가 켜진 브라우저로 열어야 한다. 연구는 텔레그램 데스크톱의 HTML 내보내기만 다뤘고, JSON 내보내기 형식이나 다른 플랫폼의 내보내기 기능은 검토 대상이 아니었다.
포워드된 봇 메시지가 실제로 내보내기 파일에 포함되는지는 내보내기 방식에 따라 갈린다. 개별 채팅을 메뉴에서 내보내면 모든 멤버의 메시지가 포함되지만, 계정 전체를 내보낼 때는 기본 설정상 그룹·채널에서는 계정 소유자 본인의 메시지만 담기고, 1대1 대화와 봇과의 대화는 전체가 포함된다고 텔레그램 문서와 내보내기 코드는 설명한다.
연구팀은 취약점을 발견한 지 이틀 뒤인 6월 3일 텔레그램에 신고했으며, 테스트는 자신들의 계정과 테스트 그룹에서만 진행했다고 밝혔다. 실제 사용자를 상대로 이 취약점이 악용된 사례가 있었다는 언급은 이번 공개 자료에 없다. 수정은 텔레그램 데스크톱 개발자 존 프레스턴(John Preston)이 6월 30일 작성한 커밋 8457d13a로 이뤄졌으며, 누락된 escaping 처리를 추가하는 내용이다. 이 수정은 7월 3일 6.9.4 베타에, 7월 14일 7.0.1 정식판에 반영됐다.1
Footnotes
-
The Hacker News, “Telegram Desktop Flaw Lets Hidden JavaScript Exfiltrate Messages From HTML Exports” ↩
읽기 목록은 이 브라우저에 저장됩니다.
출처
- Telegram Desktop Flaw Lets Hidden JavaScript Exfiltrate Messages From HTML Exports — The Hacker News
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.