漏洞关键信息 漏洞概述 漏洞类型: 基于栈的缓冲区溢出 受影响设备: Tenda A18 受影响的固件版本: V15.13.07.13 触发点: 通过HTTP请求中的 参数在 接口触发 漏洞描述 远程攻击者可以利用Tenda A18 V15.13.07.13中的基于栈的缓冲区溢出漏洞,通过 参数引起服务中断或执行任意代码。在处理从网络接收到的 参数值之前,未进行充分的长度校验,导致调用 时将用户控制的字符串复制到仅16字节大小的栈缓冲区中,造成溢出。 漏洞函数分析(反向工程) 通过逆向工程httpd二进制文件,确定了漏洞链。 1. 业务逻辑入口: - 处理 请求时,程序通过 函数检索用户控制的参数。 - 如果 参数设置为true,程序将配置5GHz扩展器设置。 2. 核心漏洞函数: - 漏洞存在于 函数中(通常位于地址0x44d1a0附近)。 - 由于 输入长度超过16字节限制,将导致栈溢出。 漏洞复现步骤 1. 固件仿真: 使用QEMU用户模式和chroot模拟固件环境。 2. 易受攻击代码触发: - 通过Python脚本发送恶意POST请求。 - 将输入长度为1,000,000字节的payload传递给易受攻击的代码路径。 分析 运行脚本后,httpd进程尝试返回到无效地址(例如,0x44444444),触发分段错误(SIGSEGV)。这会导致web管理界面无响应。 建议修复方案 严格的输入验证: 对 参数实施长度检查。 安全字符串函数: 使用 或 替换 。 编译器缓解措施: 编译固件时启用栈保护(fstack-protector-all)和ASLR,增加利用难度。