Как защитить свой терминал от вредоносных пакетов с помощью PMG

22 мая 2026
536
41
4
2 недели

Знаете это чувство легкой тревоги, когда вводите npm install или pip install для библиотеки, о которой узнали пять минут назад? Вы нажимаете Enter, и в этот момент сотни строк кода, которые никто не проверял, скачиваются и выполняются на вашей машине. А если это не просто библиотека, а тайпосквоттинг или свежескомпрометированный популярный пакет?

Недавно промелькнула новость про Mini Shai-Hulud — там за раз пострадало более 300 npm-пакетов. Или история с litellm, через которую пытались уводить учетные данные. Проблема в том, что менеджеры пакетов по умолчанию доверяют всему, что лежит в репозитории. Package Manager Guard (PMG) пытается это исправить, создавая защитный слой между интернетом и вашим компьютером.

Что это за инструмент

PMG — это небольшая утилита на Go, которая встает «прослойкой» перед привычными инструментами вроде npm, pip, poetry или bun. Она перехватывает команды установки и проверяет пакеты по нескольким критериям безопасности еще до того, как они попадут на диск и успеют запустить свои post-install скрипты.

Интересно, что проект ориентирован не только на живых разработчиков, но и на AI-агентов. Если вы пользуетесь Cursor, Claude Code или Windsurf, вы наверняка замечали, как лихо они ставят зависимости. PMG в данном случае работает как предохранитель, чтобы нейросеть случайно не «скормила» вам вредоносный код.

Три линии обороны

Разработчики из SafeDep не стали изобретать велосипед и реализовали проверку в три этапа.

Реклама

Во-первых, используется собственная база данных угроз SafeDep. Каждый пакет проверяется по черным спискам известных вредоносов. Если совпадение найдено, установка просто блокируется.

Во-вторых, есть механизм Dependency Cooldown. Это, пожалуй, самая полезная фича для защиты от атак на цепочку поставок. Вы можете настроить «период охлаждения» — например, блокировать любые версии пакетов, которые были опубликованы менее 24 или 48 часов назад. Обычно за это время сообщество успевает заметить взлом и поднять тревогу. Если вы не гонитесь за bleeding edge версиями в ту же секунду, эта настройка спасет вам немало нервных клеток.

В-третьих, предусмотрена изоляция. На macOS используется Seatbelt, на Linux — Landlock или Bubblewrap. Это позволяет запускать процесс установки в песочнице, ограничивая доступ к файловой системе и сети. Даже если вредонос проскочит первые фильтры, он окажется в запертой комнате.

Демонстрация работы PMG

Как это работает на практике

Самое приятное, что после настройки вам не нужно менять свои привычки. Вы продолжаете писать npm install express, а PMG прозрачно делает свою работу в фоне.

Для проверки можно попробовать поставить тестовый пакет, который специально помечен как вредоносный:

npm install safedep-test-pkg@0.1.3

В ответ вы получите не установленный пакет, а сообщение в терминале:

✗ Malicious package blocked
  - safedep-test-pkg@0.1.3
✗ PMG: 1 packages analyzed, 1 blocked

Проект поддерживает почти всё, чем мы пользуемся ежедневно:

  • Node.js: npm, pnpm, yarn, bun, npx.
  • Python: pip, poetry, uv.

Установка и внедрение

Инструмент ставится одной командой через скрипт или Homebrew:

brew tap safedep/tap
brew install safedep/tap/pmg

После установки нужно выполнить pmg setup install. Эта команда прописывает необходимые алиасы и настройки в ваш шелл (zsh, bash или fish). Если вы используете менеджеры версий типа mise или asdf, лучше ставить PMG через бинарный файл или brew, так как глобальные npm-пакеты могут «отваливаться» при переключении версии Node.js.

Кстати, PMG можно затащить и в CI через GitHub Actions. Это добавит еще один уровень проверки перед сборкой артефактов, что особенно актуально для проектов с большим количеством внешних зависимостей.

uses: actions/setup-node@v6
  with:
    node-version: 22
uses: safedep/pmg@v1
run: npm ci

Стоит ли пробовать

Проект пока ощущается молодым — около 350 звезд на GitHub и довольно лаконичная документация. Однако сама концепция «безопасного прокси» для пакетных менеджеров выглядит очень здравой.

Кому это точно пригодится:

  1. Тем, кто активно экспериментирует с новыми библиотеками.
  2. Командам, которые хотят обезопасить свои CI/CD конвейеры без развертывания тяжелых Enterprise-решений.
  3. Любителям AI-кодинга, чтобы контролировать действия агентов.

Из минусов: песочница (sandbox) требует дополнительной настройки и иногда может мешать специфическим скриптам установки, которым реально нужен доступ к системе. Но это ожидаемая цена за безопасность.

Попробовать PMG можно быстро, а удалить еще быстрее, если что-то пойдет не так. Но сама возможность заблокировать пакет просто потому, что он вышел 10 минут назад и еще не проверен временем — это то, чего явно не хватало в стандартном тулинге.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.