CVE-2026-71257
largeMultipart upload limit bypass and memory-exhaustion risk in Apache Wicket
Apache Wicket versions 8.0.0 through 8.18.0, 9.0.0 through 9.23.0, and 10.0.0 through 10.10.0 fail to enforce the per-file size limit (Form#setFileMaxSize) and file count limit (Form#setFileCountMax) when a multipart request body has already been consumed by another component, causing Wicket to fall back to reading uploads via HttpServletRequest#getParts() and process them as if those limits had been satisfied. This fallback is reached in deployments where a servlet annotated with @MultipartConfig, Spring Boot's multipart resolver, or a filter calling HttpServletRequest#getParameter() parses the multipart body first, affecting upload paths such as Form with FileUploadField, FileUploadToResourceField and AjaxFileDropBehavior. A remote uploader can submit files larger or more numerous than the application permits (bounded by whatever the other parsing component allows), and a part lacking a Content-Type header is additionally read into memory in full during parsing, enabling attacker-controlled large allocations and potential memory exhaustion and denial of service (CVSS 7.5, availability impact high). Only applications that explicitly configure a per-file or file-count limit and route uploads through such a co-parsing path are affected; the total upload size limit Form#setMaxSize is not impacted, and applications configuring neither of the two affected limits are unaffected. No public proof-of-concept, in-the-wild exploitation, or CISA KEV listing is known, and EPSS estimates a 0.8% probability of exploitation within 30 days.
What to do: Upgrade to Apache Wicket 8.19.0, 9.24.0, or 10.11.0 as applicable, and migrate 7.x or older deployments to a supported branch. As an interim mitigation, configure equivalent limits in the component that parses the request body, for example spring.servlet.multipart.max-file-size and max-request-size in Spring Boot, or maxFileSize and maxRequestSize in @MultipartConfig or the web.xml multipart-config element. Audit whether your deployment has a @MultipartConfig servlet, Spring Boot's multipart resolver, or a filter calling getParameter() on multipart requests ahead of Wicket, and whether Form#setFileMaxSize or Form#setFileCountMax limits are set, since both conditions are required for exposure.
| Apache Wicket 8.x | 8.0.0 through 8.18.0 (fixed in 8.19.0) |
| Apache Wicket 9.x | 9.0.0 through 9.23.0 (fixed in 9.24.0) |
| Apache Wicket 10.x | 10.0.0 through 10.10.0 (fixed in 10.11.0) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Apache Wicket enforces the upload limits configured on a form or upload field while parsing a multipart request with Apache Commons FileUpload. If the request body has already been consumed by another component, Commons FileUpload returns no items and Wicket falls back to reading the upload through HttpServletRequest#getParts(). The per-file size limit (for example Form#setFileMaxSize) and the file count limit (Form#setFileCountMax) are not applied to the parts obtained that way, and no exception is raised, so the upload is processed as though those limits had been satisfied. A remote uploader can therefore submit files that are larger, or more numerous, than the application permits, up to whatever the component that parsed the request allows. A part carrying no Content-Type header is additionally read into memory in full during parsing, so the size of that allocation is determined by the request and bounded only by those same external limits. The total upload size limit (Form#setMaxSize) is not affected. Commons FileUpload compares the declared Content-Length against it before reading the body, so a request declaring an oversized length is rejected before the fallback is reached. The fallback is reached in deployments where a servlet or filter has already parsed the request body — for example a servlet annotated with @MultipartConfig, Spring Boot's multipart resolver, or any filter that calls HttpServletRequest#getParameter() on a multipart request. It applies to the Wicket components that accept uploads on that path, including Form with FileUploadField, FileUploadToResourceField and AjaxFileDropBehavior. Applications that configure neither a per-file nor a file-count limit are not affected, as Wicket applies neither by default. This issue affects Apache Wicket: from 8.0.0 through 8.18.0, from 9.0.0 through 9.23.0, from 10.0.0 through 10.10.0. Users are recommended to upgrade to version 8.19.0, 9.24.0 or 10.11.0, which fix the issue. Users of Apache Wicket 7.x or older, which are no longer supported, should upgrade to a supported version. As a workaround, configure equivalent limits in the component that parses the request — for example spring.servlet.multipart.max-file-size and max-request-size, or maxFileSize and maxRequestSize in @MultipartConfig or in the web.xml element.
- Vendors
- apache
- Products
- wicket
- Weakness
- CWE-770
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.