Researchers recently found that three of the most popular version control systems can be tricked into running arbitrary code.
Joern Schneeweisz, a security researcher for Recurity Labs, discovered vulnerabilities that could enable threat actors to steal source code from the code repository or hijack the machine that runs the repository by copying a source code project via a SSH link. This link can be hidden inside modules of the tool so that no direct user action is required to exploit the fault.
Inside the Git LFS Vulnerability
The first vulnerability, which can be configured by a .lfsconfig file, was found in Git LFS, a tool used on GitHub to clone repository files. If a URL in a submodule contains “ssh://-oProxyCommand=some-command,” instead of obtaining a clone, Git LFS would perform the command on the user’s computer. Calling this URL recursively could execute multiple commands. The payload is triggered when the module is updated.
This vulnerability also showed up in the GitLab implementation and was tracked with CVE-2017-12426. Additionally, Schneeweisz discovered that the parent Git project was open to the flaw as well.
Two Additional Vulnerabilities in Version Control Systems
After being informed of the problem, Git issued a fix. However, it seems that there were other version control systems affected by the same vulnerability, which was buried inside the Git clone operation. Bleeping Computer noted that during the attempt to fix Git LFS, Apache Subversion (SVN) and Mercurial were also found to be open to this kind of attack.
Schneeweisz noted that SVN was impacted most because it follows HTTP 301 redirects to svn+ssh:// URLs. “As a result,” he said, “an innocent-looking HTTP URL can be used to trigger a command execution with a 301 redirect.” That means that SVN doesn’t detect HTTP redirects in its repository cloning operations.
However, the issued fix addressed all the problem areas that have been found thus far in all three tools. Users of these systems should be vigilant about patching systems to avoid exploits.