
pmg v0.27.0
PMG protege a desarrolladores y agentes de IA de paquetes de código abierto maliciosos utilizando proxy, sandbox y el feed de inteligencia de amenazas de SafeDep.
Package Manager Guard (PMG)
Bloquea paquetes npm y pip maliciosos antes de que se instalen.
Defensa en profundidad para los gestores de paquetes que ya usas.
¿Por qué PMG?
Los desarrolladores y los agentes de codificación con IA instalan paquetes todos los días. Cada npm install o pip install ejecuta miles de líneas de código que nadie revisa.
Compromisos recientes en ecosistemas populares:
- Mini Shai-Hulud - Más de 300 paquetes populares comprometidos
- litellm 1.82.8 - Una popular librería proxy de IA comprometida para exfiltrar credenciales
- telnyx 4.87.2 - Un SDK de telecomunicaciones legítimo secuestrado en PyPI
- pino-sdk-v2 - Un paquete typosquat disfrazado como el popular logger pino
PMG es gratuito, de código abierto (Apache 2.0) y no requiere cuenta ni clave API. Intercepta cada instalación de paquetes y la verifica contra la API comunitaria gratuita de SafeDep para detectar malware conocido antes de que el código se ejecute. Instálalo una vez y cubrirá cada npm install, pip install y poetry add posterior.
Cómo Funciona PMG
PMG adopta un enfoque de defensa en profundidad. Configuración cero, funciona en Zsh, Bash y Fish, y cada instalación pasa por las capas de protección habilitadas antes de que el código se ejecute, más un registro de auditoría después.
Detalles de las capas
- Intercepción Transparente - PMG envuelve
npm,pipy otros gestores de paquetes. Los desarrolladores y los agentes de IA usan los mismos comandos. Sin cambios en el flujo de trabajo. - Capa 1: Inteligencia de Amenazas - PMG verifica cada paquete contra la inteligencia de amenazas en tiempo real de SafeDep antes de la instalación. Los paquetes conocidos como maliciosos se bloquean. Sin clave, sin inicio de sesión requerido.
- Capa 2: Política (Enfriamiento de Dependencias) - PMG bloquea versiones de paquetes publicadas dentro de una ventana de enfriamiento configurable, de modo que las versiones recientemente comprometidas se omiten durante la ventana.
- Capa 3: Sandbox Opcional - Cuando el sandboxing está habilitado y configurado, PMG ejecuta las instalaciones dentro de sandboxes nativos del sistema operativo (Seatbelt en macOS, Landlock en Linux por defecto, o Bubblewrap como respaldo) para que los scripts de instalación tengan acceso restringido al sistema incluso si una amenaza pasa las dos primeras capas.
- Registro de Auditoría - PMG registra cada instalación (qué, cuándo, desde dónde) para un rastro de auditoría verificable.
Cómo se Compara PMG
PMG es el único firewall de paquetes en tiempo de instalación gratuito y de código abierto que cubre tanto a desarrolladores como a agentes de IA y que incluye sandboxing y enfriamiento de serie.
| Capacidad | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / construido en público | ✓ | ✗ | ✓ | ✗ | ✗ |
| Sin cuenta ni clave API | ✓ | ✓ | ✓ | ✗ | ✗ |
| Bloqueo de paquetes maliciosos en instalación | ✓ | ✓ | ✓ | ✗ | ✗ |
| Política de enfriamiento de dependencias | ✓ | ✗ | ✓ | ✗ | ✗ |
| Sandboxing en tiempo de ejecución | ✓ | ✗ | ✗ | ✗ | ✗ |
| Protege agentes de codificación con IA de forma transparente | ✓ | ✗ | ✗ | ✗ | ✗ |
| Registros de auditoría locales | ✓ | ✗ | ✗ | ✗ | ✗ |
| PRs de remediación de CVE conocidos | ✗ | ✗ | ✗ | ✓ | ✓ |
Inicio Rápido
1. Instalación
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Consulta Instalación para Homebrew, npm y otros métodos de instalación.
2. Configuración
Conecta PMG a tu shell para que intercepte los gestores de paquetes.
pmg setup install
# Reinicia tu terminal para aplicar los cambios
Consejo: Vuelve a ejecutar
pmg setup installdespués de actualizar PMG para recoger nuevas opciones de configuración.Linux para todos los usuarios / imágenes doradas:
sudo pmg setup install --system— consulta docs/system-install.md.
Valida tu instalación y verifica que la protección funciona:
pmg setup doctor
Opcional: PMG inspecciona el tráfico HTTPS con una CA generada al vuelo que inyecta en los gestores de paquetes en cada ejecución. Para persistir una única CA entre ejecuciones y confiarla en el almacén de confianza de tu sistema operativo (necesario para herramientas que ignoran las variables de entorno de CA, como Go en macOS y Windows), instálala una vez:
pmg setup cert install # ámbito de usuario, sin sudo pmg setup cert status # comprueba el estado de confianza y la caducidadConsulta Autoridad de Certificación para ámbitos, rotación y eliminación.
3. Uso
Observa a PMG bloqueando amenazas.
npm install --no-cache --prefer-online [email protected]
Nota:
safedep-test-pkges un paquete de prueba benigno marcado como malicioso en la base de datos de SafeDep con fines de prueba y verificación.
Continúa usando tus gestores de paquetes como siempre, o deja que tu agente de codificación con IA los ejecute. PMG se sitúa en la ruta, bloqueando paquetes maliciosos.
npm install express
# o
pip install requests
Gestores de Paquetes Soportados
PMG soporta las herramientas que ya usas:
| Ecosistema | Herramientas | Ejemplo de Comando |
|---|---|---|
| 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> |
Instalación
Script de Instalación (MacOS/Linux)
Descarga la última versión desde GitHub, verifica su checksum SHA-256 e instala en $HOME/.local/bin (si está en PATH) o /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 (Multiplataforma)
npm install -g @safedep/pmg
Nota: Las instalaciones basadas en NPM pueden ser frágiles cuando Node.js está gestionado por gestores de versiones como
miseoasdf. La ruta global del binarionpmcambia con la versión activa de Node, por lo que cambiar de versión puede dejarpmgno disponible enPATH(o apuntando a una instalación antigua). Para estas configuraciones, prefiere el script de instalación o Homebrew.
Go (Compilar desde el Código Fuente)
# Asegúrate de que $(go env GOPATH)/bin esté en tu $PATH
go install github.com/safedep/pmg@latest
Descarga de Binarios
Descarga el último binario para tu plataforma desde la Página de Versiones.
Imagen de Contenedor (GHCR)
Imágenes multi-arquitectura precompiladas (linux/amd64, linux/arm64) se publican en el Registro de Contenedores de GitHub en cada versión. El entrypoint de la imagen es pmg.
# Descarga la última imagen (o fija una etiqueta de versión, p. ej. :v1.2.3)
docker pull ghcr.io/safedep/pmg:latest
# Ejecuta cualquier comando de pmg
docker run --rm ghcr.io/safedep/pmg:latest version
GitHub Actions
Protege los flujos de trabajo de CI con un solo paso. PMG analiza cada npm install,
pip install, etc. en el trabajo.
- uses: safedep/pmg@v1
with:
server-mode: true
# interceptado vía HTTP_PROXY automáticamente
- run: npm ci
- name: Aplicar política de PMG
if: always()
run: pmg proxy stop --fail-on-violation # detiene el daemon, falla el trabajo en un bloqueo
Por defecto obtienes bloqueo de malware y enfriamiento de dependencias. El aislamiento con sandbox
es opcional mediante la entrada sandbox. Ajusta el comportamiento mediante entradas (paranoid,
sandbox, cooldown-days, ...) o apunta
config-file a un YAML en el repositorio. Consulta
docs/github-action.md para la referencia completa.
Desinstalación
Elimina la integración con el shell:
pmg setup remove
Para eliminar también el archivo de configuración de PMG:
pmg setup remove --config-file
Luego desinstala PMG en sí:
# Homebrew
brew uninstall safedep/tap/pmg
# NPM
npm uninstall -g @safedep/pmg
Confianza y Seguridad
Las compilaciones de PMG son reproducibles y están firmadas.
- Atestaciones: Las atestaciones de GitHub y npm garantizan la integridad de los artefactos.
- Verificación: Puedes demostrar criptográficamente que el binario coincide con el código fuente.
- Consulta Confiar en PMG para los pasos de verificación.
Guía de Usuario
- Configuración
- Configuración de Paquetes de Confianza
- Enfriamiento de Dependencias
- Caché
- Arquitectura del Modo Proxy
- Servidor Proxy Persistente
- Autoridad de Certificación
- Sandboxing
Soporte
Si PMG te salvó de un paquete malo, dale una estrella a este repositorio. Ayuda a otros a encontrarlo.
Contribuciones
Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para instrucciones de compilación y pruebas.
Gracias a todos los contribuyentes ❤️
Telemetría
PMG recopila datos de uso anónimos. Para deshabilitarlo, o bien:
- Establece
disable_telemetry: trueen tu archivo de configuración de PMG, o - Exporta
PMG_DISABLE_TELEMETRY=true.