CVE-2026-88018: rclone serve s3: --auth-proxy without --auth-key authenticates nobody - full SigV4 signature bypass
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
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 →