В Composer обнаружена уязвимость, которая компрометирует репозиторий Packagist PHP.

Несколько дней назад появилась новость об обнаружении критической уязвимости en менеджер зависимостей Композитор (CVE-2021-29472), который позволяет запускать произвольные команды в системе при обработке пакета со специально сформированным значением URL, определяющим направление загрузки исходного кода.

Проблема проявляется в компонентах GitDriver, SvnDriver и HgDriver. используется с системами управления версиями Git, Subversion и Mercurial. Уязвимость исправлена ​​в версиях Composer 1.10.22 и 2.0.13.

В частности, особенно пострадал репозиторий пакетов Packagist по умолчанию Composer, который содержит 306.000 1.400 пакетов для разработчиков PHP и предлагает более XNUMX миллиарда загрузок в месяц.

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

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

Опасность для конечных пользователей ограничена в связи с тем, что содержание composer.json обычно определяется пользователем и ссылки на источник передаются при доступе сторонних репозиториев, которые обычно являются надежными. Основной удар пришелся на репозиторий Packagist.org и сервис Private Packagist, которые вызывают Composer с передачей данных, полученных от пользователей. Злоумышленники могут запустить свой код на серверах Packagist, отбросив специально созданный пакет.

Команда Packagist устранила уязвимость в течение 12 часов после уведомления. уязвимости. 22 апреля исследователи в частном порядке уведомили разработчиков Packagist, и проблема была устранена в тот же день. Публичное обновление Composer с исправлением уязвимости было выпущено 27 апреля, а подробности были раскрыты 28 апреля. Проверка журналов на серверах Packagist не выявила подозрительной активности, связанной с уязвимостью.

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

Проблема вызвана ошибкой в ​​коде проверки URL. в корневом файле composer.json и в исходных ссылках для скачивания. Ошибка присутствует в коде с ноября 2011 года. Packagist использует специальные уровни для управления загрузкой кода без привязки к определенной системе управления версиями, которая выполняется путем вызова fromShellCommandline с аргументами командной строки.

Суть проблемы заключается в том, что метод ProcessExecutor позволяет указать любые дополнительные параметры вызова в URL-адресе. Такой выход отсутствовал в драйверах GitDriver.php, SvnDriver.php и HgDriver.php. Атаке GitDriver.php препятствовал тот факт, что команда «git ls-remote» не поддерживала указание дополнительных аргументов после пути.

Атака на HgDriver.php была возможна путем передачи параметра «–config» утилите «hq», которая позволяет организовать выполнение любой команды, манипулируя конфигурацией «alias.identify».

Отправив тестовый пакет с аналогичным URL-адресом в Packagist, исследователи убедились, что после его публикации их сервер получил HTTP-запрос от одного из серверов Packagist на AWS, который содержал список файлов в текущем каталоге.

Следует отметить, что разработчики не выявили никаких признаков предшествующей эксплуатации этой уязвимости в общедоступном экземпляре упаковщика.

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


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.