
pmg v0.26.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 — пакет-тайпсквот, маскирующийся под популярный логгер pino
PMG — это бесплатный, открытый (Apache 2.0) инструмент, не требующий регистрации или API-ключа. Он перехватывает каждую установку пакета и проверяет его через бесплатное сообщественное API SafeDep на наличие известных вредоносных программ до выполнения кода. Установите один раз, и он будет действовать для всех последующих npm install, pip install и poetry add.
Как работает PMG
PMG использует подход эшелонированной защиты. Нулевая конфигурация, работает в Zsh, Bash и Fish. Каждая установка проходит через включенные уровни защиты до выполнения кода, плюс остаётся журнал аудита.
Описание уровней
- Прозрачный перехват — PMG оборачивает
npm,pipи другие менеджеры пакетов. Разработчики и ИИ-агенты используют те же команды. Изменений в workflow нет. - Уровень 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 |
|---|---|---|---|---|---|
| Открытый исходный код / публичная разработка | ✓ | ✗ | ✓ | ✗ | ✗ |
| Без регистрации и 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)
Готовые мультиархитектурные образы (linux/amd64, linux/arm64) публикуются в GitHub Container Registry при каждом релизе. Точка входа образа — pmg.
# Pull последнего образа (или укажите тег версии, например :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: Применить политику PMG
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 гарантируют целостность артефактов.
- Проверка: Вы можете криптографически доказать, что бинарный файл соответствует исходному коду.
- См. Доверие к PMG для шагов проверки.
Руководство пользователя
- Конфигурация
- Настройка доверенных пакетов
- Охлаждение зависимостей
- Кэширование
- Архитектура прокси-режима
- Постоянный прокси-сервер
- Центр сертификации
- Песочница
Поддержка
Если PMG спас вас от плохого пакета, поставьте звезду этому репозиторию. Это помогает другим найти его.
Звёзды по истории
Участие
Приветствуются вклады. См. CONTRIBUTING.md для инструкций по сборке и тестированию.
Спасибо всем участникам ❤️
Телеметрия
PMG собирает анонимные данные об использовании. Чтобы отключить:
- Установите
disable_telemetry: trueв конфигурационном файле PMG, или - Экспортируйте
PMG_DISABLE_TELEMETRY=true.