CVE-2025-65288CVE-2025-65288是影响Mercury MR816v2路由器固件(版本081C3114 4.8.7 Build 110427 Rel 36550n)的一个中等严重性安全漏洞。该漏洞的根本原因在于设备对来自局域网(LAN)主机的hostname字段缺乏有效的长度验证机制。当设备接收并存储来自LAN主机的超长hostname时,受影响的代码会执行未进行边界检查的内存拷贝和字符串拼接操作,将数据写入固定大小的缓冲区中。攻击者可以通过向目标设备发送精心构造的过长hostname来触发缓冲区溢出条件。这种溢出可能导致设备崩溃,造成拒绝服务(DoS)状态,在特定条件下甚至可能实现远程代码执行(RCE),使攻击者获得设备的控制权。该漏洞的CVSS评分为6.5,属于中等严重级别,攻击向量为邻接网络(AV:A),无需认证(PR:N)或用户交互(UI:N)即可利用。
该漏洞属于经典的栈缓冲区溢出类型。在Mercury MR816v2的固件中,hostname处理函数存在以下问题:1) 缺乏输入长度验证:设备在接收LAN主机的hostname时,没有检查字符串长度是否超过目标缓冲区的容量;2) 不安全的内存操作:使用strcpy、strcat或memcpy等不安全的字符串/内存操作函数,直接将用户可控的数据复制到固定大小的缓冲区中;3) 固定大小缓冲区:代码中声明的hostname存储缓冲区大小是固定的(例如64字节或128字节),但没有相应的长度检查逻辑。攻击者可以通过发送DHCP请求、mDNS响应或ARP announcement等网络协议包,其中包含超长的hostname字段(通常超过256字节),来触发溢出。溢出的数据会覆盖相邻的栈内存,包括函数返回地址和保存的寄存器值,在适当的条件下可以控制程序执行流程,实现代码执行。