CVE-2016-10009
High · 7.3CVSS
7.3
EPSS
37.4%
Published
Jan 5, 2017
CISA due date
—
Cloudanix analysis
Attackers can make SSH connection tools run harmful code from untrusted locations when users share their login credentials across different computers.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Untrusted search path vulnerability in ssh-agent.c allows remote attackers to execute arbitrary local PKCS#11 modules by leveraging control over a forwarded agent-socket.
Why it matters to the business
Attackers can execute malicious code on servers during SSH sessions that use agent forwarding, leading to server compromise, data theft, or lateral movement across infrastructure.
How an attack unfolds
An attacker first gains control of an SSH client with agent forwarding enabled or intercepts the forwarded socket, then places a malicious PKCS#11 module in the search path; when the server-side ssh-agent processes the socket, it loads and executes the attacker's module, granting arbitrary code execution.
How to fix it
Upgrade OpenSSH to 7.4 or later (fixed in commit 9476ce1dd37d3c3218d5640b74c34c65e5f4efe5); for gitlab (Bitnami) upgrade to 14.1.2. Disable agent forwarding where unnecessary and restrict socket permissions.
How to confirm the fix worked
Verify OpenSSH version >= 7.4 on all systems; confirm fixed commit or package version in gitlab (Bitnami) deployments; test agent forwarding with known-good modules only and audit search paths.
Typical attack path
- Gain control of SSH client or agent socket forwarding
- Position malicious PKCS#11 module in untrusted search path
- Initiate SSH connection that triggers ssh-agent loading via forwarded socket
- Execute arbitrary code on target server
How to detect it
Review SSH daemon and agent logs for forwarded agent sockets from untrusted sources; inspect loaded PKCS#11 modules and processes spawned by ssh-agent; search audit trails for unexpected module loads during SSH sessions.
- ssh-agent.*PKCS#11
- forwarded agent-socket
- untrusted search path.*ssh-agent
- ssh-agent loading module from unexpected directory
What your security team should do
- Immediately upgrade all affected OpenSSH instances to fixed versions
- Disable SSH agent forwarding unless explicitly required
- Audit and restrict forwarded agent sockets
- Monitor EPSS trend and exploit availability for prioritization
The record
Untrusted search path vulnerability in ssh-agent.c in ssh-agent in OpenSSH before 7.4 allows remote attackers to execute arbitrary local PKCS#11 modules by leveraging control over a forwarded agent-socket.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Alpine:v3.10 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.11 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.12 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.13 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.14 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.15 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.16 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.17 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.18 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.19 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.20 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.21 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.22 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.3 | openssh | 0 | 7.2_p2-r3 |
| Alpine:v3.4 | openssh | 0 | 7.2_p2-r4 |
| Alpine:v3.5 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.6 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.7 | openssh | 0 | 7.5_p1-r8 |
| Alpine:v3.8 | openssh | 0 | 7.4_p1-r0 |
| Alpine:v3.9 | openssh | 0 | 7.4_p1-r0 |
| Debian:10 | openssh | 0 | 1:7.4p1-1 |
| Debian:11 | openssh | 0 | 1:7.4p1-1 |
| Debian:12 | openssh | 0 | 1:7.4p1-1 |
| Debian:13 | openssh | 0 | 1:7.4p1-1 |
| Debian:14 | openssh | 0 | 1:7.4p1-1 |
| Debian:8 | openssh | 0 | 1:6.7p1-5+deb8u6 |
| Red Hat:enterprise_linux:7::client | openssh | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-askpass | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-cavs | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-clients | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-debuginfo | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-keycat | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-ldap | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-server | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | openssh-server-sysvinit | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::client | pam_ssh_agent_auth | 0 | 0:0.10.3-1.11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-askpass | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-cavs | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-clients | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-debuginfo | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-keycat | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-ldap | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-server | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | openssh-server-sysvinit | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::computenode | pam_ssh_agent_auth | 0 | 0:0.10.3-1.11.el7 |
| Red Hat:enterprise_linux:7::server | openssh | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-askpass | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-cavs | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-clients | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-debuginfo | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-keycat | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-ldap | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-server | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | openssh-server-sysvinit | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::server | pam_ssh_agent_auth | 0 | 0:0.10.3-1.11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-askpass | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-cavs | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-clients | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-debuginfo | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-keycat | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-ldap | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-server | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | openssh-server-sysvinit | 0 | 0:7.4p1-11.el7 |
| Red Hat:enterprise_linux:7::workstation | pam_ssh_agent_auth | 0 | 0:0.10.3-1.11.el7 |
| SUSE:Linux Enterprise Desktop 12 SP1 | openssh | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | openssh-askpass-gnome | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Desktop 12 SP2 | openssh | 0 | 7.2p2-66.1 |
| SUSE:Linux Enterprise Desktop 12 SP2 | openssh-askpass-gnome | 0 | 7.2p2-66.3 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| SUSE:Linux Enterprise Server 11 SP4 | openssh | 0 | 6.6p1-35.1 |
| SUSE:Linux Enterprise Server 11 SP4 | openssh-askpass-gnome | 0 | 6.6p1-35.4 |
| SUSE:Linux Enterprise Server 11-SECURITY | openssh-openssl1 | 0 | 6.6p1-18.1 |
| SUSE:Linux Enterprise Server 12 SP1 | openssh | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server 12 SP1 | openssh-askpass-gnome | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server 12 SP2 | openssh | 0 | 7.2p2-66.1 |
| SUSE:Linux Enterprise Server 12 SP2 | openssh-askpass-gnome | 0 | 7.2p2-66.3 |
| SUSE:Linux Enterprise Server 12-LTSS | openssh | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server 12-LTSS | openssh-askpass-gnome | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | openssh | 0 | 7.2p2-66.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | openssh-askpass-gnome | 0 | 7.2p2-66.3 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | openssh | 0 | 6.6p1-35.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | openssh-askpass-gnome | 0 | 6.6p1-35.4 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | openssh | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | openssh-askpass-gnome | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | openssh | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | openssh-askpass-gnome | 0 | 6.6p1-54.7.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | openssh | 0 | 7.2p2-66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | openssh-askpass-gnome | 0 | 7.2p2-66.3 |
| SUSE:Manager 2.1 | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:Manager 2.1 | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| SUSE:Manager Proxy 2.1 | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:Manager Proxy 2.1 | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| SUSE:OpenStack Cloud 5 | openssh | 0 | 6.2p2-0.40.1 |
| SUSE:OpenStack Cloud 5 | openssh-askpass-gnome | 0 | 6.2p2-0.40.3 |
| Ubuntu:14.04:LTS | openssh | 0 | 1:6.6p1-2ubuntu2.10 |
| Ubuntu:16.04:LTS | openssh | 0 | 1:7.2p2-4ubuntu2.4 |
| openSUSE:Tumbleweed | openssh | 0 | 8.4p1-7.4 |
Related vulnerabilities
- CVE-2021-41617 sshd in OpenSSH 6.2 through 8.x before 8.8, when certain non-default configurations are… Also affects openssh
- CVE-2023-51385 In ssh in OpenSSH before 9.6, OS command injection might occur if a user name or host… Also affects openssh
- CVE-2023-51384 In ssh-agent in OpenSSH before 9.6, certain destination constraints can be incompletely… Also affects openssh
- CVE-2023-48795 The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6… Also affects openssh
- CVE-2023-28531 ssh-add in OpenSSH before 9.3 adds smartcard keys to ssh-agent without the intended… Also affects openssh
- CVE-2024-6387 A security regression (CVE-2006-5051) was discovered in OpenSSH's server (sshd). Also affects openssh
- CVE-2025-26466 A flaw was found in the OpenSSH package. Also affects openssh
- CVE-2016-6210 sshd in OpenSSH before 7.3, when SHA256 or SHA512 are used for user password hashing… Also affects openssh