Безопасная установка пакетов для 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

Если уявзвимости найдены в текущей версии пакетов, то надо их обновить (перед обновлением всё равно сделать аудит по инструкции выше).

Если уявзвимости найдены в новых версиях пакетов (перед фактической установкой), значит обновляться нельзя! Ждём когда исправят.

Похожие записи