
pmg v0.27.0
PMG защищает разработчиков и AI-агентов от вредоносных пакетов с открытым исходным кодом, используя прокси, песочницу и канал угроз SafeDep.
Package Manager Guard (PMG)
Блокируйте вредоносные npm и pip пакеты до их установки.
Эшелонированная защита для менеджеров пакетов, которыми вы уже пользуетесь.
Зачем нужен PMG?
Разработчики и ИИ-агенты для написания кода устанавливают пакеты каждый день. Каждый npm install или pip install выполняет тысячи строк кода, которые никто не проверяет.
Недавние компрометации в популярных экосистемах:
- Mini Shai-Hulud — скомпрометировано более 300 популярных пакетов
- litellm 1.82.8 — популярная библиотека ИИ-прокси скомпрометирована для кражи учётных данных
- telnyx 4.87.2 — легитимный телеком- SDK захвачен на PyPI
- pino-sdk-v2 — typosquat-пакет, замаскированный под популярный логгер pino
PMG — бесплатный, с открытым исходным кодом (Apache 2.0) и не требует учётной записи или API-ключа. Он перехватывает каждую установку пакета и проверяет её через бесплатный общедоступный API SafeDep на наличие известного вредоносного ПО до выполнения кода. Установите его один раз, и он будет защищать каждый последующий npm install, pip install и poetry add.
Как работает PMG
PMG использует подход эшелонированной защиты. Ноль конфигурации, работает в Zsh, Bash и Fish, и каждая установка проходит через включённые уровни защиты до выполнения кода, плюс журнал аудита после.
Детали уровней
- Прозрачный перехват — PMG оборачивает
npm,pipи другие менеджеры пакетов. Разработчики и ИИ-агенты используют те же команды. Никаких изменений в рабочих процессах. - Уровень 1: Threat Intelligence — PMG проверяет каждый пакет через аналитику угроз SafeDep в реальном времени перед установкой. Известные вредоносные пакеты блокируются. Без ключа, без входа в систему.
- Уровень 2: Политика (Dependency Cooldown) — PMG блокирует версии пакетов, опубликованные в пределах настраиваемого окна охлаждения, поэтому недавно скомпрометированные версии пропускаются в течение этого окна.
- Уровень 3: Песочница (по желанию) — когда песочница включена и настроена, PMG запускает установки внутри нативных песочниц ОС (macOS Seatbelt, Linux Landlock по умолчанию или запасной вариант Bubblewrap), поэтому скрипты установки имеют ограниченный доступ к системе, даже если угроза проскочит первые два уровня.
- Журнал аудита — PMG записывает каждую установку (что, когда, откуда) для проверяемого журнала аудита.
Сравнение PMG
PMG — единственный бесплатный межсетевой экран для пакетов с открытым исходным кодом, работающий на этапе установки, который охватывает и разработчиков, и ИИ-агентов, и поставляется с песочницей и охлаждением из коробки.
| Возможность | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / разрабатывается публично | ✓ | ✗ | ✓ | ✗ | ✗ |
| Без учётной записи или API-ключа | ✓ | ✓ | ✓ | ✗ | ✗ |
| Блокировка вредоносных пакетов при установке | ✓ | ✓ | ✓ | ✗ | ✗ |
| Политика охлаждения зависимостей | ✓ | ✗ | ✓ | ✗ | ✗ |
| Песочница во время выполнения | ✓ | ✗ | ✗ | ✗ | ✗ |
| Прозрачная защита ИИ-агентов для кода | ✓ | ✗ | ✗ | ✗ | ✗ |
| Локальные журналы аудита | ✓ | ✗ | ✗ | ✗ | ✗ |
| PR-ы по исправлению известных CVE | ✗ | ✗ | ✗ | ✓ | ✓ |
Быстрый старт
1. Установка
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
См. Установка для Homebrew, npm и других способов установки.
2. Настройка
Подключите PMG к вашей оболочке, чтобы он перехватывал менеджеры пакетов.
pmg setup install
# Перезапустите терминал, чтобы применить изменения
Совет: Повторно выполните
pmg setup installпосле обновления PMG, чтобы подхватить новые параметры конфигурации.Linux для всех пользователей / golden images:
sudo pmg setup install --system— см. docs/system-install.md.
Проверьте установку и убедитесь, что защита работает:
pmg setup doctor
Необязательно: PMG проверяет HTTPS-трафик с помощью CA, создаваемого на лету и внедряемого в менеджеры пакетов при каждом запуске. Чтобы сохранить единый CA между запусками и доверять ему в хранилище доверия ОС (необходимо для инструментов, игнорирующих переменные окружения CA, например Go на macOS и Windows), установите его один раз:
pmg setup cert install # область пользователя, без sudo pmg setup cert status # проверка состояния доверия и срока действияСм. Certificate Authority для областей действия, ротации и удаления.
3. Использование
Посмотрите, как PMG блокирует угрозы.
npm install --no-cache --prefer-online [email protected]
Примечание:
safedep-test-pkg— это безвредный тестовый пакет, помеченный как вредоносный в базе данных SafeDep для целей тестирования и проверки.
Продолжайте использовать менеджеры пакетов как обычно или позвольте вашему ИИ-агенту для кода запускать их. PMG находится в пути и блокирует вредоносные пакеты.
npm install express
# или
pip install requests
Поддерживаемые менеджеры пакетов
PMG поддерживает инструменты, которые вы уже используете:
| Экосистема | Инструменты | Пример команды |
|---|---|---|
| Node.js | npm | npm install <pkg> |
pnpm | pnpm add <pkg> | |
yarn | yarn add <pkg> | |
bun | bun add <pkg> | |
npx | npx <pkg> | |
pnpx | pnpx <pkg> | |
| Python | pip | pip install <pkg> |
pipx | pipx run <pkg> | |
poetry | poetry add <pkg> | |
uv | uv add <pkg> | |
uvx | uvx <pkg> |
Установка
Скрипт установки (MacOS/Linux)
Загружает последний релиз с GitHub, проверяет его SHA-256 контрольную сумму и устанавливает в $HOME/.local/bin (если он в PATH) или /usr/local/bin.
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew (MacOS/Linux)
brew tap safedep/tap
brew install safedep/tap/pmg
NPM (Кроссплатформенно)
npm install -g @safedep/pmg
Примечание: Установки через NPM могут быть хрупкими, когда Node.js управляется менеджерами версий, такими как
miseилиasdf. Глобальный путьnpmbin меняется вместе с активной версией Node, поэтому переключение версий может оставитьpmgнедоступным вPATH(или указывать на старую установку). Для таких конфигураций предпочтительнее скрипт установки или Homebrew.
Go (Сборка из исходников)
# Убедитесь, что $(go env GOPATH)/bin находится в вашем $PATH
go install github.com/safedep/pmg@latest
Загрузка бинарного файла
Загрузите последний бинарный файл для вашей платформы со страницы релизов.
Образ контейнера (GHCR)
Готовые multi-arch образы (linux/amd64, linux/arm64) публикуются в GitHub Container Registry при каждом релизе. Точка входа образа — pmg.
# Загрузите последний образ (или зафиксируйте тег версии, например :v1.2.3)
docker pull ghcr.io/safedep/pmg:latest
# Запустите любую команду pmg
docker run --rm ghcr.io/safedep/pmg:latest version
GitHub Actions
Защитите CI-рабочие процессы одним шагом. PMG анализирует каждый npm install,
pip install и т.д. в задании.
- uses: safedep/pmg@v1
with:
server-mode: true
# перехватывается автоматически через HTTP_PROXY
- run: npm ci
- name: Enforce PMG policy
if: always()
run: pmg proxy stop --fail-on-violation # останавливает демон, завершает задание с ошибкой при блокировке
По умолчанию вы получаете блокировку вредоносного ПО и охлаждение зависимостей. Изоляция в песочнице
включается по желанию через входной параметр sandbox. Настройте поведение через входные параметры (paranoid,
sandbox, cooldown-days, ...) или укажите
config-file на YAML-файл в репозитории. См.
docs/github-action.md для полной справки.
Удаление
Удалите интеграцию с оболочкой:
pmg setup remove
Чтобы также удалить файл конфигурации PMG:
pmg setup remove --config-file
Затем удалите сам PMG:
# Homebrew
brew uninstall safedep/tap/pmg
# NPM
npm uninstall -g @safedep/pmg
Доверие и безопасность
Сборки PMG воспроизводимы и подписаны.
- Аттестации: Аттестации GitHub и npm гарантируют целостность артефактов.
- Проверка: Вы можете криптографически доказать, что бинарный файл соответствует исходному коду.
- См. Trusting PMG для шагов проверки.
Руководство пользователя
- Configuration
- Trusted Packages Configuration
- Dependency Cooldown
- Caching
- Proxy Mode Architecture
- Persistent Proxy Server
- Certificate Authority
- Sandboxing
Поддержка
Если PMG спас вас от плохого пакета, поставьте звёздочку этому репозиторию. Это поможет другим найти его.
Участие в разработке
Приветствуется участие в разработке. См. CONTRIBUTING.md для инструкций по сборке и тестированию.
Спасибо всем участникам ❤️
Телеметрия
PMG собирает анонимные данные об использовании. Чтобы отключить, либо:
- Установите
disable_telemetry: trueв файле конфигурации PMG, либо - Экспортируйте
PMG_DISABLE_TELEMETRY=true.