]> xenbits.xensource.com Git - libvirt.git/commit
rpc: avoid ssh interpreting malicious hostname as arguments
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 11 Aug 2017 16:19:53 +0000 (17:19 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 29 Aug 2017 17:02:03 +0000 (18:02 +0100)
commite4cb8500810a310a10a6cb359e1b53fac03ed597
treeb1cd63136b925fd015833dad6a7fcd015a69727e
parented8661a309c96e4a1573dc0ca2c76ea7ff19469a
rpc: avoid ssh interpreting malicious hostname as arguments

Inspired by the recent GIT / Mercurial security flaws
(http://blog.recurity-labs.com/2017-08-10/scm-vulns),
consider someone/something manages to feed libvirt a bogus
URI such as:

  virsh -c qemu+ssh://-oProxyCommand=gnome-calculator/system

In this case, the hosname "-oProxyCommand=gnome-calculator"
will get interpreted as an argument to ssh, not a hostname.
Fortunately, due to the set of args we have following the
hostname, SSH will then interpret our bit of shell script
that runs 'nc' on the remote host as a cipher name, which is
clearly invalid. This makes ssh exit during argv parsing and
so it never tries to run gnome-calculator.

We are lucky this time, but lets be more paranoid, by using
'--' to explicitly tell SSH when it has finished seeing
command line options. This forces it to interpret
"-oProxyCommand=gnome-calculator" as a hostname, and thus
see a fail from hostname lookup.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/rpc/virnetsocket.c