Composer блокировка файлов в директории поставщика - PullRequest
0 голосов
/ 04 мая 2020

Я только что наткнулся на инструмент https://github.com/FriendsOfPHP/security-advisories, который выглядит отличным способом для автоматического поиска уязвимостей в этой базе данных сообщества.

Он сканирует composer.lock файл для пакетов с уязвимостями. Тем не менее, это заставило меня понять, что мое понимание Composer не такое, каким оно должно быть!

У меня есть проект, в котором есть файл composer.json, который require sa один demo/package. Этот демонстрационный пакет также имеет требования, такие как demo/dep.

В результате выполнения composer install --no-dev у меня есть файл composer.lock, который включает:

  • demo/package версия 1.0
  • demo/dep версия 1.2

Пока все хорошо, и запуск symfony security:check /path/to/my/project/composer.lock дает мне зеленый свет, никаких уязвимостей.

Однако при тщательном рассмотрении файлов, которые теперь находятся в моем vendor каталоге, я вижу, что есть файл vendor/demo/package/composer.lock, который содержит ссылки на demo/dep в версии 1.1 - который имеет уязвимость безопасности против него.

Как я понимаю, у меня установлена ​​более безопасная 1.2 версия - так говорит файл composer.lock моего проекта, но почему файл composer.lock включен в пакет поставщика ?

Значит ли это, что хитрый код тоже где-то установлен? Или я могу просто проигнорировать файлы composer.lock, если над каталогом есть файл composer.lock или что-то подобное? composer show не перечисляет версии во вложенном файле блокировки. Или, может быть, я должен игнорировать файлы composer .lock, если нет ни одного брата ./vendor/ dir?

1 Ответ

2 голосов
/ 05 мая 2020

Почему бы просто не проверить ваши папки, чтобы найти уязвимую версию? Если они есть, вы должны найти папку vendor в этом пакете, где этот пакет мог бы установить вещи из своего собственного composer.lock

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

Примечание: надпись «обычно» относится к стандартной модели установки. Я видел некоторые грубые вещи, где Composer плагины устанавливают другие правила, но этого нельзя сказать о вашем проекте, не зная больше о структуре.

...