CVE-2026-42854arduino-esp32在3.3.8版本之前存在严重的栈溢出漏洞。其WebServer组件的multipart表单解析器在处理HTTP请求时,直接利用攻击者可控的Content-Type头部boundary字段值,在栈上分配变长数组(VLA)。由于未对长度进行限制,发送超长字符串(>8000字符)将溢出loopTask的任务栈,导致设备崩溃及潜在的远程代码执行风险。
该漏洞源于arduino-esp32核心库中WebServer组件的multipart表单解析逻辑。在处理包含文件上传的HTTP请求时,解析器需要提取Content-Type头部中的boundary字符串用于分隔数据。受影响版本的代码使用了C语言的变长数组(VLA)特性,直接根据攻击者提供的boundary字符串长度在栈上动态分配内存。由于ESP32微控制器通常运行在资源受限环境中,loopTask的默认栈大小仅为8192字节。当攻击者发送一个boundary字段超长(例如超过8000字符)的恶意请求时,分配的VLA大小将超过剩余栈空间,导致严重的栈溢出。这不仅会覆盖栈上的局部变量和帧指针,还可能覆盖函数的返回地址,从而造成设备崩溃。若攻击者精心构造溢出内容,即可控制程序流程,实现远程代码执行(RCE),完全控制设备。