CVE-2026-88045
nicheMemory-exhaustion DoS in rclone serve s3 multipart handling
rclone 1.75.0 contains a memory-allocation flaw (CWE-789) in the streamed multipart path of its `rclone serve s3` server: an attacker-controlled Content-Length or X-Amz-Decoded-Content-Length is passed to multipart.NewRW().Reserve before any body bytes are read, and the waitForTurn logic admits the current part plus one oversized part even when this exceeds the configured --multipart-streaming-buffer-limit, with the lib/pool allocator backing reservations in 1 MiB pages. A network client can therefore declare large multipart uploads and never send the declared bodies, retaining or multiplying memory reservations. The attacker gains remote denial of service - process or host memory exhaustion or permanently blocked request handlers - with no confidentiality or integrity impact (CVSS 3.1: 7.5, availability only). Anyone running `rclone serve s3` on an affected version is exposed: anonymous S3 deployments need no credentials, while deployments with auth_key require an accepted S3 key. There is no known exploitation, public proof-of-concept, or CISA KEV listing, and the flaw is fixed in rclone 1.75.1.
What to do: Upgrade to rclone 1.75.1. If immediate upgrade is not possible, restrict access to `rclone serve s3` endpoints to trusted networks, require an auth_key so anonymous clients cannot trigger the condition, and monitor process/host memory and hung request handlers. Inventory your estate for deployments running rclone 1.75.0 with the S3 server enabled, prioritizing anonymous (unauthenticated) deployments.
| rclone (serve s3 / cmd/serve/s3) | >= 1.75.0 and < 1.75.1 (fixed in 1.75.1) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
rclone is a command-line program to sync files and directories to and from different cloud storage providers. From 1.75.0 until 1.75.1, the serve S3 streamed multipart path in cmd/serve/s3/multipart.go passes attacker-controlled contentLength to multipart.NewRW().Reserve before reading request-body bytes. waitForTurn admits the current part and one oversized part when the buffer is empty despite --multipart-streaming-buffer-limit, and lib/pool allocates 1 MiB pages according to Content-Length or X-Amz-Decoded-Content-Length. A network client can retain or multiply these reservations without sending the declared body, exhausting process or host memory or permanently blocking request handlers. Anonymous S3 deployments require no credentials, while deployments using auth_key require an accepted S3 key. This issue is fixed in version 1.75.1.
- Ecosystems
- go
- Weakness
- CWE-789
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- GHSA
- GHSA-2p48-j3qc-rx9f (high)
In the news0 stories
No ingested article mentions this CVE yet.