CVE-2026-49980: Rclone: Unauthenticated command execution in `rclone rcd --rc-serve` via inline remote instantiation, bypassing CVE-2026-41179 fix
Summary
rclone rcd --rc-serve accepts unauthenticated GET and HEAD requests to paths of the form:
text /[remote:path]/object
The remote value is parsed from the URL and passed to normal backend initialization. Inline remote configuration can set backend options that execute local commands during initialization. As a result, a single unauthenticated GET or HEAD request can execute a command as the rclone process user.
Versions from 1.55.0 onwards are vulnerable to command execution. Earlier versions (from 1.46.0) are vulnerable to the unauthenticated local file read described under "Additional impact" but not to command execution, because inline backend option overrides did not exist until 1.55.0.
Preconditions
Preconditions for this vulnerability are:
- The rclone remote control API must be enabled, either by the --rc flag or by running the rclone rcd server - The remote control API must be reachable by the attacker - by default rclone only serves the rc to localhost unless the --rc-addr flag is in use - The rc must have been deployed without global RC HTTP authentication - so not using --rc-user/--rc-pass/--rc-htpasswd/etc - The --rc-serve flag must be in use
Impact
An unauthenticated network attacker who can reach the RC HTTP listener can execute commands as the rclone process user.
Additional impact observed during testing:
- GET and HEAD both trigger backend initialization. - The same path allows unauthenticated local file read through inline local remotes. - Inline global. options can mutate process-wide rclone configuration, including global.httpproxy. - Browser subresource requests can also trigger the issue against a localhost-only RC listener. In testing, Firefox triggered the payload from a public HTTPS page containing only an <img> tag pointing at http://127.0.0.1:5572/.... This is an additional impact multiplier, not the primary attack precondition.
Mitigations / Workarounds
- Upgrade to rclone 1.74.3 (or 1.75.0 when released). - Or, configure HTTP authentication on the rc with --rc-user/--rc-pass or --rc-htpasswd, which has always been the recommended deployment. - Or, do not use --rc-serve if file serving is not needed.
The Fix
The vulnerabilities in this advisory have been fixed by two commits:
- rc: fix unauthenticated command execution via --rc-serve inline remotes - rc: stop global. connection string options changing config
Other sources
Rclone is a command-line program to sync files and directories to and from different cloud storage providers. From 1.46.0 until 1.74.3, rclone rcd --rc-serve accepts unauthenticated GET and HEAD requests to paths of the form: /[remote:path]/object. The remote value is parsed from the URL and passed to normal backend initialization. Inline remote configuration can set backend options that execute local commands during initialization. As a result, a single unauthenticated GET or HEAD request can execute a command as the rclone process user. This vulnerability is fixed in 1.74.3.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/rclone/rcloneto a version that resolves this vulnerability.Fixed in 1.74.3 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 1.74.3 - Configuration
Deploy the rc HTTP listener with authentication enabled (use --rc-user/--rc-pass or --rc-htpasswd / etc). The issue described applies when the rc was deployed without global RC HTTP authentication.
rclone rc (rcd) --rc-serve --rc-user/--rc-pass/--rc-htpasswd (or equivalent rc HTTP authentication) = enabled - Configuration
Ensure the rc must have been deployed with the --rc-serve flag in use (per the advisory precondition for the vulnerable behavior).
rclone rcd rc --rc-serve --rc-serve = enabled - Configuration
Do not expose the rc HTTP listener to an attacker. The advisory states rc is localhost-only by default unless --rc-addr is in use; avoid using --rc-addr or otherwise restrict reachability so attackers cannot reach the RC HTTP listener.
rclone rc --rc-serve --rc-addr = localhost-only - Configuration
Avoid unauthenticated use of inline remote instantiation via paths of the form /[remote:path]/object. The advisory states unauthenticated GET/HEAD to these paths can trigger backend initialization and enable command execution via inline remote configuration.
rclone rc --rc-serve Inline remotes (URL path of form /[remote:path]/object with remote instantiation) = do not permit unauthenticated inline remote instantiation - Configuration
If file serving is not needed, do not use --rc-serve.
rclone rcd --rc-serve = disabled - Configuration
Stop using inline global.* connection string options that mutate process-wide rclone configuration (including global.http_proxy), because inline global.* options can mutate process-wide configuration during initialization.
rclone rcd Inline global.* options in remote configuration strings = disabled
Event History
Frequently Asked Questions
What is the severity of CVE-2026-49980?
The severity of CVE-2026-49980 is critical with a score of 9.8.
What risks are associated with CVE-2026-49980?
CVE-2026-49980 poses significant risks as it allows unauthenticated access to sensitive data through `GET` and `HEAD` requests.
How do I fix CVE-2026-49980?
To fix CVE-2026-49980, disable unauthenticated access by configuring proper authentication for the `rclone rcd --rc-serve` command.
Which software is affected by CVE-2026-49980?
CVE-2026-49980 affects the rclone software from the repository go/github.com/rclone/rclone.
When was CVE-2026-49980 published?
CVE-2026-49980 was published on June 16, 2026.