Каждый npm install — русская рулетка. Сотни библиотек от незнакомцев летят в проект, и любая может быть вредоносной

Подробности свежего руководства ENISA: как защититься от кода, который никто не проверял.


h3nrpkzdiqze00zss8z3z65xffws0nny.jpg

Один пакет в npm , pip или Maven редко остается одним пакетом. За привычной командой установки обычно тянется длинная цепочка сторонних библиотек, которые автоматически попадают в проект вместе с прямыми и транзитивными зависимостями. В марте 2026 года ENISA выпустило техническое руководство по безопасному использованию менеджеров пакетов и подробно разобрало, почему такая практика расширяет поверхность атаки почти незаметно для самих команд разработки.

Проблема давно вышла за рамки удобства и скорости. Менеджеры пакетов действительно позволяют быстро добавить готовую функцию в приложение, не писать все с нуля и не собирать компоненты вручную. Но вместе с экономией времени разработчик получает в среду исполнения и сборки чужой код, который команда не писала, часто не читала и почти никогда не проверяла целиком. Причем объем такого кода может оказаться намного больше, чем кажется в момент установки.

Каждая новая библиотека встраивается в граф зависимостей проекта. После этого в окружении появляются не только прямые зависимости, которые разработчик выбрал сознательно, но и дополнительные модули, подтянутые автоматически. Часть таких компонентов может вообще не использоваться при работе программы, однако даже неиспользуемый модуль сохраняет уязвимости, историю сопровождения и риски, связанные с доверием к его автору и репозиторию.

ENISA рассматривает два основных класса угроз внутри таких экосистем. Первый связан с самими пакетами: ошибки в коде, слабая архитектура, небезопасные настройки, заброшенные библиотеки без сопровождения. Второй класс касается атак на цепочку поставок программного обеспечения, когда злоумышленник не ищет баг в готовом приложении, а пытается внедрить вредоносный код раньше, на этапе публикации, обновления или разрешения зависимостей.