Я только что наткнулся на инструмент 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?