Безопасная установка пакетов для PHP
Продолжаем тему безопасности, потому что атаки на цепочки поставок стали происходить всё чаще.
Во-первых надо делать аудит установленых пакетов:
composer audit
Эта команда анализирует установленные в проекте пакеты на наличие известных уязвимостей.
Во-вторых теперь нельзя просто так взять и установить пакет. Или обновить существующие.
Перед установкой или обновлением надо делать такой же аудит того, что будет установлено.
Потому что во время установки или обновления пакетов может выполниться вредоносный код.
Как сделать аудит версий пакетов, которые еще не установлены? Очень просто:
composer update --no-install composer audit --locked composer install composer audit
Первая команда обновляет файл composer.lock, но сами пакеты НЕ скачивает. То есть в папке vendor остаются текущие версии пакетов.
Вторая команда запускает аудит пакетов на основе composer.lock, который обновился после первого шага.
На этом этапе, если мы видим «No security vulnerability advisories found.» то есть уязвимостей нет (не будет).
Значит можно выполнять третю команду, которая уже скачает и установит новые версии в vendor на основе версий из composer.lock.
И четвертая команда, на всякий случай, еще раз проверяет новые версии пакетов после финальной установки.
Таким обрзом мы обновили версии БЕЗ фактической установки пакетов, сделали их аудит, потом установили и еще раз аудит.
Как установить новый пакет по такой же схеме? Так же, только вместо update будет composer required:
composer require foo/bar --no-install composer audit --locked composer install composer audit
Если уявзвимости найдены в текущей версии пакетов, то надо их обновить (перед обновлением всё равно сделать аудит по инструкции выше).
Если уявзвимости найдены в новых версиях пакетов (перед фактической установкой), значит обновляться нельзя! Ждём когда исправят.