Разработчики крупного репозитория пакетов PHP, Packagist, сообщили об исправлении серьезной уязвимости. Проблема могла использоваться для организации атак цепочку поставок, нацеленных на PHP-сообщество.
Напомню, что Packagist — это не пакетный менеджер, но хостинг PHP-пакетов. Это дефолтный хостинг Composer, и каждый месяц Composer используется для загрузки более 2 миллиардов пакетов. По сути, Packagist представляет собой один из крупнейших хостинговых сервисов в экосистеме PHP в целом.
Проблему обнаружили специалисты компании Sonar, и они сообщают, что уязвимость, получившая идентификатор CVE-2022-24828 (8,8 балла по шкале CVSS), позволяла полностью захватить контроль над Packagist. По их словам, проблема представляет собой баг внедрения команд, и тесно связана с другой похожей ошибкой в Composer (CVE-2021-29472), которая была обнаружена в апреле 2021 года и исправлена не совсем корректно.
«Злоумышленник, контролирующий репозиторий Git или Mercurial, явно указанный по URL-адресу в файле composer.json проекта, может использовать специально созданные имена веток для выполнения команд на машине, на которой выполняется обновление Composer», — гласит официальный бюллетень безопасности Packagist за апрель 2022 года.
Фактически это означает, что запросы на обновление пакета могли быть перехвачены для внедрения вредоносных зависимостей, путем выполнения произвольных команд на внутреннем сервере, где запущен официальный экземпляр Packagist.
По мнению исследователей Sonar, уязвимость могла использоваться для перехвата более чем 100 миллионов запросов для распространения вредоносных зависимостей. В итоге это могло привести к потенциальной компрометации миллионов серверов.
На сегодняшний день нет никаких доказательств того, что уязвимость уже использовалась хакерами. Исправления были развернуты в Composer версий 1.10.26, 2.2.12 и 2.3.5 после того, как эксперты Sonar сообщили об ошибке сопровождающим Packagist в апреле 2022 года.