CVE-2026-107834 OWASP Coraza WAF 文件描述符耗尽漏洞
影响未认证攻击者可耗尽进程文件描述符,导致拒绝服务
OWASP Coraza WAF 是一款 Go 语言编写的、兼容 ModSecurity 的 Web 应用防火墙库。在 3.0.0 至 3.8.0 版本中,其 multipart 解析逻辑对每个上传文件分片都执行 defer temp.Close(),导致临时文件描述符在请求完全返回前一直保持打开状态。攻击者可通过构造包含大量小文件分片的 multipart 请求耗尽进程文件描述符表,造成拒绝服务。
影响范围
受影响版本为 OWASP Coraza WAF 3.0.0 至 3.8.0,3.8.0 版本已修复。
漏洞详情
漏洞类型为资源耗尽型拒绝服务(CWE-400/CWE-772)。成因是 internal/bodyprocessors/multipart.go 的 multipart 循环中对每个文件分片使用 defer temp.Close(),defer 直到整个请求处理函数返回才执行,因此所有临时文件描述符在请求期间持续占用。未认证攻击者只需在请求体大小限制内提交大量最小文件分片,即可在单个请求内耗尽文件描述符,引发 os.CreateTemp 失败、MULTIPART_STRICT_ERROR 响应、合法上传被阻断,甚至进程级无法打开文件或套接字。
利用条件与风险
利用无需认证,仅需发送一个包含大量文件分片的 multipart 请求即可触发,实战中可造成服务不可用,风险中等。
修复建议
官方已在 3.8.0 版本修复,建议升级至 3.8.0 或更高版本。临时缓解措施包括限制请求体大小、限制 multipart 分片数量,或在网关层对上传请求进行限流,暂无其他公开缓解信息。
OWASP Coraza WAF is a golang modsecurity compatible web application firewall library. From 3.0.0 until 3.8.0, the multipart loop in internal/bodyprocessors/multipart.go executes defer temp.Close() for every uploaded file part, so each temporary-file descriptor remains open until the complete request returns. An unauthenticated attacker can submit a multipart body containing many minimal file parts and exhaust the process file-descriptor table within the request-body size limit, causing os.CreateTemp failures, MULTIPART_STRICT_ERROR responses, blocked legitimate uploads, and process-wide inability to open files or sockets. This issue is fixed in version 3.8.0.