Source: rclone Version: 1.69.3+dfsg-3 Severity: grave Tags: security upstream Justification: user security hole X-Debbugs-Cc: [email protected], Debian Security Team <[email protected]>
Hi, The following vulnerabilities were published for rclone. CVE-2026-88013[0]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. From 1.49.0 until | 1.75.1, the HTTP backend attaches headers configured through --http- | headers or headers= to requests in backend/http/http.go, while its | fshttp.NewClient client follows redirects without a backend-specific | http.Client.CheckRedirect policy. A configured remote that redirects | to another host can therefore cause custom secrets such as X-Api-Key | to be resent to that untrusted destination, and a same-host HTTPS- | to-HTTP redirect can expose Authorization or Cookie headers in | cleartext. Listing, stat, download, mount, and serve operations can | trigger the leak during normal use. This issue is fixed in version | 1.75.1. CVE-2026-88014[1]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. From 1.72.0 until | 1.75.1, the archive ZIP backend method (*Fs).readZip in | backend/archive/zip/zip.go accepts archive/zip.File.Name values from | an untrusted central directory and exposes cleaned entry names | without ensuring that they remain inside the archive namespace. | Entries such as ../../etc/cron.d/evil can survive path.Clean and | become Object.Remote() values that fs/sync and fs/operations use as | destination-relative paths, allowing rclone copy or sync to write | outside the selected destination on backends that do not | independently confine the path. The non-empty root check also used | strings.HasPrefix without a path boundary, so root foo could | incorrectly include sibling foobar entries. This issue is fixed in | version 1.75.1. CVE-2026-88015[2]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. Prior to 1.75.1, | backend/local with --links or links=true exposes symlink targets as | .rclonelink objects, and fs.RangeOption.Decode can pass an unchecked | positive Range start through Object.Open and openTranslatedLink. The | function slices the target string as linkdst[offset:], so a Range | start larger than the target length causes a deterministic slice- | bounds panic when lib/http/serve exposes the object through HTTP or | WebDAV. Go net/http normally recovers the panic per connection, | causing request-level denial of service rather than terminating the | entire process. This issue is fixed in version 1.75.1. CVE-2026-88016[3]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. Prior to 1.75.1, when | backend/local runs with --links, a source .rclonelink object can | plant a symlink in the destination and later directory metadata is | applied through that path. MkdirMetadata, writeMetadataToFile, and | setTimes operate when Directory.translatedLink=false, so os.Chown, | os.Chmod, os.Chtimes, and birth-time handling can bypass os.Root | confinement and follow the symlink. An attacker controlling source | contents can therefore apply selected ownership, permissions, | modification times, or birth times to a file or directory outside | the destination, with --metadata required for chmod and chown while | modification time is applied by the normal directory workflow. This | issue is fixed in version 1.75.1. CVE-2026-88017[4]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. From 1.64.0 until | 1.75.1, the FTP auth-proxy driver in cmd/serve/ftp/ftp.go stores one | obscured password per username in the server-wide userPass | map[string]string instead of binding the credential or VFS to the | authenticated session. If two accepted credentials use the same | username but resolve to different proxy backends, a later | CheckPasswd login overwrites userPass[user], and subsequent getVFS | operations on the first session are reauthorized with the later | password. The first session can then read, create, overwrite, | rename, or delete objects using the second credential’s backend | authority. Exploitation requires the later same-username login to | occur while the first session remains open. This issue is fixed in | version 1.75.1. CVE-2026-88018[5]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. Prior to 1.75.1, rclone | serve s3 configured with --auth-proxy but without --auth-key allows | authPairMiddleware to register any client-chosen accessKeyID with an | empty ws.s3Secret. gofakes3 then verifies the request’s SigV4 | signature against that same empty secret, while Server.auth passes | the access key identifier as both the user and authentication value | to the proxy without an independent per-identity secret. An | unauthenticated network attacker can therefore choose an arbitrary | access key, sign with an empty secret, and reach whatever backend | the auth-proxy script resolves for that identity. This issue is | fixed in version 1.75.1. CVE-2026-88044[6]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. From 1.70.0 until | 1.75.1, the serve/start RC interface accepts per-server | proxyOpt.AuthProxy settings, and the FTP and S3 constructors in | cmd/serve/ftp/ftp.go and cmd/serve/s3/server.go incorrectly check | the process-global proxy.Opt.AuthProxy value instead. When the | global value is empty, the request-local authentication proxy is | ignored: FTP falls back to the fixed filesystem with username | anonymous and any password, while S3 with AuthKey serves the fixed | RC fs rather than the backend selected by the proxy. The dedicated | command-line servers that configure the global option are not | affected. This issue is fixed in version 1.75.1. CVE-2026-88045[7]: | 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. CVE-2026-88046[8]: | rclone is a command-line program to sync files and directories to | and from different cloud storage providers. Prior to 1.75.1, rclone | core does not reject parent-directory segments in source | Object.Remote() values before fs/list, fs/walk, fs/sync, and | fs/operations pass those values to destination backends. A flat- | keyspace source object store populated with native non-rclone | tooling can contain a raw .. key segment, and affected b2, swift, | qingstor, oracleobjectstorage, internetarchive, smb, storj, sftp, | webdav, ftp, filelu, shade, and sia destinations use path.Join(root, | remote) before EncodeDot can neutralize the segment. A copy or | upload can therefore escape the configured root into another bucket, | share, or path reachable by the victim credential, with sftp and smb | potentially reaching other filesystem or share locations under the | same login authority. This issue is fixed in version 1.75.1. If you fix the vulnerabilities please also make sure to include the CVE (Common Vulnerabilities & Exposures) ids in your changelog entry. For further information see: [0] https://security-tracker.debian.org/tracker/CVE-2026-88013 https://www.cve.org/CVERecord?id=CVE-2026-88013 [1] https://security-tracker.debian.org/tracker/CVE-2026-88014 https://www.cve.org/CVERecord?id=CVE-2026-88014 [2] https://security-tracker.debian.org/tracker/CVE-2026-88015 https://www.cve.org/CVERecord?id=CVE-2026-88015 [3] https://security-tracker.debian.org/tracker/CVE-2026-88016 https://www.cve.org/CVERecord?id=CVE-2026-88016 [4] https://security-tracker.debian.org/tracker/CVE-2026-88017 https://www.cve.org/CVERecord?id=CVE-2026-88017 [5] https://security-tracker.debian.org/tracker/CVE-2026-88018 https://www.cve.org/CVERecord?id=CVE-2026-88018 [6] https://security-tracker.debian.org/tracker/CVE-2026-88044 https://www.cve.org/CVERecord?id=CVE-2026-88044 [7] https://security-tracker.debian.org/tracker/CVE-2026-88045 https://www.cve.org/CVERecord?id=CVE-2026-88045 [8] https://security-tracker.debian.org/tracker/CVE-2026-88046 https://www.cve.org/CVERecord?id=CVE-2026-88046 Regards, Salvatore

