This Reference Advisory presents an analysis of all OpenSSH CVEs, specifically those affecting versions v7.5 through v10.0. We analyze how these CVEs impact Junos OS and Junos OS Evolved (EVO).
The reference JSA further provides comprehensive tables that map OpenSSH versions to their respective Junos OS and Junos OS Evolved releases and the platforms where they are implemented.
It is important to note that most of these CVEs do not have any direct impact on Junos OS and Junos OS Evolved (EVO). For any others, clear workarounds have been prescribed below.
Junos OS Releases and OpenSSH Version Mapping
The following table details the mapping of OpenSSH releases to the Junos OS release trains and their respective supported platforms.
Please note that a Junos OS release marked with an asterisk (*) signifies that different OpenSSH versions are used by different platforms within that single Junos OS release.
This table clarifies which OpenSSH versions are present in various Junos OS versions.
OpenSSH Release
Junos OS Release
Platforms
OpenSSH-7.5
19.1R1-S4 – 19.1R1-S9
19.1R2-S1 – 19.1R2-S3
19.1R3 – 19.1R3-S9
19.2R1-S2 – 19.2R1-S9
19.2R2 – 21.4R3-S8
21.4R3-S9* and future service releases
22.1R1 - 22.4R3-S3
23.1R1 - 23.2R2-S2
23.2R2-S3*
23.3R1 – 23.4R2-S3
24.1R1
All Junos Platforms
All Junos OS Platforms except: SRX300, SRX320, SRX340
All Junos OS Platforms
All Junos OS Platforms except: cRPD, cSRX, EX4300, EX4600,SRX300, SRX320, SRX340, SRX345, SRX380
cRPD, cSRX, SRX300, SRX320, SRX340, SRX345, SRX380
OpenSSH-7.9p1
24.2R1- 24.2R1-S1
24.2R1-S2*
24.3R1*
cRPD, cSRX, EX4600, SRX300, SRX320, SRX340, SRX345, SRX380
OpenSSH-9.7p1
22.4R3-S4 and future service releases
23.2R2-S4 and future service releases
23.4R2-S4 and future service releases
24.2R2 and future service releases
24.4R1 and subsequent Junos OS releases
EX4300
All Junos OS Platforms, except: cRPD, cSRX, SRX300, SRX320, SRX340, SRX345, SRX380
Junos OS Evolved Releases and OpenSSH Version MappingThe following table details the mapping of OpenSSH releases to the Junos OS Evolved release trains and their respective supported platforms.
Junos OS Evolved Release
OpenSSH-7.5p1
20.4R3-S5 and future service release
21.1R3-S3 and future service release
21.2R3-S5 and future service release
21.3R3-S3 and future service release
21.4R3 and future service release
22.3R1 – 24.1R1
All EVO Platforms
OpenSSH-9.4p1
24.2R1 – 24.2R2-S1
24.3R1
OpenSSH-9.8p1
24.2R2-S2 and subsequent releases
24.4R1 and subsequent releases
CVE
CVSS v3 Scores
Impacted OpenSSH versions
Fixed
Open
SSH
version
Description
Impact to Junos OS or Junos OS Evolved
Solution/Workaround
CVE-
2016-
20012
5.3
<= 8.7
8.8
OpenSSH through 8.7 allows remote attackers, who have a suspicion that a certain combination of username and public key is known to an SSH server, to test whether this suspicion is correct. This occurs because a challenge is sent only when that combination could be valid for a login session. NOTE: the vendor does not recognize user enumeration as a vulnerability for this product.
Not Impacted
As per the CVE Details https://nvd.nist.gov/vuln/detail/CVE-2016-20012:
“The vendor (OpenSSH) does not recognize user enumeration as a vulnerability for this product.”
CVE-2017-15906
< 7.6
7.6
The process_open function in sftp-server.c in OpenSSH before 7.6 does not properly prevent write operations in readonly mode, which allows attackers to create zero-length files.
In Junos OS/Junos OS Evolved the sftp-server read-only mode is not supported at all.
Therefore, Junos OS/Junos OS Evolved is not impacted and there is no specific workaround needed.
CVE-2018-15919
5.9 - 7.8
7.9
Remotely observable behaviour in auth-gss2.c in OpenSSH through 7.8 could be used by remote attackers to detect existence of users on a target system when GSS2 is in use.
NOTE: the discoverer states 'We understand that the OpenSSH developers do not want to treat such a username enumeration (or "oracle") as a vulnerability.'
Junos OS/ Junos OS Evolved does not support configuring the respective sshd option "GSSAPIAuthentication" via CLI and by default the value for the above mentioned option is set to "no".
CVE-2018-15473
<= 7.7
7.8
OpenSSH through 7.7 is prone to a user enumeration vulnerability due to not delaying bailout for an invalid authenticating user until after the packet containing the request has been fully parsed, related to auth2-gss.c, auth2hostbased.c, and auth2-pubkey.c.
The affected/vulnerable components and the corresponding code are not compiled into Junos OS/Junos OS Evolved SSH.
As a result, the vulnerability is not applicable to customer systems.
CVE-2018-20685
<=7.9
8.0
In OpenSSH 7.9, scp.c in the scp client allows remote SSH servers to bypass intended access restrictions via the filename of “.” or an empty filename. The impact is modifying the permissions of the target directory on the client side.
Not Impacted via Workaround
Customers are recommended to follow the same workaround as mentioned for CVE-2019-6109.
CVE-2019-6109
6.8
<= 7.9
An issue was discovered in OpenSSH 7.9. Due to missing character encoding in the progress display, a malicious server (or Man-in-TheMiddle attacker) can employ crafted object names to manipulate the client output, e.g., by using ANSI control codes to hide additional files being transferred. This affects refresh_progress_meter() in progressmeter.c.
The upstream recommendation from OpenSSH developers is not to use SCP with untrusted servers due to these vulnerabilities.
Furthermore, starting from OpenSSH v9.0 SCP uses SFTP protocol by default instead of the legacy RCP/SCP protocol. SCP protocol can only be called using option “-O”.
As a workaround, customers are recommended to use SFTP (SSH File Transfer Protocol). SFTP is designed with better security mechanisms and is recommended by OpenSSH developers as a safer alternative.
CVE-2019-6110
In OpenSSH 7.9, due to accepting and displaying arbitrary stderr output from the server, a malicious server (or Man-in-TheMiddle attacker) can manipulate the client output, for example to use ANSI control codes to hide additional files being transferred.
CVE-2019-6111
5.9
An issue was discovered in OpenSSH 7.9. Due to the scp implementation being derived from 1983 rcp, the server chooses which files/directories are sent to the client. However, the scp client only performs cursory validation of the object name returned (only directory traversal attacks are prevented). A malicious scp server (or Man-in-The-Middle attacker) can overwrite arbitrary files in the scp client target directory. If recursive operation (-r) is performed, the server can manipulate subdirectories as well (for example, to overwrite the .ssh/authorized_keys file).
CVE-2020-15778
< 8.3
8.3
The scp in OpenSSH through 8.3p1 allows command injection in the scp.c “toremote” function, as demonstrated by backtick characters in the destination argument.
NOTE: the vendor reportedly has stated that they intentionally omit validation of "anomalous argument transfers" because that could "stand a great chance of breaking existing workflows."
This scp behaviour does not introduce new capabilities for an already authorized/unauthorized user. As any user with scp access already has SSH access, enabling direct command execution on the remote server.
scp
As a workaround, customers are recommended to use SFTP (SSH File Transfer Protocol). SFTP is designed with better security mechanisms and is recommended by OpenSSH developers as a safer alternative.Note: The CVE is disputed by the OpenSSH developers.
2020-14145
5.7-8.6
8.7
The client side in OpenSSH 5.7 through 8.4 has an Observable Discrepancy leading to an information leak in the algorithm negotiation. This allows man-in-the-middle attackers to target initial connection attempts (where no host key for the server has been cached by the client).
NOTE: some reports state that 8.5 and 8.6 are also affected.
This vulnerability is specific to the manual initial connection attempts from the client side. These types of issues can be mitigated by using certificate-based connections.
Customers are recommended to use the “ssh host-certificate-file” config option from CLI to configure certificate-based hostkey algorithms.
The CVE is disputed by the OpenSSH developers.
CVE-2020-12062
7.5
8.2
The scp client in OpenSSH 8.2 incorrectly sends duplicate responses to the server upon a utimes system call failure, which allows a malicious unprivileged user on the remote server to overwrite arbitrary files in the client's download directory by creating a crafted subdirectory anywhere on the remote server.
The victim must use the command scp -rp to download a file hierarchy containing, anywhere inside, this crafted subdirectory.
NOTE: the vendor points out that "this attack can achieve no more than a hostile peer is already able to achieve within the scp protocol" and "utimes does not fail under normal circumstances.
NotImpacted
Junos OS/Junos OS Evolved is not shipped with the impacted OpenSSH version.
Hence, Junos OS/Junos OS Evolved are not impacted by the CVE.
CVE-2021-41617
7.0
6.2 - 8.7
The sshd in OpenSSH 6.2 through 8.x before 8.8, when certain non-default configurations are used, allows privilege escalation because supplemental groups are not initialized as expected. Helper programs for AuthorizedKeysCommand and
AuthorizedPrincipalsCommand may run with privileges associated with group memberships of the sshd process, if the configuration specifies running the command as a different user.
Neither AuthorizedKeysCommand nor AuthorizedPrincipalsCommand are enabled by default. Customers can apply a workaround to prevent the issue by not configuring “authorized-keys-command” or “authorized-principals” under [ system services ssh ] hierarchy.
Even if customers enable the feature, they must provide a script or program that is already wholly trusted. Customers should only specify a trusted program for either of these options.
2021-28041
7.1
8.2 - 8.4
8.5
The “ssh-agent” in OpenSSH before 8.5 has a double free that may be relevant in a few less common scenarios, such as unconstrained agent-socket access on a legacy operating system, or the forwarding of an agent to an attacker-controlled host.
Junos OS/Junos OS Evolved is not shipped with any of the impacted OpenSSH versions
Hence, Junos OS/Junos OS Evolved are not impacted by theCVE.
2021-
36368
3.7
<= 8.8
8.9
An issue was discovered in OpenSSH before 8.9. If a client is using public-key authentication with agent forwarding but without -oLogLevel=verbose, and an attacker has silently modified the server to support the None authentication option, then the user cannot determine whether FIDO (Fast Identity Online) authentication is going to confirm that the user wishes to connect to that server, or that the user wishes to allow that server to connect to a different server on the user's behalf. NOTE: the vendor's position is "this is not an authentication bypass, since nothing is being bypassed.
This CVE is not considered applicable to Junos OS/Junos OS Evolved because FIDO authentication is not support by the SSH client in either OS.
2023-38408
9.8
< 9.3p2
9.3p2
The PKCS#11 feature in ssh-agent in OpenSSH before 9.3p2 has an insufficiently trustworthy search path, leading to remote code execution if an agent is forwarded to an attacker-controlled system. (Code in /usr/lib is not necessarily safe for loading into ssh-agent.) NOTE: this issue exists because of an incomplete fix for CVE-2016-10009.
Junos OS/Junos OS Evolved CLI do not provide any SSH command to configure an option to allow agent forwarding.
The only way a user could be exposed to this vulnerability is by manually dropping to a Unix shell and connecting to a malicious host with agent-forwarding enabled in their session.
Customers are recommended to avoid initiating an SSH connection enabling agent forwarding using “-A” option from the shell.Note: JUNOS OS Evolved does not use ssh-agent to manage the private keys. Hence this CVE is not applicable to JUNOS OS Evolved.
2023-
28531
8.9 - 9.2
9.3
The “ssh-add” in OpenSSH before 9.3 adds smartcard keys to ssh-agent without the intended per-hop destination constraints. The earliest affected version is 8.9.
48795
<= 9.5
9.6
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remote attackers to bypass integrity checks such that some packets are omitted (from the extension negotiation message), and a client and server may consequently end up with a connection for which some security features have been downgraded or disabled, aka a Terrapin attack. This occurs because the SSH Binary Packet Protocol (BPP), implemented by these extensions, mishandles the handshake phase and mishandles use of sequence numbers.
Junos OS/Junos OS Evolved can only be impacted when the ssh cipher list includes chacha20-poly135.
Furthermore, in Junos OS/Junos OS Evolved, chacha20-poly1305 has been hidden and deprecated as a default algorithm for sshd:
Junos OS: 19.4R3-S13, 20.4R3-S10, 21.4R3-S6, 22.1R3-S5, 22.2R3-S3, 22.4R3-S1, 23.2R2, 23.4R2, 24.1R1, and all subsequent releases.
Junos OS Evolved: 19.4R3-S13, 20.4R3-S10, 21.4R3-S6, 22.1R3-S5, 22.2R3-S3, 22.4R3-S1, 23.2R2, 23.4R2, 24.1R1, and all subsequent releases.
Customers are recommended to either use one of the fixed releases mentioned above or not to use the ssh cipher option chacha20-poly135 at all.
For example, the following config is recommended best practice:
set system services ssh ciphers [[email protected] [email protected]]
You can find more information about this workaround in Juniper's knowledge base article JSA76462 [juniper.net]: [juniper.net]https://kb.juniper.net/JSA76462 [juniper.net] [juniper.net]
51384
5.5
8.9- 9.5
In ssh-agent in OpenSSH before 9.6, certain destination constraints can be incompletely applied. When destination constraints are specified during addition of PKCS#11-hosted private keys, these constraints are only applied to the first key, even if a PKCS#11 token returns multiple keys.
This does not impact Junos OS/Junos OS Evolved because it does not support the use of "ssh-agent" with destination constraints.
51385
6.5
< 9.6
In ssh (SSH client program) in OpenSSH before 9.6, OS command injection might occur if a user name or host name has shell metacharacters, and this name is referenced by an expansion token in certain situations. For example, an untrusted Git repository can have a submodule with shell metacharacters in a user name or host name.
Junos OS/Junos OS Evolved are not impacted because the CLI does not expose the ProxyCommand option.
Customers are recommended not to (1) configure any SSH options using shell or (2) connect to any untrusted SSH hosts.
CVE-2024-6387
8.1
<4.4 and 8.6 to 9.7
A security regression (CVE-2006-5051) was discovered in OpenSSH's server (sshd). There is a race condition which can lead to sshd to handle some signals in an unsafe manner. An unauthenticated, remote attacker may be able to trigger it by failing to authenticate within a set time period.
Impacted
Junos OS has never been vulnerable to this issue. Junos OS prior to 24.2 is not affected by this vulnerability, and OpenSSH 9.7 implementation, used in Junos OS 24.2+, was patched to fix CVE-2024-6387.Junos OS Evolved releases prior to 24.2 are not impacted as they
are not shipped with the impacted OpenSSH version.
Impacted Junos OS Evolved Release : “24.2R1, 24.2R1-S1”
Junos OS Evolved releases (24.2R1-S2 OR later) are either patched to fix CVE-2024-6387 OR they do not use the impacted OpenSSH version.
CVE-2024-39894
9.5-9.7
9.7
OpenSSH 9.5 through 9.7 before 9.8 sometimes allows timing attacks against echo-off password entry (e.g., for su and Sudo) because of an ObscureKeystrokeTiming logic error. Similarly, other timing attacks against keystroke entry could occur.
Junos OS/Junos OS Evolved have never included OpenSSH instance that is affected by CVE-2024-39894. Instances of OpenSSH 9.7p1 were always patched to fix CVE-2024-39894.
CVE-2024-7589
All supported versions of FreeBSD
FreeBSD releases: 13.3-RELEASE-p5, 14.0-RELEASE-p9, 14.1-RELEASE-p3
A signal handler in sshd(8) may call a logging function that is not async-signal-safe. The signal handler is invoked when a client does not authenticate within the LoginGraceTime seconds (120 by default). This signal handler executes in the context of the sshd(8)'s privileged code, which is not sandboxed and runs with full root privileges. This issue is another instance of the problem in CVE-2024-6387 addressed by FreeBSD-SA-24:04.openssh. The faulty code in this case is from the integration of blacklistd in OpenSSH in FreeBSD. As a result of calling functions that are not async-signal-safe in the privileged sshd(8) context, a race condition exists that a determined attacker may be able to exploit to allow an unauthenticated remote code execution as root. See FreeBSD-SA-24:08.openssh for details.
This CVE does not apply to Junos OS/Junos OS Evolved because no signal handler has ever had a call to a function that is not async-signal-safe.
CVE-2025-26466
9.5 to 9.9p1
9.9p2
A flaw was found in the OpenSSH package. For each ping packet the SSH server receives, a pong packet is allocated in a memory buffer and stored in a queue of packages. It is only freed when the server/client key exchange has finished. A malicious client may keep sending such packages, leading to an uncontrolled increase in memory consumption on the server side. Consequently, the server may become unavailable, resulting in a denial of service attack.
Junos OS/Junos OS Evolved mitigates the reported vulnerability through a default configuration that limits pre authentication packets to 128.Upon exceeding this threshold, connection requests are rejected, thus preventing potential denial-of-service attacks due to excessive memory consumption. Customers can adjust this limit using the cli knob: set system services ssh max-pre-authentication-packets<value>https://www.juniper.net/documentation/us/en/software/junos/cli-reference/topics/ref/statement/ssh-edit-system.html
set system services ssh max-pre-authentication-packets<value>
CVE-2025-26465
6.9-9.8
9.9
A vulnerability was found in OpenSSH when the VerifyHostKeyDNS option is enabled. A machine-in-the-middle attack can be performed by a malicious machine impersonating a legit server. This issue occurs due to how OpenSSH mishandles error codes in specific conditions when verifying the host key. For an attack to be considered successful, the attacker needs to manage to exhaust the client's memory resource first, turning the attack complexity high.
In Junos OS/Junos OS Evolved " VerifyHostKeyDNS " option is disabled by default. There is no configurable CLI option to configure DisableForwarding and it is disabled by default. Hence not affected.
CVE-2025-32728
4.3
7.4 – 9.9
10.0
In sshd in OpenSSH before 10.0, the DisableForwarding directive does not adhere to the documentation stating that it disables X11 and agent forwarding.
Junos OS/Junos OS Evolved does not use "DisableForwarding" option. There is no configurable CLI option to configure DisableForwarding and it is disabled by default. Hence not affected.
CVE-2025-61984
3.6
<= 10.0
10.1
ssh in OpenSSH before 10.1 allows control characters in usernames that originate from certain possibly untrusted sources, potentially leading to code execution when a ProxyCommand is used. The untrusted sources are the command line and %-sequence expansion of a configuration file. (A configuration file that provides a complete literal username is not categorized as an untrusted source.)
Untrusted ssh:// URIs are never constructed
CVE-2025-61985
ssh in OpenSSH before 10.1 allows the '\0' character in an ssh:// URI, potentially leading to code execution when a ProxyCommand is used.
ProxyCommand is never used "%r" and the device never proxies to an untrusted host
CVE-2026-35385
<= 10.2
10.3
In OpenSSH before 10.3, a file downloaded by scp may be installed setuid or setgid, an outcome contrary to some users' expectations, if the download is performed as root with -O (legacy scp protocol) and without -p (preserve mode).
The SCP legacy protocol preserves setuid/setgid bits on transferred files (confirmed reproducible). However, privilege escalation is blocked by platform integrity enforcement: veriexec in Junos and IMA in EVO.
CVE-2026-35386
In OpenSSH before 10.3, command execution can occur via shell metacharacters in a username within a command line. This requires a scenario where the username on the command line is untrusted, and also requires a non-default configurations of % in ssh_config.
Affected directives (Match exec, ProxyCommand, LocalCommand, KnownHostsCommand, RemoteCommand) are SSH client-side directives not exposed through the Junos CLI. Not present in shipped ssh_config.
CVE-2026-35387
OpenSSH before 10.3 can use unintended ECDSA algorithms. Listing of any ECDSA algorithm in PubkeyAcceptedAlgorithms or HostbasedAcceptedAlgorithms is misinterpreted to mean all ECDSA algorithms.
PubkeyAcceptedAlgorithms and HostbasedAcceptedAlgorithms are not configurable via CLI. All three ECDSA curves are accepted by default.
CVE-2026-35388
2.5
OpenSSH before 10.3 omits connection multiplexing confirmation for proxy-mode multiplexing sessions.
SSH multiplexing (ControlMaster/ControlPath) is not used or configurable on either platform. The vulnerable code path is never reached.
CVE-2026-35414
OpenSSH before 10.3 mishandles the authorized_keys principals option in uncommon scenarios involving a principals list in conjunction with a Certificate Authority that makes certain use of comma characters.
CLI-configured public keys are written as plain keys in authorized_keys - no support for cert-authority or principals="..." options. The vulnerable matching logic is never invoked.
2024-05-09: Initial Publication 2024-07-06: Included CVE-2024-63872024-10-28: Table format modified2024-11-06: Included CVE-2024-398942024-11-08: Included CVE-2024-75892025-02-11: Updated CVE-2024-6387 and CVE-2024-39894 2025-05-09: Updated Impacted OpenSSH versions for CVE-2024-63872025-05-09: Included CVE-2025-26466 and CVE-2025-327282025-08-04: Included v7.5 in the descrption. 2025-08-27: Updated the table to reflect mapping of OpenSSH releases to the Junos OS and Junos OS Evolved2025-09-10: Updated the 120 to 128 limit in CVE-2025-26466 workaround.2025-10-29: Included CVE-2025-61984 and CVE: CVE-2025-619852026-05-06: Added status for CVE-2026-35385, CVE-2026-35386, CVE-2026-35387, CVE-2026-35388, and CVE-2026-35414