CVE-2017-12836
High · 7.5CVSS
7.5
EPSS
6.6%
Published
Aug 24, 2017
CISA due date
—
Cloudanix analysis
An old version-control tool could let attackers run their own commands on a computer if someone used a specially crafted link to fetch code from a remote location.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- High
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Command Injection
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw permits command injection when CVS 1.12.x uses SSH for remote repositories, allowing arbitrary code execution through a malicious hostname in the repository URL that is passed to the SSH client.
Why it matters to the business
Successful exploitation can lead to remote code execution on developer or build systems, enabling data theft, supply-chain compromise, or persistence. With 98 downstream dependents and publicly available exploits for this years-old issue, organizations depending on tensorflow (Bitnami) face ongoing risk of targeted attacks.
How an attack unfolds
An attacker supplies a crafted repository URL containing an SSH option such as "-oProxyCommand=command;localhost:/path" to a victim CVS client configured for SSH. When the client parses the URL and invokes SSH, the injected command executes on the client system with the privileges of the CVS process. Public exploits have been available since disclosure.
How to fix it
Upgrade tensorflow (Bitnami) to version 2.1.4 or later. Where possible, replace CVS with a maintained VCS, disable SSH-based remote access, or enforce strict allow-listing of repository hostnames before any CVS invocation.
How to confirm the fix worked
Confirm tensorflow (Bitnami) is at version 2.1.4 or newer. In a lab environment, attempt connection to a test repository URL containing an SSH ProxyCommand option and verify that no external command is executed.
Typical attack path
- Locate systems or build pipelines that invoke CVS over SSH
- Craft a repository URL embedding a command-injection payload in the hostname field
- Deliver the malicious URL to the target (phishing, compromised dependency metadata, or supply-chain tampering)
- Trigger CVS checkout or update so the SSH client executes the injected command
- Establish foothold for further actions such as credential theft or lateral movement
How to detect it
Review CVS client logs, SSH invocation history, and process-creation events for repository URLs containing ProxyCommand or unusual hostnames. Correlate with command-line arguments that match the documented injection pattern.
- -oProxyCommand=
- localhost:/bar
- crafted hostname containing semicolon in CVS URL
- SSH process spawned by cvs with unexpected -o options
What your security team should do
- Upgrade all instances of tensorflow (Bitnami) to 2.1.4 immediately
- Audit build and developer workstations for any remaining CVS-over-SSH usage
- Add repository-URL validation or sandboxing around VCS clients
- Hunt for historical indicators of compromise given the public exploit maturity
- Remove or isolate any unmaintained CVS dependencies from production pipelines
The record
CVS 1.12.x, when configured to use SSH for remote repositories, might allow remote attackers to execute arbitrary code via a repository URL with a crafted hostname, as demonstrated by "-oProxyCommand=id;localhost:/bar."
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Alpine:v3.10 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.11 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.12 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.13 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.14 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.15 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.16 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.17 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.22 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.8 | cvs | 0 | 1.12.12-r0 |
| Alpine:v3.9 | cvs | 0 | 1.12.12-r0 |
| Debian:11 | cvs | 0 | 2:1.12.13+real-24 |
| Debian:12 | cvs | 0 | 2:1.12.13+real-24 |
| Debian:13 | cvs | 0 | 2:1.12.13+real-24 |
| Debian:7 | cvs | 0 | 2:1.12.13+real-9+deb7u1 |
| Debian:8 | cvs | 0 | 2:1.12.13+real-15+deb8u1 |
| Debian:9 | cvs | 0 | 2:1.12.13+real-22+deb9u1 |
| Hackage | git-annex | 0 | 6.20170818 |
| Hackage | git-annex | 0.1 | 6.20170818 |
| Mageia:5 | cvs | 0 | 1.12.13-25.1.mga5 |
| Mageia:6 | cvs | 0 | 1.12.13-26.1.mga6 |
| SUSE:Linux Enterprise Desktop 12 SP2 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Desktop 12 SP3 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Server 11 SP4 | cvs | 0 | 1.12.12-144.23.5.3.1 |
| SUSE:Linux Enterprise Server 12 SP2 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Server 12 SP3 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | cvs | 0 | 1.12.12-144.23.5.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | cvs | 0 | 1.12.12-182.3.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | cvs | 0 | 1.12.12-144.23.5.3.1 |
| Ubuntu:14.04:LTS | cvs | 0 | 2:1.12.13+real-12ubuntu0.1 |
| Ubuntu:16.04:LTS | cvs | 0 | 2:1.12.13+real-15ubuntu0.1 |
| openSUSE:Tumbleweed | cvs | 0 | 1.12.13-1.14 |
Related vulnerabilities
- CVE-2004-0416 Double free vulnerability for the error_prog_name string in CVS 1.12.x through 1.12.8… Also affects cvs
- CVE-2004-0396 Heap-based buffer overflow in CVS 1.11.x up to 1.11.15, and 1.12.x up to 1.12.7, when… Also affects cvs
- CVE-2003-0015 Double-free vulnerability in CVS 1.11.4 and earlier allows remote attackers to cause a… Also affects cvs
- HSEC-2023-0012 git-annex checksum exposure to encrypted special remotes Also affects git-annex
- CVE-2017-1000117 A malicious third-party can give a crafted "ssh://..." URL to an unsuspecting victim, and… Also affects git-annex
- CVE-2017-9800 A maliciously constructed svn+ssh:// URL would cause Subversion clients before 1.8.19… Also affects git-annex