ZeroHour

CVE-2026-85756

large

Command Injection in SSH.NET ScpClient via Unsanitized Remote Paths

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

SSH.NET, a widely used Secure Shell library for .NET, is vulnerable to command injection (CWE-78) in its ScpClient, which places caller-supplied remote paths directly into the scp command executed on the server. When an application passes an attacker-controlled remote path to a shell-based SSH server, shell metacharacters not neutralized by the active IRemotePathTransformation (including the default DoubleQuote transformation) are interpreted by the remote shell, allowing an authenticated attacker to execute arbitrary commands with the privileges of the SSH user. Exploitation requires valid low-privilege SSH credentials, a shell-based server, and a path crafted for that shell's parsing rules, so attack complexity is high; non-shell servers and applications using SftpClient (which avoids the remote shell entirely) are not affected. Any application built on SSH.NET prior to 2026.0.0 that uses ScpClient with attacker-influenced remote paths is affected. No public proof-of-concept or in-the-wild exploitation is known, and the issue is not on CISA's KEV list.

What to do: Upgrade to SSH.NET 2026.0.0. Where an immediate upgrade is not possible, switch from ScpClient to SftpClient (which avoids the remote shell entirely) or use RemotePathTransformation.ShellQuote for POSIX shell servers, and audit code for attacker-controlled remote paths passed to ScpClient.

Affected
SSH.NET project (Renci) SSH.NET (Renci.SshNet NuGet package), ScpClient componentall versions prior to 2026.0.0
Estimated exposure
largetens of thousands of applications (SSH.NET has 100M+ cumulative NuGet downloads), with only the subset passing untrusted remote paths to ScpClient against… — Estimate is based on NuGet.org reporting over 100 million cumulative downloads and thousands of dependent projects for the Renci.SshNet package, discounted for applications that use SftpClient or never pass attacker-controlled remote paths.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

SSH.NET is a Secure Shell (SSH) library for .NET. Prior to 2026.0.0, ScpClient places caller-supplied remote paths into the command used to run scp on the server, and the default RemotePathTransformation.DoubleQuote transformation cannot safely quote every remote command interpreter. When an application passes an attacker-controlled path to a shell-based server, shell metacharacters not neutralized by the active IRemotePathTransformation can execute commands as the authenticated SSH user. Exploitation requires a shell-based server and a path crafted for that shell's parsing rules; non-shell servers and paths fully neutralized by the selected transformation are not affected. RemotePathTransformation.ShellQuote is available for POSIX shells, while SftpClient avoids a remote shell entirely. This issue is fixed in version 2026.0.0.

Weakness
CWE-78
Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.