Как защитить свой терминал от вредоносных пакетов с помощью PMG
Знаете это чувство легкой тревоги, когда вводите 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. Это позволяет запускать процесс установки в песочнице, ограничивая доступ к файловой системе и сети. Даже если вредонос проскочит первые фильтры, он окажется в запертой комнате.

Как это работает на практике
Самое приятное, что после настройки вам не нужно менять свои привычки. Вы продолжаете писать 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 и довольно лаконичная документация. Однако сама концепция «безопасного прокси» для пакетных менеджеров выглядит очень здравой.
Кому это точно пригодится:
- Тем, кто активно экспериментирует с новыми библиотеками.
- Командам, которые хотят обезопасить свои CI/CD конвейеры без развертывания тяжелых Enterprise-решений.
- Любителям AI-кодинга, чтобы контролировать действия агентов.
Из минусов: песочница (sandbox) требует дополнительной настройки и иногда может мешать специфическим скриптам установки, которым реально нужен доступ к системе. Но это ожидаемая цена за безопасность.
Попробовать PMG можно быстро, а удалить еще быстрее, если что-то пойдет не так. Но сама возможность заблокировать пакет просто потому, что он вышел 10 минут назад и еще не проверен временем — это то, чего явно не хватало в стандартном тулинге.
