highCVSS 7.5Vulnerability

CVE-2026-88045

## Summary 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. ## Affected Assets & Attack Surface - `cmd/serve/s3/s3.go:40-46` defines the streaming buffer limit and describes it as a limit for out-of-order parts. - `cmd/serve/s3/server.go:67-101` permits anonymous requests when `AuthKey` is empty and configures S3 authentication otherwise. - `cmd/serve/s3/multipart.go:183-209` admits the declared part size and calls `Reserve(contentLength)` before `io.Copy` reads the body. - `cmd/serve/s3/multipart.go:220-238` always admits the current expected part and one oversized part when the buffer is empty, even when `size > bufferLimit`. - `lib/multipart/multipart.go:23-24` creates an RW backed by the global memo

Properties

ghsa_id
GHSA-2p48-j3qc-rx9f
summary
rclone: S3 multipart declared-length memory exhaustion
severity
high
cvss_score
7.5
cve_id
CVE-2026-88045
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
is_ghsa_only
false
ghsa_published
2026-09-10T22:45:14Z
source_url
https://github.com/advisories/GHSA-2p48-j3qc-rx9f
ghsa_updated
2026-09-10T22:45:14Z

Related Entities (4)

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]go/github.com/rclone/rclone

AFFECTS (1)

[Software]go/github.com/rclone/rclone

HAS_WEAKNESS (1)

[Weakness]Memory Allocation with Excessive Size Value

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-88045 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal