high

CVE-2026-71312

Go · github.com/rclone/rclone

Summary

rclone: PowerShell Smart-Quote Filename Injection Enables SFTP Server-Side Command Execution

Severity
high
CVSS
8
EPSS
0.5% (p42)
CWE
CWE-78
Also known as
GHSA-2m8m-jhrm-w6j2
Published
2026-08-05
Updated
2026-08-05

Advisory details

1. Summary

rclone interpolates remote SFTP paths into PowerShell hash commands. Its quoting helper escapes only ASCII apostrophe, although PowerShell accepts four Unicode smart quotes as single-quote delimiters. An attacker-controlled filename can therefore terminate the intended path literal and append PowerShell statements executed as the victim's SSH account.

2. Affected Assets & Attack Surface

3. Technical Root Cause Analysis

For PowerShell, quoteOrEscapeShellPath wraps a path in ASCII apostrophes and doubles only U+0027:

return "'" + strings.ReplaceAll(shellPath, "'", "''") + "'", nil

Windows PowerShell also treats U+2018, U+2019, U+201A, and U+201B as single-quote delimiters. Those characters pass through the rclone encoder and can close the quoted path. The completed string is sent as shell source through an SSH exec request.

The security boundary fails because shell syntax is constructed by string concatenation rather than passing data through a non-code channel.

4. Proof-of-Concept & Evidence

Reproduction outline:

  1. Configure an SFTP remote whose command shell is PowerShell.
  2. Enable or autodetect the PowerShell hash command.
  3. Place a file whose name contains a smart quote followed by a harmless marker-writing statement and PowerShell comment syntax.
  4. Trigger an rclone operation that calculates the remote hash.
  5. Observe the marker created with the SSH account's permissions.

5. Impact Assessment

Successful exploitation provides arbitrary command execution as the victim's SSH account. This can permit file theft, modification, deletion, credential access, persistence, and lateral movement allowed by that account.

The attacker needs filename-control capability but does not need the victim's SSH credentials or an interactive shell. The rclone user's hash operation supplies the execution step.

References

Related advisories

Is your project exposed to this? Stateward checks every dependency on every pull request and flags it only if your code actually reaches it.

Check my repo

Summarize with AI

ChatGPTClaudePerplexity

Sources: CISA KEV (public domain), OSV.dev & GitHub Advisory Database (CC-BY-4.0), FIRST EPSS, NVD/CWE (public domain). Served live from the Stateward advisory database.