CVE-2025-13190D-Link DIR-816L 2_06_b09_beta版本中存在一个严重的栈缓冲区溢出漏洞。该漏洞位于/portal/__ajax_exporer.sgi文件中的scandir_main函数,攻击者通过操控函数参数en即可触发栈缓冲区溢出。由于该漏洞可通过远程利用,且无需认证即可发起攻击,因此具有极高的安全风险。攻击者成功利用此漏洞可以在受影响设备上执行任意代码,从而完全控制路由器设备。值得注意的是,D-Link已停止对DIR-816L产品的维护支持,这意味着该漏洞将无法通过官方渠道获得修复补丁。受影响设备可能面临被入侵、植入恶意软件、组建僵尸网络或进行中间人攻击等风险。建议用户尽快停止使用该设备或采取临时缓解措施。
该漏洞为经典的栈缓冲区溢出问题。在C/C++编程中,栈缓冲区溢出发生在程序向栈上的固定大小缓冲区写入超过其容量的数据时。在本案例中,scandir_main函数在处理用户输入的en参数时,未对输入长度进行充分验证就直接拷贝到栈上的局部缓冲区中。攻击者可以构造超长的字符串作为en参数,当该字符串被复制到栈缓冲区时,会覆盖相邻的栈内存区域,包括返回地址和保存的寄存器值。通过精心构造payload,攻击者可以覆写返回地址,使其指向恶意代码,从而在函数返回时跳转到攻击者预设的shellcode执行。由于该漏洞存在于Web服务接口(/portal/__ajax_exporer.sgi)中,攻击者可以通过HTTP请求远程触发漏洞,无需物理接触设备。路由器通常以root权限运行,攻击成功后将获得完整的系统控制权。