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 [^] [ответить] [смотреть все]  
  • +1 +/
    Я другой анон, но отвечу тут Мое мнение, -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 [^] [ответить] [смотреть все] [показать ветку]  
  • +5 +/
    > а зачем вообще гиту 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 вообще не предусмотрено ни шифрования, ни авторизации, и эти задачи по определению перекладываются на внешние средства?

    Ты говоришь про ssh так, будто в git встроена реализация ssh или хотя бы ssh клиента. Хотя на само деле git работает внутри ssh туннеля

    Ты говоришь про ssl, будто не знаешь, что кроме работы внутри ssh туннеля git так же прекрасно работает внутри любого другого защищённого туннеля. В том числе - через любой веб-сервер, настроенный с поддержкой кошерного TLS 1.2

    Не путай тёплое с мягким, и над тобой не будут смеяться

    Про идеологию unix что-нибудь слышал? git решает одну задачу и решает его хорошо. Авторизацию и шифрование обеспечивает другое ПО, с которым git взаимодействует

     
     
  • 4.58, пох, 22:03, 14/08/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    он вероятно как раз в курсе, и здраво относит это к банальному неумению линуса и... весь текст скрыт [показать]
     
  • 3.57, anonymous, 19:12, 14/08/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    На вот, почитай  https://git-scm.com/book/en/v2
     
  • 3.60, пох, 22:18, 14/08/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    он использовал самый кривой путь, какой только можно - и теперь, к сожалению, эт... весь текст скрыт [показать]
     
  • 2.55, Ordu, 07:32, 13/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Я лично этим svn+ssh пользовался 1 раз в жизни.

    _git_ + ssh?

    > Можно же было сделать ssh через плагины или вообще не делать ...

    Какая тебе разница? Если ты не пользуешься git over ssh, то тебя эта уязвимость вообще никак не затрагивает. А если ты пользуешься, то она тебя затронет вне зависимости от того, будет ли поддержка ssh в плагине или в основной коде.

     
     
  • 3.59, пох, 22:06, 14/08/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > Какая тебе разница? Если ты не пользуешься git over ssh, то тебя
    > эта уязвимость вообще никак не затрагивает. А если ты пользуешься, то

    затрагивает - subrepo на сервере (своем или гитхабе) может "попользоваться" без твоего ведома.

     
     
  • 4.61, Ordu, 22:45, 14/08/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    >> Какая тебе разница? Если ты не пользуешься git over ssh, то тебя
    >> эта уязвимость вообще никак не затрагивает. А если ты пользуешься, то
    > затрагивает - subrepo на сервере (своем или гитхабе) может "попользоваться" без твоего
    > ведома.

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

     

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


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