Менеджер зависимостей, который слишком много себе позволяет. Как Composer едва не открыл двери хакерам

leer en español

Менеджер зависимостей, который слишком много себе позволяет. Как Composer едва не открыл двери хакерам

Удар пришёл с той стороны, которую всегда считали абсолютно защищённой.

image

Разработчики Composer выпустили обновление, которое устраняет сразу две уязвимости, способные привести к выполнению произвольных команд на машине пользователя. Проблема примечательна тем, что риск затрагивал не только тех, кто работает с Perforce, но и обычные установки Composer, где Perforce вообще не использовался.

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

В версиях Composer 2.9.6 и 2.2.27 LTS исправлены ошибки с идентификаторами CVE-2026-40261 и CVE-2026-40176. О выпуске сообщил Нильс Адерманн. По данным разработчиков, признаков эксплуатации обеих уязвимостей до публикации уведомления не обнаружили.

Обе ошибки находились в драйвере Perforce VCS и были связаны с некорректной обработкой значений при сборке shell-команд. CVE-2026-40176 затрагивала метод generateP4Command(). Через подставные параметры подключения, такие как порт, пользователь или клиент, злоумышленник мог встроить собственные команды в вредоносный composer.json. Уязвимость срабатывала даже на системах без установленного Perforce. Об ошибке сообщил saku0512.

Вторая проблема, CVE-2026-40261, касалась метода syncCodeBase(). Вредоносный код можно было внедрить через специально подготовленную ссылку на исходники или source reference, содержащие служебные символы оболочки. В этом случае атака становилась возможной уже через метаданные пакета, которые раздаёт репозиторий Composer. Для эксплуатации достаточно было установить или обновить зависимость из недоверенного источника в режиме prefer-source, который по умолчанию применяется для dev-версий. Об уязвимости сообщил Koda Reef.

Разработчики уточнили, что первая ошибка не позволяла атаковать через composer.json зависимостей и требовала запуска команд в каталоге с недоверенным корневым composer.json или через конфигурационный файл Composer. Вторая уязвимость выглядела опаснее, поскольку могла сработать через вредоносный или взломанный репозиторий пакетов.

Проверка Packagist.org и Private Packagist не выявила пакетов с признаками попыток эксплуатации. При этом публикацию метаданных Perforce в Packagist.org отключили 10 апреля 2026 года. В Private Packagist драйвер Perforce также отключён с той же даты. Клиентам Private Packagist Self-Hosted пообещали отдельный релиз с инструкцией для проверки локальных метаданных.

Разработчики советуют как можно скорее обновить Composer. В качестве временной меры для защиты от CVE-2026-40261 можно отказаться от установки зависимостей из исходников и использовать только доверенные репозитории. Для снижения риска CVE-2026-40176 команда рекомендует внимательно проверять composer.json перед запуском команд Composer в чужих проектах.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS