XSS dạng lưu trữ trong bộ xuất HTML của Telegram Desktop có thể làm lộ chat đã export

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-94488 là gì?

Lỗ hổng CVE-2026-94488 là lỗ hổng Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') ảnh hưởng tới Telegram Desktop (phiên bản bị ảnh hưởng: 4.15.1 – < 6.9.4). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.3. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Telegram Desktop trước 6.9.4 cho phép XSS trong bộ xuất HTML. (Phiên bản stable đầu tiên được sửa là 7.0.1.) Lỗi xảy ra tại button.text.toUtf8 trong export_output_html.cpp. Không thể khai thác nếu nạn nhân chưa sử dụng chức năng xuất HTML. Tuy nhiên, payload khai thác vẫn có thể được xuất nếu một tin nhắn được một thành viên chuyển tiếp vào nhóm (người viết tin nhắn không cần là thành viên của nhóm).

Sản phẩm và phạm vi ảnh hưởng

  • Telegram Desktop trên Windows, macOS và Linux bị ảnh hưởng trong phạm vi semver >=4.15.1 và <6.9.4, được mô tả tương ứng là từ 4.15.1 đến 6.9.3.
  • Thành phần bị ảnh hưởng là export_output_html.cpp trong HTML chat-export module, đặc biệt là luồng HtmlWriter::Wrap::pushMessage.
  • Nhánh beta có bản sửa đầu tiên là 6.9.4.
  • Nhánh stable có bản sửa stable đầu tiên là 7.0.1.
  • Phân tích công khai chỉ xác nhận HTML export. Trạng thái của JSON export và chức năng export trong các ứng dụng Telegram khác chưa được xác lập.
  • Các HTML export được tạo bằng bản bị ảnh hưởng có thể vẫn chứa payload nguy hiểm sau khi ứng dụng được cập nhật.

Chi tiết kỹ thuật

Telegram Desktop đưa nội dung chữ của các nút inline keyboard vào HTML export mà không escape đúng cách. Trong luồng xử lý dễ bị lỗi, HtmlWriter::Wrap::pushMessage nối trực tiếp button.text.toUtf8() vào tài liệu HTML; bản sửa áp dụng SerializeString(...) cho nội dung này. Tin nhắn do kẻ tấn công kiểm soát có thể mang theo nội dung được trình duyệt diễn giải như mã JavaScript, và một tin nhắn như vậy có thể được thành viên chuyển tiếp vào nhóm ngay cả khi người tạo tin nhắn không phải là thành viên nhóm. Điều kiện khai thác là nạn nhân phải tạo HTML export có chứa tin nhắn đó rồi mở tệp bằng trình duyệt đang bật JavaScript. Khi được mở, mã được chèn có thể đọc các tin nhắn và metadata được render trong tài liệu, gửi chúng ra ngoài hoặc thay đổi nội dung hiển thị; bằng chứng hiện có không cho thấy nó sửa lịch sử Telegram phía máy chủ hoặc tệp export đã lưu trên đĩa. Phạm vi được xác nhận là HTML chat-export module trên Windows, macOS và Linux; các định dạng JSON và chức năng export của ứng dụng Telegram khác chưa được xác lập là bị ảnh hưởng.

Khả năng khai thác

Lỗ hổng được kích hoạt trong quy trình export cục bộ trên máy nạn nhân, không phải khi Telegram Desktop chỉ hiển thị tin nhắn trong giao diện riêng của ứng dụng. Theo bản ghi và phân tích kỹ thuật, kẻ tấn công không cần tham gia nhóm mục tiêu; một tin nhắn có payload có thể được thành viên chuyển tiếp vào nhóm để đưa payload vào lịch sử chat. Nạn nhân phải thực hiện HTML export có chứa tin nhắn và mở tệp bằng trình duyệt cho phép JavaScript chạy. Bản trình diễn công khai cho biết script chạy mà không cần thêm lần nhấp nào sau khi tệp được mở. Có public proof of concept và technical demonstration, nhưng các nhà nghiên cứu cho biết họ chỉ thử nghiệm trên tài khoản và nhóm kiểm thử của mình, không khẳng định đã có khai thác nhằm vào người dùng thực tế.

Tác động kỹ thuật

Khai thác thành công cho phép mã JavaScript chạy trong browser context đang mở tệp HTML export. Mã đó có thể đọc dữ liệu được render trong tài liệu, gửi dữ liệu ra ngoài và thay đổi nội dung mà người dùng nhìn thấy. Tác động được chứng minh ở cấp tài liệu, vì bằng chứng hiện có không cho thấy việc sửa lịch sử Telegram phía máy chủ hoặc nội dung tệp export trên đĩa. Kích thước dữ liệu bị lộ phụ thuộc vào nội dung của tệp đang mở, không mặc nhiên bao gồm toàn bộ tài khoản hoặc toàn bộ lịch sử chat. Rủi ro đặc biệt đáng chú ý với các bản export được dùng làm hồ sơ hoặc bằng chứng vì nội dung hiển thị có thể bị làm giả trong browser context.

Tác động đến tổ chức

Nếu một HTML export bị nhiễm được mở, mã chạy trong tài liệu có thể đọc các tin nhắn, tên người gửi, timestamp và metadata được render trong chính tệp đó rồi gửi dữ liệu ra máy chủ của kẻ tấn công. Nội dung hiển thị trong bản export cũng có thể bị thay đổi, tạo rủi ro đối với hồ sơ kiểm toán, pháp lý hoặc compliance được xem qua trình duyệt. Bằng chứng hiện có giới hạn tác động ở tài liệu export đang mở; nó không cho thấy lịch sử Telegram phía máy chủ bị sửa đổi hoặc tệp đã lưu trên đĩa bị ghi lại. Các HTML export cũ có thể tiếp tục nguy hiểm sau khi ứng dụng đã được cập nhật vì bản cập nhật không tự sửa các tệp đã tạo trước đó.

Cách khắc phục

  1. Đối với nhánh stable, cập nhật Telegram Desktop lên 7.0.1. Đối với nhánh beta, sử dụng 6.9.4, là bản beta đầu tiên được xác định có bản sửa.
  2. Tạo lại các HTML export quan trọng bằng bản đã sửa. Việc cập nhật ứng dụng không tự động làm sạch hoặc viết lại những tệp HTML đã được tạo trước đó.
  3. Cho đến khi tạo lại, coi mọi HTML export được tạo trước bản sửa hoặc không rõ nguồn gốc là dữ liệu không đáng tin cậy. Không mở chúng bằng trình duyệt có bật JavaScript; nếu bắt buộc phải kiểm tra, hãy tắt JavaScript trước.
  4. Rà soát các HTML export từ nhóm, đặc biệt những bản có tin nhắn được chuyển tiếp hoặc inline keyboard buttons, và hạn chế chia sẻ các tệp chưa được tạo lại.

Cách phát hiện

  1. Kiểm kê các máy Windows, macOS và Linux đang chạy Telegram Desktop, đồng thời xác định nơi nào có quy trình HTML chat export hoặc lưu trữ các tệp HTML export.
  2. Tìm các HTML export có nguồn gốc trước khi triển khai bản sửa hoặc không xác định được nguồn gốc. Không mở trực tiếp các tệp này trong trình duyệt có bật JavaScript.
  3. Ưu tiên rà soát các bản export từ nhóm có tin nhắn được chuyển tiếp hoặc có inline keyboard buttons, vì đây là các điều kiện mang payload được mô tả trong phân tích công khai.
  4. Nếu cần kiểm tra nội dung, sử dụng bản sao không chứa dữ liệu nhạy cảm và tắt JavaScript trong trình duyệt trước khi mở tệp.
  5. Có thể xem xét browser và network telemetry để phát hiện yêu cầu ra ngoài hoặc thay đổi bất thường của trang khi một tệp HTML cũ được mở. Đây chỉ là biện pháp giám sát phòng ngừa; các nguồn đã xem không cung cấp IOC hoặc log event đặc thù cho lỗ hổng này.
Nguồn (17)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.