关键漏洞信息 Vendor: Tenda Product: AX-1806 Version: v1.0.0.1 (https://www.tenda.com.cn/material/show/3422) Vulnerability Type: Stack Overflow Author: Shuhao Shen 漏洞成因 当formSetWifiMacFilterCfg函数处理deviceList参数时,此参数是通过sub_295C8获得的。然后deviceList会首先按换行符(\n)分割,然后把每一行传给sub_38364->sub_38214进行进一步处理。在sub_38214函数中,设备名称通过查找回车符(\r),然后将设备名称字符串在\ r之前直接复制到堆栈上v15+32的位置,而没有进行长度校验使用strcpy。目标缓冲区v15是char v15[160]在sub_38364中分配的堆栈上的,只有160字节的大小。从偏移量+32开始复制后,实际可用空间仅为128字节。然而,deviceList的每一行中的“Device Name”部分完全在攻击者的控制之下。当攻击者构造的设备名称的长度对于单个规则超过128字节(例如,156字节或更长),strcpy将直接溢出堆栈缓冲区v15,覆盖保存的返回地址(保存的RIP / EIP),堆栈帧指针和其他关键的堆栈数据。攻击者可以通过精心构造一个极长的deviceList参数,精确控制一个程序的返回地址,从而实现任意代码执行或至少触发一个稳定的拒绝服务(DoS)攻击。 漏洞代码片段 PoC 为了重现此漏洞,请按照以下步骤操作: 1. 通过qemu-system或其他方式(真实设备)启动固件 2. 使用以下POC进行攻击 结果 目标路由器崩溃且无法正确并持续地提供服务。 ```plaintext // 结果部分截图和命令行输出