The OpenNET Project / Index page

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

29.08.2018 22:37  Уязвимость, позволяющая удалённо выполнить код на сервере PHP-репозитория Packagist

В Packagist, крупнейшем репозитории пакетов на языке PHP, ежемесячно обслуживающем более 400 млн загрузок и по умолчанию применяемом в пакетной менеджере Composer, выявлена критическая уязвимость, позволяющая выполнить код на сервере проекта через передачу специально оформленных значений в форму добавления нового пакета.

Уязвимость вызвана отсутствием должной проверки передаваемых значений перед их обработкой в shell-скриптах. В частности, для выполнения произвольных shell-команд в текстовое поле с URL репозитория добавляемого проекта достаточно было ввести строку вида "$(код)". На стороне сервера данный URL передаётся в качестве аргумента при вызове команд git, p4, svn и hg. Для git и hg выполняется экранирование строки кавычками, но для p4 (Perforce) и svn (Subversion) строка передаётся как есть, например, при вводе "$(sleep 1)" будет запущена команда "svn info --non-interactive $(sleep 1)". Разработчики Packagist уже исправили проблему, добавив экранирование при помощи вызова ProcessExecutor::escape().

К сожалению, халатное отношение к безопасности присуще разработчикам многих современных репозиториев пакетов, что облегчает возможность компрометации подобных систем злоумышленниками. Например, выявивший проблему исследователь безопасности в прошлом году обнаружил похожую проблему в RubyGems, позволяющую выполнить код на сервере RubyGems.org при загрузке специально оформленного gem-пакета, а также продемонстрировал возможность запуска своего кода на некоторых зеркалах NPM и нашёл способ удаления произвольных файлов из репозитория PyPI. Исследователь также выявил уязвимость в часто применяемой с NPM сети доставки контента unpkg.com, которая позволяла записать любые данные на сервер и в том числе заменить содержимое отдаваемых пакетов, что давало возможность организовать запуск любого JavaScript-кода на сайтах, использующих unpkg.

  1. Главная ссылка к новости (https://justi.cz/security/2018...)
  2. OpenNews: Доступен Composer 1.0.0, менеджер зависимостей для PHP
  3. OpenNews: Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems
  4. OpenNews: Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
  5. OpenNews: Сбой антиспам-системы привёл к коллапсу в репозитории NPM
  6. OpenNews: Выявлена попытка включения бэкдора в популярный NPM-пакет mailparser
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: packagist, php
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Китайский кулхацкер (?), 22:44, 29/08/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +3 +/
    Загадка: что общего у дешёвого китайского роутера и крупнейшего репозитория пакетов на языке PHP?
     
     
  • 2.2, Аноним (2), 23:07, 29/08/2018 [^] [ответить]    [к модератору]
  • +14 +/
    Голая жопа торчащая в интернет
     
  • 1.4, anonymous (??), 00:26, 30/08/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +3 +/
    Ну вот, мироздание опять пришло в равновесие. А то непорядок, сайт на PHP был, а инъекции нет.
     
     
  • 2.5, anonymous (??), 00:29, 30/08/2018 [^] [ответить]    [к модератору]
  • +2 +/
    > Разработчики Packagist уже исправили проблему, добавив экранирование при помощи вызова ProcessExecutor::escape().

    Прям бальзам. Типичные пыхеры, с типичным "решением", хоть кол на голове теши.

     
     
  • 3.10, Аноним (10), 04:25, 30/08/2018 [^] [ответить]    [к модератору]
  • +2 +/
    То есть типичных рубистов и питонщиков мы игнорим, а пыхари-то козлы налажали..
    Про js даже говорить нет смысла, но козлы все равно пыхари..
    Не твоя вот и бесишся)
     
     
  • 4.11, Аноним (11), 06:09, 30/08/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Как скажешь. Веб дерьмо и дерьмом останется. Все кто пишут для веба нелюди. Так лучше?
     
     
  • 5.43, Leah (?), 00:24, 31/08/2018 [^] [ответить]    [к модератору]  
  • +/
    Согласно концепции web2.0 ты сейчас тоже пишешь "для веба". Нежнее надо быть, Анон!
    Хотя комментарии содержащие слово "все" можно удалять неглядя, ибо 98% их есть чушь.
     
  • 4.15, anonymous (??), 07:16, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    > То есть типичных рубистов и питонщиков мы игнорим, а пыхари-то козлы налажали..

    Питонщиков, слава богу, приучили не пользоваться system и передавать аргументы массивом в exec-like колы.

     
     
  • 5.20, пох (?), 08:20, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    да-да, фильтровать untrusted data не надо, за вас позаботится массив аргументов ... весь текст скрыт [показать]
     
     
  • 6.24, anonymous (??), 08:32, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    > да-да, фильтровать untrusted data не надо, за вас позаботится массив аргументов.

    Я такого не говорил. И фильтровать надо, и передавать массивом. Безопасности много не бывает.

     
  • 1.7, Аноним (7), 01:51, 30/08/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    > Разработчики Packagist уже исправили проблему, добавив экранирование

    Фееричный фикс. Не удивлюсь, если они до сих пор не видят никаких проблем в самом использовании system()...

     
     
  • 2.8, Отражение луны (ok), 02:11, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    * в самом использовании php
     
     
  • 3.12, istepan (ok), 06:24, 30/08/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    А что с PHP не так?
    Мне правда интересно.
     
     
  • 4.13, пох (?), 07:02, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    мне не менее интересно, что не так с system(), если, конечно, не тянуть в параметры любой мусор, полученный из веба.

     
     
  • 5.14, anonymous (??), 07:13, 30/08/2018 [^] [ответить]     [к модератору]  
  • –3 +/
    Вот ты лалка, а таким спецом выставлялся, прям гуру админства и проектирования с... весь текст скрыт [показать]
     
     
  • 6.16, Агин (?), 07:26, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    Да тут 99% такие и 99% не знают, как GNU расшифровывается.
     
     
  • 7.39, Тот_Самый_Анонимус (?), 18:19, 30/08/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Зато вы, как узнали, сразу илитой себя ощутили, да?
     
  • 7.44, Leah (?), 00:31, 31/08/2018 [^] [ответить]    [к модератору]  
  • +/
    > как GNU расшифровывается.

    так оно у тебя ещё и зашифровано?!!

     
  • 6.21, пох (?), 08:24, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    обалдеть Нет, дружище, это не решение проблемы Это признание твоего неумения п... весь текст скрыт [показать]
     
     
  • 7.25, anonymous (??), 08:38, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    > Это признание твоего неумения программировать, и перекладывание ее решения на других.

    Ребята из Drupal могут много рассказать про их надежную многоуровневую фильтрацию.

     
     
  • 8.33, пох (?), 10:39, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    в смысле У них ее отродясь как раз и не было - фильтруют где попало и когда поп... весь текст скрыт [показать]
     
  • 7.31, пох (?), 10:34, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    кстати, я тормоз - пишу про php, думаю про си впрочем, кажется, автор исходной... весь текст скрыт [показать]
     
  • 5.29, Аноним (29), 10:28, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    Например, накладные расходы, связанные с запуском внешней программы, которых мож... весь текст скрыт [показать]
     
     
  • 6.32, пох (?), 10:36, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    предусмотренно, конечно, только если тебе надо из пехепе запустить, как тут, svn... весь текст скрыт [показать]
     
     
  • 7.37, Аноним (37), 14:12, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    А почему бы и нет Если на сайт заходят в день полтора анонимуса, можно и через ... весь текст скрыт [показать]
     
  • 4.45, Аноним (45), 14:25, 31/08/2018 [^] [ответить]     [к модератору]  
  • +/
    Можно было бы заморочится в систему типов, введя безопасные и небезопасные строк... весь текст скрыт [показать]
     
  • 1.23, Аноним (23), 08:25, 30/08/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Хипсталюбители тянуть всё автоматом из *овнореп опять страдают. Ну удивительно же?
     
     
  • 2.30, Аноним (29), 10:34, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    Вы не поверите, но тянуть автоматом из овнореп - это единственный путь, общий ... весь текст скрыт [показать]
     
     
  • 3.35, Аноним (35), 12:22, 30/08/2018 [^] [ответить]    [к модератору]  
  • +/
    Окей, корректировочка: тянуть код автоматом из слабо верифицированных реп. Дальше хлебнуть смузи и ждать следующего ахтунга.
     
     
  • 4.38, Аноним (38), 16:07, 30/08/2018 [^] [ответить]     [к модератору]  
  • +/
    Что, в принципе, тоже вполне себе модель разработки, имеющая доказанную примерам... весь текст скрыт [показать]
     
  • 1.26, Аноним (26), 08:45, 30/08/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    кек, трындеть все горазды, а вы бы лучше код свой показали
     
  • 1.27, Blind Vic (ok), 09:22, 30/08/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > К сожалению, халатное отношение к безопасности присуще разработчикам многих современных репозиториев пакетов, что ставит под вопрос возможность компрометации подобных систем злоумышленниками.

    Звучит так, как будто иметь возможность компрометации это ожидаемо, да вот баг мешает этому.

     
     
  • 2.28, Cradle (?), 09:39, 30/08/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    видимо это нужно понимать как "при таком раздолбайстве со стороны разработчиков многих современных репозиториев пакетов злоумышленникам становится скучно и обидно, и они в слезах идут ломать виндовс"
     
     
  • 3.36, имя (?), 12:38, 30/08/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    а потом сраться в комментариях о гендере и прочем sjw
     

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


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