CVE-2026-39803该漏洞存在于 mtrudel 开发的 bandit 库中,源于 HTTP/1 接口处理分块传输请求时未正确限制资源分配。未经身份验证的远程攻击者可发送恶意构造的大体积分块 POST 请求,导致服务器内存耗尽并崩溃,从而引发拒绝服务。此漏洞影响了 1.4.0 至 1.11.1 之前的所有版本。
漏洞位于 `lib/bandit/http1/socket.ex` 的 `read_data/2` 函数中。在处理 HTTP/1 分块请求体时,该函数忽略了调用者传入的 `:length` 限制参数。正常流程应将累积正文限制在配置范围内(如 Plug.Parsers 默认的 8MB),但受影响代码将接收到的每个块无条件缓冲到 iolist 中,并将整个正文实现为单个二进制文件。由于该函数总是返回成功状态,调用者无法介入返回 413 响应。Plug.Parsers 在路由和认证前运行,攻击者无需凭证即可通过向任意路径发送超大分块 POST 请求,导致 BEAM 进程内存耗尽并被 OOM Killer 终止。