Уязвимость в Git, Subversion и Mercurial, допускающая подстановку команд через URL ssh://
Во всех популярных системах управления версиями, поддерживающими обращение к репозиторию через SSH, выявлена уязвимость, позволяющая выполнить любую команду в системе при попытке обработки специально оформленной ссылки на репозиторий с URL "ssh://". Проблема уже устранена в Git 2.14.1-2.7.6 (CVE-2017-1000117), Subversion 1.9.7 (CVE-2017-9800) и Mercurial 4.3 (CVE-2017-1000116), а также в коде GitHub и GitLab. Не исключено, что уязвимость проявляется и в других приложениях, использующих URL "ssh://".
Суть уязвимости сводится к тому, что при обработке URL "ssh://" допускается использование символа "-" вначале имени хоста, что позволяет использовать это имя для передачи опций ssh. Например, указав:
git clone ssh://-oProxyCommand=gnome-calculator/wat
вместо имени хоста при запуске ssh в качестве аргумента будет передана опция "-oProxyCommand", позволяющая вызвать дополнительный обработчик для соединения с сервером, т. е. дающая возможность выполнить любую команду в системе (в примере запускается gnome-calculator).