[advisory]
id = "HSEC-2023-0009"
cwe = [20, 78]
keywords = ["ssh", "command-injection", "historical"]
aliases = ["CVE-2017-12976"]
related = ["CVE-2017-9800", "CVE-2017-12836", "CVE-2017-1000116", "CVE-2017-1000117"]
[[affected]]
package = "git-annex"
cvss = "CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"
[[affected.versions]]
introduced = "0.1"
fixed = "6.20170818"
[[references]]
type = "ADVISORY"
url = "https://git-annex.branchable.com/security/CVE-2017-12976/"
[[references]]
type = "FIX"
url = "http://source.git-annex.branchable.com/?p=source.git;a=commitdiff;h=df11e54788b254efebb4898b474de11ae8d3b471"
git-annex command injection via malicious SSH hostname
git-annex was vulnerable to the same class of security hole as
git's CVE-2017-1000117. In several cases, git-annex
parses a
repository URL, and uses it to generate a ssh
command, with the
hostname to ssh to coming from the URL. If the hostname it parses is
something like -eProxyCommand=evil
, this could result in arbitrary
local code execution.
Some details of URL parsing may prevent the exploit working in some cases.
Exploiting this would involve the attacker tricking the victim into
adding a remote something like ssh://-eProxyCommand=evil/blah
.
One possible avenue for an attacker that avoids exposing the URL to
the user is to use initremote
with an SSH remote, so embedding the
URL in the git-annex branch. Then the victim would enable it with
enableremote
.
This was fixed in version 6.20170818. Now there's a SshHost
type that is not allowed to start with a dash, and every invocation
of git-annex
uses a function that takes a SshHost
.