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. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

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 Sun, 08 Nov 2026 00:15:49 +0000.