CVE-2026-88045: rclone: S3 multipart declared-length memory exhaustion
In streamed multipart mode, serve s3 passes the request’s declared part length to multipart.NewRW().Reserve(contentLength) before reading any part data. Reserve immediately obtains enough 1 MiB pool pages for the entire declared length. The request handler therefore allocates attacker-selected memory based only on Content-Length or X-Amz-Decoded-Content-Length; the client does not need to transmit the corresponding body.
--multipart-streaming-buffer-limit does not stop the allocation for the current expected part or for one oversized part when the buffer is empty. That exception is intentional to guarantee upload progress, and the flag’s short help is scoped to out-of-order parts; this report therefore does not treat the option as a total memory cap. The security issue is the absence of a separate safe maximum or incremental allocation: a small request header can cause an arbitrarily large reservation and exhaust the process or host.
The default S3 configuration allows anonymous access when no auth_key is set, so an unauthenticated network client can reach the path in such deployments. Authenticated deployments require a valid S3 credential. Confirmed affected targets are v1.75.0 and development commit 5629f2668c69149bf3d9d8e2a25bb32a2648606e, both of which include streamed multipart support.
References
- github.com/advisories/GHSA-2p48-j3qc-rx9f
- github.com/rclone/rclone/commit/7c1dfd99f3e6a22fcefd8686cc478226a15e63a1
- github.com/rclone/rclone/commit/ab1f458013aaf6356e4bdeca61f7cb9139f8eb86
- github.com/rclone/rclone/issues/9616
- github.com/rclone/rclone/releases/tag/v1.75.1
- github.com/rclone/rclone/security/advisories/GHSA-2p48-j3qc-rx9f
- nvd.nist.gov/vuln/detail/CVE-2026-88045
Code Behaviors & Features
Detect and mitigate CVE-2026-88045 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →