В 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)