关键信息 TARGET 设备:TOTOlink A950RG 路由器 固件版本:V4.1.2cu.5204_B20210112 BUG TYPE 类型:Buffer Overflow Abstract 在 接口中存在缓冲区溢出漏洞, 参数未经过适当验证,相关函数在未执行边界检查的情况下将多个用户控制的字段拼接为固定大小的栈缓冲区。远程攻击者可以利用此漏洞导致服务中断或实现任意代码执行。 Details 漏洞位于 文件内的 函数。 函数通过 获取多个用户控制的参数,包括 、 、 和 。 函数初始化了一个 87 字节(0x57)的栈缓冲区 。 主执行路径中,函数使用 构建另一个缓冲区 ,并将 等参数拼接进去。 未检查长度的 操作将攻击者控制的格式化字符串复制到 87 字节的缓冲区 中。 Vulnerability Description 若 加上格式化的 、 和 总长度超过 87 字节,则可能发生以下情况: - 缓冲区溢出。 - 相邻栈变量(包括保存的寄存器)被损坏。 - 返回地址可能被覆盖。 - 进程崩溃(DoS)。 - 若漏洞被妥善利用,可能实现任意代码执行。 Impact 远程攻击者可能利用此漏洞导致服务中断或接管设备。 POC POC 代码通过发送长数据包触发溢出。代码如下: Observed Behavior 发送负载前,路由器管理界面正常工作。发送负载后,服务出现异常或崩溃,触发缓冲区溢出。