漏洞总结:Cesanta Mongoose 7.20 栈缓冲区溢出 漏洞概述 漏洞名称: Submit #770103: Cesanta Mongoose 7.20 栈缓冲区溢出 受影响组件: Mongoose v7.20 (mDNS 功能) 漏洞描述: 在 函数中,分配了一个固定大小为 282 字节的栈缓冲区用于构建 mDNS 响应。当响应 PTR 查询时,函数会将四个 DNS 记录(PTR + SRV + TXT + A)顺序写入该单一缓冲区,而未进行边界检查。 触发机制: 标准 mDNS 服务元数据通常为 262 字节,但用于 PTR 响应设备(使用标准 mDNS 服务元数据)的响应实际上需要 282 字节。然而,在 函数中, 操作缺乏边界检查。当调用 时,指针 已经偏移了 282 字节缓冲区的前 218 字节(PTR + SRV 记录)之后的 44 字节。任何超过此限制的 TXT 记录都将导致栈溢出。 影响范围 后果: 溢出会覆盖保存的寄存器 和 ,并将返回地址 ( ) 覆盖到 MIPS 栈上。当 返回时,可能导致程序崩溃或潜在的任意代码执行(具体取决于架构和运行环境)。 修复方案 截图中未提供具体的修复补丁或版本更新建议。此类漏洞通常需更新至修复后的版本或在代码中增加边界检查。 相关代码片段 1. 栈缓冲区定义: 2. 存在漏洞的无边界复制操作: