The OpenNET Project / Index page

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



"Уязвимость, позволяющая удалённо выполнить код на сервере PH..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от opennews (?), 29-Авг-18, 22:44 
В Packagist (https://packagist.org), крупнейшем репозитории пакетов на языке PHP, ежемесячно обслуживающем более 400 млн загрузок и по умолчанию применяемом в пакетной менеджере Composer, выявлена (https://justi.cz/security/2018/08/28/packagist-org-rce.html) критическая уязвимость, позволяющая выполнить код на сервере проекта через передачу специально оформленных значений в форму добавления нового пакета.

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


К сожалению халатное отношение к безопасности присуще разработчикам многих современных репозиториев пакетов, что ставит под вопрос сохранение целостности пакетов в подобных системах.  Например,  выявивший проблему исследователь безопасности в прошлом году обнаружил похожую проблему в RubyGems (https://www.opennet.me/opennews/art.shtml?num=47370), позволяющую  выполнить код на сервере RubyGems.org при загрузке специально оформленного gem-пакета, а также продемонстрировал возможность (https://www.opennet.me/opennews/art.shtml?num=47574) запуска своего кода на некоторых зеркалах NPM и нашёл способ (https://python-security.readthedocs.io/pypi-vuln/index-2017-...) удаления произвольных файлов из репозитория PyPI. Исследователь также выявил уязвимость (https://justi.cz/security/2018/05/23/cdn-tar-oops.html) в применяемой в NPM сети доставки контента, которая позволяла осуществить подстановку любого JavaScript-кода.

URL: https://justi.cz/security/2018/08/28/packagist-org-rce.html
Новость: https://www.opennet.me/opennews/art.shtml?num=49198

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +3 +/
Сообщение от Китайский кулхацкер (?), 29-Авг-18, 22:44 
Загадка: что общего у дешёвого китайского роутера и крупнейшего репозитория пакетов на языке PHP?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +14 +/
Сообщение от Аноним (2), 29-Авг-18, 23:07 
Голая жопа торчащая в интернет
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +3 +/
Сообщение от anonymous (??), 30-Авг-18, 00:26 
Ну вот, мироздание опять пришло в равновесие. А то непорядок, сайт на PHP был, а инъекции нет.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +2 +/
Сообщение от anonymous (??), 30-Авг-18, 00:29 
> Разработчики Packagist уже исправили проблему, добавив экранирование при помощи вызова ProcessExecutor::escape().

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

10. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +2 +/
Сообщение от Аноним (10), 30-Авг-18, 04:25 
То есть типичных рубистов и питонщиков мы игнорим, а пыхари-то козлы налажали..
Про js даже говорить нет смысла, но козлы все равно пыхари..
Не твоя вот и бесишся)
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  –1 +/
Сообщение от Аноним (11), 30-Авг-18, 06:09 
Как скажешь. Веб дерьмо и дерьмом останется. Все кто пишут для веба нелюди. Так лучше?
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

43. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Leah (?), 31-Авг-18, 00:24 
Согласно концепции web2.0 ты сейчас тоже пишешь "для веба". Нежнее надо быть, Анон!
Хотя комментарии содержащие слово "все" можно удалять неглядя, ибо 98% их есть чушь.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

15. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от anonymous (??), 30-Авг-18, 07:16 
> То есть типичных рубистов и питонщиков мы игнорим, а пыхари-то козлы налажали..

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

20. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 08:20 
да-да, фильтровать untrusted data не надо, за вас позаботится массив аргументов.

(потом они удивляются, что ж это тот же hg такой "незащищенный", ну надо же - мы передали в параметре кучу мусора, а он, гад такой, его взял и проинтерпретировал - а то и дальше передал, опять же в шелл. А он ни разу и не рассчитывал на подобное.)

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

24. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от anonymous (??), 30-Авг-18, 08:32 
> да-да, фильтровать untrusted data не надо, за вас позаботится массив аргументов.

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

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

7. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +3 +/
Сообщение от Аноним (7), 30-Авг-18, 01:51 
> Разработчики Packagist уже исправили проблему, добавив экранирование

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Отражение луны (ok), 30-Авг-18, 02:11 
* в самом использовании php
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

12. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +2 +/
Сообщение от istepan (ok), 30-Авг-18, 06:24 
А что с PHP не так?
Мне правда интересно.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

13. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 07:02 
мне не менее интересно, что не так с system(), если, конечно, не тянуть в параметры любой мусор, полученный из веба.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  –3 +/
Сообщение от anonymous (??), 30-Авг-18, 07:13 
> мне не менее интересно, что не так с system()

Вот ты лалка, а таким спецом выставлялся, прям гуру админства и проектирования сложных надежных систем. Для безопасного вызова внешних бинарников есть семейство функций exec*, которые позволяют не заботится об экранировании вообще и решить проблему принципиально.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Агин (?), 30-Авг-18, 07:26 
Да тут 99% такие и 99% не знают, как GNU расшифровывается.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

39. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +1 +/
Сообщение от Тот_Самый_Анонимус (?), 30-Авг-18, 18:19 
Зато вы, как узнали, сразу илитой себя ощутили, да?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

44. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Leah (?), 31-Авг-18, 00:31 
> как GNU расшифровывается.

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

21. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 08:24 
> Для безопасного вызова внешних бинарников есть семейство функций exec*, которые позволяют не
> заботится об экранировании вообще и решить проблему принципиально

обалдеть.

Нет, дружище, это не решение проблемы. Это признание твоего неумения программировать, и перекладывание ее решения на других. Причем оно закрывает один узкий сегмент этой уязвимости, оставляя все остальные нараспашку, да еще и при ложной уверенности что ты сделал все правильно и можно уже не проверять данные из внешних источников. Молодец, так держать.

И нет, надо не экранировать, а фильтровать.

P.S. до кучи, еще один такой же звоночек - использование sn/strn вместо s/str - в надежде что уж тут-то буфер точно не переполнится.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

25. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от anonymous (??), 30-Авг-18, 08:38 
> Это признание твоего неумения программировать, и перекладывание ее решения на других.

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

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

33. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 10:39 
в смысле? У них ее отродясь как раз и не было - фильтруют где попало и когда попало - с весьма предсказуемым результатом.

Причем в основных частях все сделано уже почти правильно (за миллион итераций с remote exec каждый раз), но, поскольку это каждый раз делалось для конкретного случая, а не общий интерфейс предусмотрен - оно каждый раз оказывается забыто в очередном новом месте ;-)
Не говоря уже про авторов плагинов, которые велосипед изобретают каждый раз заново. Потому что опять же нет готового api для них.


Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

31. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 10:34 
кстати, я тормоз - пишу про php, думаю про си.
(впрочем, кажется, автор исходной фигни вообще не в теме)

php'шный exec() ни разу не обертка вокруг системного, он не имеет отдельного массива аргументов, и от system отличается только тем, что system() возвращает stdout обратно в вызывающий php, если ты собираешься его разглядывать или юзеру вывести прямо в браузер. Exec аккуратно складывает его в массив или просто выбрасывает, если не подставить.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

29. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (29), 30-Авг-18, 10:28 
Например, накладные расходы, связанные с запуском внешней программы, которых можно было бы избежать, если для тех же целей подвязать сишную либу (которая, собственно говоря, и выполняет работу) и дёргать её внутри интерпретатора.
Если честно, я хз, предусмотрено ли в php такое.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

32. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от пох (?), 30-Авг-18, 10:36 
> Если честно, я хз, предусмотрено ли в php такое.

предусмотренно, конечно, только если тебе надо из пехепе запустить, как тут, svn или hg - ты будешь писать враппер для svnlib, а для hg, который на пихоне - изобретешь его с нуля заново? ;-)

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

37. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (37), 30-Авг-18, 14:12 
А почему бы и нет? Если на сайт заходят в день полтора анонимуса, можно и через system вызывать, а если нагрузка высокая, то на каждый запрос запускать процесс - это уже непозволительное расточительство, тут уже стОит озаботиться каким-то более эффективным способом.
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

45. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (45), 31-Авг-18, 14:25 
Можно было бы заморочится в систему типов, введя безопасные и небезопасные строки. Вот константа - безопасна, так как не подвержена инъекции. А вот $_GET опасен. Складываем безопасную с опасной - получаем опасную. При таком подходе инхекций не было бы, так как у говнокодеров сайт просто падал бы с ошибкой.

Впрочем в пыхе и более простые вещи поломаны, о чём можно говорить?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

23. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  –1 +/
Сообщение от Аноним (23), 30-Авг-18, 08:25 
Хипсталюбители тянуть всё автоматом из *овнореп опять страдают. Ну удивительно же?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

30. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (29), 30-Авг-18, 10:34 
Вы не поверите, но "тянуть автоматом из*овнореп" - это единственный путь, общий для ПО на всех языках. Если у нужной вам программы прописаны зависимости "либа N из репы X" - вытянете, никуда не денетесь.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

35. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (35), 30-Авг-18, 12:22 
Окей, корректировочка: тянуть код автоматом из слабо верифицированных реп. Дальше хлебнуть смузи и ждать следующего ахтунга.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

38. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Аноним (38), 30-Авг-18, 16:07 
Что, в принципе, тоже вполне себе модель разработки, имеющая доказанную примерами экономическую эффективность. Если не впадать в крайности, то по ней большая часть софта и пишется. Ну по крайней мере, из того, что где-то запущен и генерирует денежную выгоду, а не существует в умах идеалистов, не продвинувшихся дальше филигранного оттачивания идей в своём воображении.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

26. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +1 +/
Сообщение от Аноним (26), 30-Авг-18, 08:45 
кек, трындеть все горазды, а вы бы лучше код свой показали
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +/
Сообщение от Blind Vic (ok), 30-Авг-18, 09:22 
> К сожалению, халатное отношение к безопасности присуще разработчикам многих современных репозиториев пакетов, что ставит под вопрос возможность компрометации подобных систем злоумышленниками.

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

28. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  +3 +/
Сообщение от Cradle (?), 30-Авг-18, 09:39 
видимо это нужно понимать как "при таком раздолбайстве со стороны разработчиков многих современных репозиториев пакетов злоумышленникам становится скучно и обидно, и они в слезах идут ломать виндовс"
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

36. "Уязвимость, позволяющая удалённо выполнить код на сервере PH..."  –1 +/
Сообщение от имя (?), 30-Авг-18, 12:38 
а потом сраться в комментариях о гендере и прочем sjw
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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