The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

11.08.2017 09:36  Уязвимость в Git, Subversion и Mercurial, допускающая подстановку команд через URL ssh://

Во всех популярных системах управления версиями, которые поддерживают обращение к репозиторию через SSH, выявлена уязвимость, позволяющая выполнить любую команду в системе при попытке обработки специально оформленной ссылки "ssh://" на репозиторий. Проблема уже устранена в Git 2.7.6-2.14.1 (CVE-2017-1000117), Subversion 1.9.7 (CVE-2017-9800) и Mercurial 4.3 (CVE-2017-1000116), а также в GitHub и GitLab. Не исключено, что уязвимость проявляется и в других приложениях, использующих URL "ssh://". Интересно, что похожая уязвимость (CVE-2004-0489) была устранена в браузере Safari ещё в 2004 году.

Суть уязвимости сводится к тому, что при обработке URL "ssh://" допускается использование символа "-" в начале имени хоста, что позволяет использовать это имя для передачи опций ssh. Например, указав:


   git clone ssh://-oProxyCommand=gnome-calculator/wat

в качестве имени хоста при запуске ssh будет передана строка "-oProxyCommand=gnome-calculator", которая будет обработана как опция в ssh. Так как через ssh-опцию ProxyCommand можно вызвать дополнительный обработчик установки соединения с сервером, появляется возможность выполнить любую команду в системе (в примере запускается gnome-calculator).

Для автоматизации атаки на Git злоумышленник может разместить подобный URL в файле .gitmodules подконтрольного ему репозитория. На системах пользователей, клонировавших данный репозиторий, команда злоумышленника будет запущена при выполнении операции "git clone --recurse-submodules". Для защиты от данного вида атак в Git отныне запрещено использование имён хостов и репозиториев, начинающихся с символа "-".

В GitHub проблема позволяла организовать выполнение кода через манипуляции с настройками Git LFS. Атака осуществлялась через размещение в репозитории файла .lfsconfig, в котором в качестве пути к LFS-хранилищу применялась конструкция вида "url = ssh://-oProxyCommand=some-command". Метод позволяет организовать выполнение произвольного кода на стороне клиентов, клонировавших репозиторий с подобным файлом, при наличии у них плагина Git LFS.

Проблемы с обработкой "ssh://" также были найдены и в GitLab (CVE-2017-12426), причём позволяли выполнить команду на стороне сервера GitLab при попытке импортировать репозитории, указав в web-интерфейсе в секции "Repo by URL" путь, подобный "ssh://-oProxyCommand=some-command".

В Mercurial 4.3 помимо вышеописанной проблемы прекращена поддержка Python 2.6 и устранена ещё одна уязвимость (CVE-2017-1000115), которая позволяет через манипуляцию с символическими ссылками осуществить запись в области ФС за пределами репозитория.

  1. Главная ссылка к новости (http://blog.recurity-labs.com/...)
  2. OpenNews: Уязвимость, позволяющая осуществить подстановку SQL-кода в GitHub Enterprise
  3. OpenNews: Уязвимость в GitLab, позволяющая прочитать содержимое системных файлов
  4. OpenNews: Выпуск Git 2.4.11, 2.5.5 и 2.6.6 и 2.7.4 с устранением критических уязвимостей
  5. OpenNews: Опасная уязвимость во всех версиях Git
  6. OpenNews: В Tor Browser устранена уязвимость, допускавшая прямое соединение в обход Tor
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: git, subversion, mercurial, ssh
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 09:46, 11/08/2017 [ответить] [смотреть все]
  • +/
    Не прокатило ... весь текст скрыт [показать]
     
     
  • 2.9, Andrey Mitrofanov, 11:06, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +9 +/
    >>Cloning into 'wat'...
    >>fatal: strange hostname '-oProxyCommand=gnome-calculator' blocked
    > Не прокатило...

    Читер.[CODE]--- git-2.13.4/connect.c        2017-08-01 21:56:34.000000000 +0300
    +++ git-2.13.5/connect.c        2017-08-09 22:53:15.000000000 +0300
    @@ -577,6 +577,11 @@
    +       if (looks_like_command_line_option(host))
    +               die("strange hostname '%s' blocked", host);[/CODE]

    --[U]/bin/bash: line 0: exec: gnome-calculator: не найден[/U]

     
  • 1.2, Аноним, 09:50, 11/08/2017 [ответить] [смотреть все]  
  • +2 +/
    Прокатило, запустился калькулятор CentOS 7 git clone ssh -oProxyCommand gno... весь текст скрыт [показать]
     
  • 1.4, Аноним, 09:57, 11/08/2017 [ответить] [смотреть все]  
  • –1 +/
    Так, наверное, это прокол IETF, прежде всего А то символ подчёркивания в именах... весь текст скрыт [показать]
     
     
  • 2.5, Аноним, 10:12, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +5 +/
    Можно подумать, что передача других внешних данных в exec это нормально За 20... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, Аноним, 10:24, 11/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Т.е., твое мнение: команды ProxyCommand= быть не должно?
     
     
  • 4.32, Аноним, 17:20, 11/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Я другой анон, но отвечу тут Мое мнение, -oProxyCommand gnome-calculator не д... весь текст скрыт [показать]
     
  • 2.7, Аноним, 10:25, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –3 +/
    А при чем здесь IETF Экранировать необходимо, при передаче ssh Запускает то на... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.33, Аноним, 17:21, 11/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Головой думать надо, а не экранировать Если по хорошему поддерживать использова... весь текст скрыт [показать]
     
     
  • 4.34, Аноним, 17:56, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Да, думать надо 99 , ничего скоро зима Согласен По этому безопаснее работать ... весь текст скрыт [показать]
     
     
  • 5.47, пох, 19:40, 11/08/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    в моих системах ровно _ноль_ важных данных, принадлежащих не этому обычному пол... весь текст скрыт [показать]
     
  • 4.37, pripolz, 18:11, 11/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Попытка компиляции - это уже после Тут ты ловишь эксплойт ещё на этапе скачиван... весь текст скрыт [показать]
     
  • 3.43, Аноним, 19:32, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Что экранировать, дефис Так он правильно воспринимается Просто такое имя хоста... весь текст скрыт [показать]
     
     
  • 4.44, Аноним, 19:33, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Точнее, запускаешь с EUID 0 git, который запускает ssh-клиент ... весь текст скрыт [показать]
     
  • 2.8, nobody, 11:04, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –3 +/
    Причём тут подчёркивание вообще Дефис - нормальный символ в имени хоста open-s... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, Andrey Mitrofanov, 11:11, 11/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Боль системдешников от s-d-resolved, к которым прилетело от их фетиша http ... весь текст скрыт [показать]
     
  • 3.17, EHLO, 13:13, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    >Дефис - нормальный символ в имени хоста: open-std.org

    не в начале имени. КО

     
  • 3.27, Аноним, 15:21, 11/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Нормальный, если он не первый и не последний Читай RFC ... весь текст скрыт [показать]
     
  • 2.26, Аноним, 15:19, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Может сначала RFC3986 глянешь, а потом уже будешь на IETF наезжать Such a na... весь текст скрыт [показать] [показать ветку]
     
  • 1.11, YetAnotherOnanym, 11:33, 11/08/2017 [ответить] [смотреть все]  
  • +/
    Так всегда бывает, когда для каких-то целей используется команда с избыточной функциональностью. Странно, что до сих пор не изобрели какой-нибудь EunuchSSH специально для таких целей. Тем, кто хочет ткнуть меня носом в rssh, отвечу заранее - это restricted shell for ssh, а не вариант ssh с урезанными возможностями.
     
     
  • 2.24, пох, 14:54, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    тебе надо выполнить некую команду на стороне сервера Программа для этой задачи,... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.30, YetAnotherOnanym, 16:57, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    В данном случае вопрос в том, чтобы не была выполнена нежелательная команда на с... весь текст скрыт [показать]
     
     
  • 4.39, пох, 19:15, 11/08/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    от этого никуда не убежишь - слишком много ситуаций, когда требуется передавать ... весь текст скрыт [показать]
     
  • 2.31, Аноним, 17:09, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Давно изобрели 8212 используй любую из 9000 сторонних SHH-библиотек и всё ок ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.35, omnomnin, 17:59, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    гитлабовцы ващета руби-на-рельсах хипстеры, но сути это не меняет да... весь текст скрыт [показать]
     
  • 1.12, Аноним, 11:34, 11/08/2017 [ответить] [смотреть все]  
  • +1 +/
    Так уязвимость в гите или в стандартах на урлы вида ssh ... весь текст скрыт [показать]
     
     
  • 2.15, пох, 12:20, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    очевидно, в гите - какого хрена я не могу назвать свой хост -oProxyCommand gnome... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, mmc, 14:15, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    скорее всего, имя уже занято можно использовать -oProxyCommand gnome-calculator... весь текст скрыт [показать]
     
  • 3.25, Аноним, 15:14, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    В mercurial почти так же https www mercurial-scm org repo hg rev 739cc0f9cbb4 ... весь текст скрыт [показать]
     
     
  • 4.48, пох, 19:48, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    This paranoia probably isn t required, but it can t hurt either то есть они сов... весь текст скрыт [показать]
     
  • 3.28, Аноним, 15:23, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Не можешь, потому что стандарт не разрешает ни дефис в начале, ни где бы то н... весь текст скрыт [показать]
     
     
  • 4.40, пох, 19:19, 11/08/2017 [^] [ответить] [смотреть все]  
  • –3 +/
    провижу массу интересных ремоут-хаков на теме того, что у нас не принято, а у и... весь текст скрыт [показать]
     
     
  • 5.41, Andrey Mitrofanov, 19:23, 11/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    --Маленький Бобби Тейблс, как мы его зовём ... весь текст скрыт [показать]
     
  • 5.45, Аноним, 19:37, 11/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Создай и продемонстрируй, тогда поговорим ... весь текст скрыт [показать]
     
     
  • 6.49, little Boby Tables, 19:56, 11/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    etc bind rndc reload local zone reload queued etc bind tail var log message... весь текст скрыт [показать]
     
     ....нить скрыта, показать (9)

  • 1.20, pripolz, 13:41, 11/08/2017 [ответить] [смотреть все]  
  • –3 +/
    а зачем вообще гиту ssh ?
     
     
  • 2.21, Andrey Mitrofanov, 13:49, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +6 +/
    > а зачем вообще гиту ssh ?

    Вместо smb://. Очевидно же!!

     
  • 2.23, ваш К.О., 14:49, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    не все хотят торчать в инет еще одним кривым сервисом не все хотят настраивать ... весь текст скрыт [показать] [показать ветку]
     
  • 2.52, Аноним, 09:29, 12/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Потому, что в голом git gitd вообще нет авторизации Она реализуется сторонн... весь текст скрыт [показать] [показать ветку]
     
  • 1.29, Аноним, 16:32, 11/08/2017 [ответить] [смотреть все]  
  • –5 +/
    Это не баг, а фича.
     
  • 1.36, pripolz, 18:00, 11/08/2017 [ответить] [смотреть все]  
  • –2 +/
    Нормальный такой нежданчик всё-таки.

    Просто клонировал себе репозиторий.
    Получил "rm -rf /" в submodules.

    или какой-нить эксплойт на inotify..

    Это ещё даже до компиляции.

    Что дальше? Окажется, что wget тоже через ssh чудить умеет?

     
     
  • 2.42, пох, 19:30, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    да ну, ожидаемый, на самом деле а зачем ему, он-то и через http неплохо могет... весь текст скрыт [показать] [показать ветку]
     
  • 2.46, Аноним, 19:39, 11/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Ты клонируешь репозитории под рутом Может и perl-одностроки под ним запускаешь ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.50, axredneck, 02:53, 12/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    "rm -rf /" и без рута может дров наломать
     
  • 1.51, Аноним, 09:27, 12/08/2017 [ответить] [смотреть все]  
  • +/
    Я правильно понимаю, что параметр передаётся _ВМЕСТО_ имени хоста и это по сути ... весь текст скрыт [показать]
     
  • 1.53, Аноним, 02:30, 13/08/2017 [ответить] [смотреть все]  
  • –1 +/
    Смотрю я на все эти уязвимости и у меня вопрос доколе будут делать все монолитом... весь текст скрыт [показать]
     
     
  • 2.54, Аноним, 03:54, 13/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Потому что Торвальдс не эксперт по безопасности Он использовал самый простой пу... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.56, anonymous, 19:08, 14/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Иксперд, ты же в курсе, что в самом git вообще не предусмотрено ни шифрования, н... весь текст скрыт [показать]
     
     
  • 4.58, пох, 22:03, 14/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    он вероятно как раз в курсе, и здраво относит это к банальному неумению линуса и... весь текст скрыт [показать]
     
     
  • 5.64, Аноним, 23:33, 10/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Это не здраво , а как раз больная фантазия фанатика Иди ещё раз кури идеолог... весь текст скрыт [показать]
     
  • 3.57, anonymous, 19:12, 14/08/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    На вот, почитай  https://git-scm.com/book/en/v2
     
  • 3.60, пох, 22:18, 14/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    он использовал самый кривой путь, какой только можно - и теперь, к сожалению, эт... весь текст скрыт [показать]
     
  • 2.55, Ordu, 07:32, 13/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    _git_ ssh Какая тебе разница Если ты не пользуешься git over ssh, то тебя эт... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.59, пох, 22:06, 14/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    затрагивает - subrepo на сервере своем или гитхабе может попользоваться без ... весь текст скрыт [показать]
     
     
  • 4.61, Ordu, 22:45, 14/08/2017 [^] [ответить] [смотреть все]  
  • +/
    >> Какая тебе разница? Если ты не пользуешься git over ssh, то тебя
    >> эта уязвимость вообще никак не затрагивает. А если ты пользуешься, то
    > затрагивает - subrepo на сервере (своем или гитхабе) может "попользоваться" без твоего
    > ведома.

    При чём тут "с ведома"? Если тебе понадобился ssh плагин, а его у тебя нет, то тебе придётся его ставить. Плагин, в данном случае -- это не более чем иллюзия контроля.

     
  • 1.62, Аноним, 10:46, 02/09/2017 [ответить] [смотреть все]  
  • +/
    только что проверил на ansible, тоже работает
    Глобальная проблема то
     
     
  • 2.63, Аноним, 11:04, 02/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    указал в hosts -oProxyCommand gnome-calculator -m advanced Работает, в ковычка... весь текст скрыт [показать] [показать ветку]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor