Advisory Database
  • Advisories
  • Dependency Scanning
  1. golang
  2. ›
  3. github.com/rclone/rclone
  4. ›
  5. CVE-2026-88018

CVE-2026-88018: rclone serve s3: --auth-proxy without --auth-key authenticates nobody - full SigV4 signature bypass

September 10, 2026

rclone serve s3’s handler chain, when --auth-proxy is configured, is (outermost first): authPairMiddleware -> proxyAuthMiddleware -> gofakes3’s own SigV4-verifying handler.

authPairMiddleware parses the accessKeyID straight out of the incoming request’s own Authorization header (entirely client-controlled) and registers {accessKey: ws.s3Secret} into gofakes3’s shared credential store via AddAuthKeys, for EVERY access key any client presents - not just ones previously known to the server. ws.s3Secret defaults to "" whenever --auth-key is not set, which the --auth-proxy documentation (and the reference bin/test_proxy.py) presents as a complete, standalone authentication mechanism requiring no other flag - matching how it’s used for serve webdav/ftp/sftp.

gofakes3’s SigV4 verification then checks the request’s signature against exactly the secret authPairMiddleware just registered for that same client-chosen key. An empty string is a valid HMAC key, so a caller can trivially compute a correct SigV4 signature for ANY access key ID of their choosing using an empty secret, and verification passes.

Crucially, the auth-proxy script never receives a real secret to verify against, for S3 specifically: Server.auth() calls w.proxy.Call(md5(accessKeyID), accessKeyID, false, r.RemoteAddr) - passing the access key ID itself as BOTH the hashed “user” and the raw “auth”/password fields. Contrast with serve webdav/ftp/sftp, whose proxy integration passes the client’s actual typed password (see bin/test_proxy.py, which forwards it into a backing SFTP login for real verification). For S3, no independent secret is ever transmitted to the proxy script at all, so no script - however carefully written - can distinguish a legitimate holder of an access key ID from an attacker who merely picked the same string.

Net effect: with --auth-proxy configured and --auth-key not also set (the configuration the feature is documented to support standalone), SigV4 signature verification authenticates nobody.

References

  • github.com/advisories/GHSA-xwwr-4h3p-r22c
  • github.com/rclone/rclone/commit/90595f34f27f569be6b27c57fe5ab65057d323bd
  • github.com/rclone/rclone/releases/tag/v1.75.1
  • github.com/rclone/rclone/security/advisories/GHSA-xwwr-4h3p-r22c
  • nvd.nist.gov/vuln/detail/CVE-2026-88018

Code Behaviors & Features

Detect and mitigate CVE-2026-88018 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 →

Affected versions

All versions before 1.75.1

Fixed versions

  • 1.75.1

Solution

Upgrade to version 1.75.1 or above.

Impact 9.8 CRITICAL

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Learn more about CVSS

Weakness

  • CWE-287: Improper Authentication
  • CWE-306: Missing Authentication for Critical Function

Source file

go/github.com/rclone/rclone/CVE-2026-88018.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Mon, 14 Sep 2026 12:26:04 +0000.