The OpenNET Project / Index page

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

08.01.2017 12:01  Уязвимость, позволяющая осуществить подстановку SQL-кода в GitHub Enterprise

В GitHub Enterprise, варианте GitHub для предприятий, позволяющем развернуть окружение для совместной разработки внутри корпоративной сети на подконтрольном оборудовании, выявлена уязвимость, позволяющая через отправку специально оформленного запроса выполнить произвольный SQL-код на сервере.

В описании уязвимости приводится заслуживающий внимания рассказ об организации работы кода GitHub Enterprise, который во многом пересекается с кодом публичного сервиса GitHub. Пакет поставляется в виде образа виртуальной машины, доступной для бесплатного ознакомительного использования в течение 45 дней. Исходные тексты скрыты и поставляются в упакованном виде, напоминающем зашифрованный набор данных. Прозрачная распаковка в момент выполнения осуществляется при помощи библиотеки ruby_concealer.so, анализ которой показал, что метод упаковки сводится к сжатию кода при помощи Zlib::Inflate::inflate и применению операции XOR с предопределённым ключом.

После распаковки было выяснено, что большая часть кода написана на языке Ruby с использованием фреймворков Ruby on Rails и Sinatra, но также применяются компоненты на Python, Bourne Shell, C++ и Java. По мнению исследователя безопасности, код, отвечающий за работу web-сервисов, основан на реальной кодовой базе github.com, gist.github.com, render.githubusercontent.com и api.github.com. Получив доступ к коду исследователь, до этого не имевший дело c языком Ruby, потратил всего четыре дня на поиск возможных уязвимостей и выявил проблему в обработчике PreReceiveHookTarget, позволяющую осуществить подстановку SQL-кода через передачу специально оформленных данных через параметр "sort", отправив запрос к общедоступному Web API.



   $ curl -k -H 'Accept:application/vnd.github.eye-scream-preview' \
   'https://192.168.187.145/api/v3/organizations/1/pre-receive-hooks?access_token=????????&sort=id,(select+1+from+information_schema.tables+limit+1,1)'

   $ curl -k -H 'Accept:application/vnd.github.eye-scream-preview' \
   'https://192.168.187.145/api/v3/organizations/1/pre-receive-hooks?access_token=????????&sort=id,if(user()="github@localhost",sleep(5),user())'

GitHub был уведомлен о проблеме в конце декабря и устранил уязвимость в выпуске GitHub Enterprise 2.8.5. Выявившему уязвимость исследователю выплачено вознаграждение в размере 5 тысяч долларов США.

  1. Главная ссылка к новости (http://blog.orange.tw/2017/01/...)
  2. OpenNews: Выявлена порция уязвимых SSH-ключей доступа к GitHub
  3. OpenNews: Возможность доступа к приватным репозиториям GitHub при помощи серии незначительных уязвимостей в OAuth
  4. OpenNews: Через уязвимость в GitHub от имени Линуса Торвальдса создан фиктивный репозиторий linux-ng
  5. OpenNews: В GitHub устранена уязвимость, допускающая внедрение кода в любой репозиторий
  6. OpenNews: Половина кода на GitHub поставляется без указания лицензии и небезопасна для интеграции в открытые проекты
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: github
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 12:49, 08/01/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +4 +/
    Хороший способ заработать  5 тыс $ за 4 дня.
     
     
  • 2.21, Аноним (-), 18:47, 08/01/2017 [^] [ответить]    [к модератору]
  • +/
    > исследователю выплачено вознаграждение в размере 5 тысяч долларов США

    А могли бы исследователю просто дать абонемент на год бесплатного Github Enterprise...

     
     
  • 3.23, Аноненамус (?), 19:49, 08/01/2017 [^] [ответить]    [к модератору]
  • +1 +/
    Но зачем? где он его тратить будет?
     
     
  • 4.52, Аноним (-), 18:29, 09/01/2017 [^] [ответить]    [к модератору]
  • +/
    это, видимо - отсылка к наградам некоторых компаний
     
  • 1.2, deadfood (ok), 13:16, 08/01/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +6 +/
    >Прозрачная распаковка в момент выполнения осуществляется при помощи библиотеки ruby_concealer.so, анализ которой показал для метод упаковки сводится к сжатию кода при помощи Zlib::Inflate::inflate и применению операции XOR с предопределённым ключом.

    что на опеннете делает эта гнусная проприетарщина?

     
     
     
    Часть нити удалена модератором

  • 3.9, VANANIMAS (?), 17:34, 08/01/2017 [^] [ответить]    [к модератору]  
  • +/
    Ноет.
     
  • 2.36, Аноним (-), 05:43, 09/01/2017 [^] [ответить]    [к модератору]  
  • +/
    > что на опеннете делает эта гнусная проприетарщина?

    Кормит троллей лулзами разве что. Для чего-то такого проприетарь и нужна.

     
  • 1.3, IB (?), 14:13, 08/01/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Вашу ж мать, когда "ынтырпрайз" научится использовать prepared statements
     
     
  • 2.4, Ordu (ok), 14:54, 08/01/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    Это ruby и ActiveRecord Там это может быть не столь элементарно, чем в случае, ... весь текст скрыт [показать]
     
     
  • 3.11, Аноним (-), 17:46, 08/01/2017 [^] [ответить]     [к модератору]  
  • +3 +/
    Проблема не в ActiveRecord, а в том, что входные данные никто не проверяет как с... весь текст скрыт [показать]
     
     
  • 4.17, Алексей Морозов (ok), 18:37, 08/01/2017 [^] [ответить]     [к модератору]  
  • +3 +/
    Оставлять проверку входных данных на прикладного программиста 8212 изощренный... весь текст скрыт [показать]
     
     
  • 5.30, АнониМ (ok), 23:21, 08/01/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    от prepared statements может просесть производительность Тот же оракл может оче... весь текст скрыт [показать]
     
     
  • 6.34, Анином (?), 03:18, 09/01/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    Ахаха Тот же оракл просядет, если его кеш запросов будут забивать запросами с ... весь текст скрыт [показать]
     
  • 6.35, . (?), 04:18, 09/01/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    >Тот же оракл может очень хорошо оптимизнуть запрос, ежель имеет конкретные значения, а не ps.

    Ага, расскажи о вкусе ананасов тем кто их и в самом деле ел :-)))) В общем - в сад!

     
  • 6.51, anonymous (??), 17:44, 09/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Отпимизация случайного возникшего хорошего случая не забываем, что речь идет о ... весь текст скрыт [показать]
     
  • 5.58, xz (??), 12:52, 12/01/2017 [^] [ответить]     [к модератору]  
  • +/
    А какая связь между автоматическим созданием SQL-стейтмента и prepared ... весь текст скрыт [показать]
     
  • 4.33, Ordu (ok), 02:22, 09/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Конечно же Сколь бы дурацкий инструмент мы не использовали, если не справляется... весь текст скрыт [показать]
     
     
  • 5.40, Аноним (-), 11:23, 09/01/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    клоун Пока запрос пишется в текстовом виде, будут существовать ошибки подстанов... весь текст скрыт [показать]
     
     
  • 6.43, Аноним (-), 13:27, 09/01/2017 [^] [ответить]    [к модератору]  
  • +/
    Однако ж попробуй заинъектить что-нибудь в простую key-value базу, где ключ и значение произвольные бинарные значения. Если специальной трактовки символов нет то и инъекция не получится.
     
     
  • 7.44, Аноним (-), 13:44, 09/01/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    клоун если программа работает с внешними данными, то можно подобрать такой их н... весь текст скрыт [показать]
     
     
  • 8.54, Аноним (-), 20:03, 09/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Только если автор - дол и не понял что извне таки натурально могут приехать Л... весь текст скрыт [показать]
     
  • 6.45, Ordu (ok), 14:02, 09/01/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Бла-бла-бла Ещё какой всемирный закон ты открыл Сколько _тебе_ лет, что ты н... весь текст скрыт [показать]
     
     
  • 7.46, Аноним (-), 14:18, 09/01/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    клоун Ты в суть проблемы то вник Они неверно экранировали входные данные Каки... весь текст скрыт [показать]
     
     
  • 8.50, Ordu (ok), 17:40, 09/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Ты с ActiveRecord знаком, деточка ActiveRecord занимается сборкой текстового sq... весь текст скрыт [показать]
     
  • 3.12, Kodir (ok), 17:48, 08/01/2017 [^] [ответить]     [к модератору]  
  • –7 +/
    AR вообще тут не причём Какой бы ни был ORM, программист просто не имеет права ... весь текст скрыт [показать]
     
     
  • 4.13, Аноним (-), 17:55, 08/01/2017 [^] [ответить]    [к модератору]  
  • +6 +/
    > Уязвимость, позволяющая осуществить подстановку SQL-кода в GitHub Enterprise
    > Эксплойт лишний раз доказывает, насколько раздута слава git
    > GitHub Enterprise
    > git
    > GitHub Enterprise
    > git
    > GitHub Enterprise
    > это написал наш великий Линус!
    > GitHub Enterprise
    > это написал наш великий Линус!

    Слишком толсто, попробуйте потоньше.

     
  • 4.37, Аноним (-), 05:45, 09/01/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > Mercurial - наше всё. :)

    Угу, ваше. "Ну тогда и т...ся сам с собой!" (c) анекдот.

     
  • 2.14, Crazy Alex (ok), 17:57, 08/01/2017 [^] [ответить]     [к модератору]  
  • –6 +/
    Гитхаб с руби - это так себе энтерпрайз Со джавой спрингом я подобных уязвимост... весь текст скрыт [показать]
     
     
  • 3.18, Лютый жабист__ (?), 18:41, 08/01/2017 [^] [ответить]    [к модератору]  
  • –5 +/
    Prepared statements на любом языке это кал. Приходится писать их 100500 однотипных. Вообще sql устарел, вот в монге всё гуд и без ps.
     
  • 3.19, Алексей Морозов (ok), 18:41, 08/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Известный мне open source пример 8212 querydsl http www querydsl com stati... весь текст скрыт [показать]
     
     
  • 4.31, Crazy Alex (ok), 23:48, 08/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Это вообще не то Во-первых, я говорил о том, что подобная штука должна быть чем... весь текст скрыт [показать]
     
     
  • 5.49, Алексей Морозов (ok), 16:28, 09/01/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Реальность, данная нам в ощущениях, явственно говорит, что в существующие SQL RD... весь текст скрыт [показать]
     
  • 2.42, angra (ok), 13:04, 09/01/2017 [^] [ответить]     [к модератору]  
  • +/
    Когда уже невежды узнают про ограниченность возможностей prepared statements и п... весь текст скрыт [показать]
     
  • 2.47, mimocrocodile (?), 15:12, 09/01/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    И тут ты такой приводишь пример использования prepared statements с задаваемой пользователем сортировкой
     
  • 1.32, Вы забыли заполнить поле Name (?), 01:55, 09/01/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    > анализ которой показал, что метод упаковки сводится к сжатию кода при помощи Zlib::Inflate::inflate и применению операции XOR с предопределённым ключом.
    > после распаковки было выяснено, что большая часть кода написана на языке Ruby

    Я правильно понял, что выявивший уязвимость определил ключ и получил код?

    > По мнению исследователя безопасности, код, отвечающий за работу web-сервисов, основан на реальной кодовой базе github.com, gist.github.com, render.githubusercontent.com и api.github.com.

    Как он это понял, если код перечисленных сервисов закрыт?

     
     
  • 2.39, Аноним (-), 05:49, 09/01/2017 [^] [ответить]    [к модератору]  
  • +/
    > Как он это понял, если код перечисленных сервисов закрыт?

    Правильно, определять надо путем drop table students без лишних церемоний, это научит вебмакак валидировать ввод :)

     

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


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