
pmg v0.26.0
PMG protège les développeurs et les agents IA des paquets open source malveillants en utilisant un proxy, un bac à sable et le flux de renseignements sur les menaces de SafeDep.
Package Manager Guard (PMG)
Bloquez les paquets npm et pip malveillants avant leur installation.
Défense en profondeur pour les gestionnaires de paquets que vous utilisez déjà.
Pourquoi PMG ?
Les développeurs et les agents de codage IA installent des paquets chaque jour. Chaque npm install ou pip install exécute des milliers de lignes de code que personne ne vérifie.
Compromissions récentes dans des écosystèmes populaires :
- Mini Shai-Hulud - 300+ paquets populaires compromis
- litellm 1.82.8 - une bibliothèque proxy IA populaire compromise pour exfiltrer des identifiants
- telnyx 4.87.2 - un SDK télécom légitime détourné sur PyPI
- pino-sdk-v2 - un paquet typosquat déguisé en logger pino populaire
PMG est gratuit, open source (Apache 2.0) et ne nécessite ni compte ni clé API. Il intercepte chaque installation de paquet et la vérifie via l'API communautaire gratuite de SafeDep pour détecter les logiciels malveillants connus avant l'exécution du code. Installez-le une fois, et il couvre chaque npm install, pip install et poetry add par la suite.
Comment fonctionne PMG
PMG adopte une approche de défense en profondeur. Zéro configuration, fonctionne avec Zsh, Bash et Fish, et chaque installation passe par les couches de protection activées avant l'exécution du code, plus une piste d'audit après.
Détails des couches
- Interception transparente - PMG encapsule
npm,pipet d'autres gestionnaires de paquets. Les développeurs et les agents IA utilisent les mêmes commandes. Aucun changement de flux de travail. - Couche 1 : Renseignement sur les menaces - PMG vérifie chaque paquet auprès du renseignement en temps réel sur les menaces de SafeDep avant l'installation. Les paquets connus comme malveillants sont bloqués. Aucune clé, aucune connexion requise.
- Couche 2 : Politique (Période de refroidissement des dépendances) - PMG bloque les versions de paquets publiées dans une fenêtre de refroidissement configurable, de sorte que les versions récemment compromises sont ignorées pendant cette fenêtre.
- Couche 3 : Bac à sable optionnel - Lorsque le bac à sable est activé et configuré, PMG exécute les installations dans des bacs à sable natifs du système d'exploitation (macOS Seatbelt, Linux Landlock par défaut, ou fallback Bubblewrap) afin que les scripts d'installation aient un accès restreint au système même si une menace contourne les deux premières couches.
- Journalisation d'audit - PMG enregistre chaque installation (quoi, quand, d'où) pour une piste d'audit vérifiable.
Comparaison de PMG
PMG est le seul pare-feu de paquets gratuit, open source, au moment de l'installation, qui couvre à la fois les développeurs et les agents IA et qui est livré avec le bac à sable et la période de refroidissement intégrés.
| Capacité | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / construit en public | ✓ | ✗ | ✓ | ✗ | ✗ |
| Aucun compte ni clé API | ✓ | ✓ | ✓ | ✗ | ✗ |
| Blocage de paquets malveillants à l'installation | ✓ | ✓ | ✓ | ✗ | ✗ |
| Politique de période de refroidissement des dépendances | ✓ | ✗ | ✓ | ✗ | ✗ |
| Bac à sable à l'exécution | ✓ | ✗ | ✗ | ✗ | ✗ |
| Protège les agents de codage IA de manière transparente | ✓ | ✗ | ✗ | ✗ | ✗ |
| Journaux d'audit locaux | ✓ | ✗ | ✗ | ✗ | ✗ |
| PR de correction de CVE connues | ✗ | ✗ | ✗ | ✓ | ✓ |
Démarrage rapide
1. Installation
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Voir Installation pour Homebrew, npm et autres méthodes d'installation.
2. Configuration
Intégrez PMG dans votre shell pour qu'il intercepte les gestionnaires de paquets.
pmg setup install
# Redémarrez votre terminal pour appliquer les changements
Astuce : Réexécutez
pmg setup installaprès avoir mis à jour PMG pour prendre en compte les nouvelles options de configuration.Linux all-users / golden images :
sudo pmg setup install --system— voir docs/system-install.md.
Validez votre installation et vérifiez que la protection fonctionne :
pmg setup doctor
Optionnel : PMG inspecte le trafic HTTPS avec une CA à la volée qu'il injecte dans les gestionnaires de paquets à chaque exécution. Pour rendre une CA persistante entre les exécutions et la faire confiance dans le magasin de certificats de votre OS (nécessaire pour les outils qui ignorent les variables d'environnement CA, comme Go sur macOS et Windows), installez-la une fois :
pmg setup cert install # scope utilisateur, sans sudo pmg setup cert status # vérifier l'état de confiance et l'expirationVoir Autorité de certification pour les scopes, la rotation et la suppression.
3. Utilisation
Voyez PMG bloquer les menaces.
npm install --no-cache --prefer-online [email protected]
Remarque :
safedep-test-pkgest un paquet de test bénin signalé comme malveillant dans la base de données de SafeDep à des fins de test et de vérification.
Continuez à utiliser vos gestionnaires de paquets comme d'habitude, ou laissez votre agent de codage IA les exécuter. PMG se place sur le chemin, bloquant les paquets malveillants.
npm install express
# ou
pip install requests
Gestionnaires de paquets pris en charge
PMG prend en charge les outils que vous utilisez déjà :
| Écosystème | Outils | Exemple de commande |
|---|---|---|
| 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> |
Installation
Script d'installation (MacOS/Linux)
Télécharge la dernière version depuis GitHub, vérifie sa somme de contrôle SHA-256 et l'installe dans $HOME/.local/bin (si sur PATH) ou /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 (Multi-plateforme)
npm install -g @safedep/pmg
Remarque : Les installations basées sur NPM peuvent être fragiles lorsque Node.js est géré par des gestionnaires de versions comme
miseouasdf. Le chemin global du binairenpmchange avec la version active de Node, donc changer de version peut rendrepmgindisponible surPATH(ou pointer vers une ancienne installation). Pour ces configurations, préférez le script d'installation ou Homebrew.
Go (Compilation à partir des sources)
# Assurez-vous que $(go env GOPATH)/bin est dans votre $PATH
go install github.com/safedep/pmg@latest
Téléchargement du binaire
Téléchargez le dernier binaire pour votre plateforme depuis la page des versions.
Image conteneur (GHCR)
Des images multi-arch préconstruites (linux/amd64, linux/arm64) sont publiées dans le GitHub Container Registry à chaque version. Le point d'entrée de l'image est pmg.
# Tirez la dernière image (ou épinglez un tag de version, par exemple :v1.2.3)
docker pull ghcr.io/safedep/pmg:latest
# Exécutez n'importe quelle commande pmg
docker run --rm ghcr.io/safedep/pmg:latest version
GitHub Actions
Protégez les workflows CI en une seule étape. PMG analyse chaque npm install, pip install, etc. dans le job.
- uses: safedep/pmg@v1
with:
server-mode: true
# intercepté via HTTP_PROXY automatiquement
- run: npm ci
- name: Enforce PMG policy
if: always()
run: pmg proxy stop --fail-on-violation # arrête le démon, échoue le job sur un blocage
Par défaut, vous obtenez le blocage des logiciels malveillants et la période de refroidissement des dépendances. L'isolation du bac à sable est optionnelle via l'entrée sandbox. Ajustez le comportement via les entrées (paranoid, sandbox, cooldown-days, ...) ou pointez config-file vers un YAML dans le dépôt. Voir docs/github-action.md pour la référence complète.
Désinstallation
Supprimer l'intégration shell :
pmg setup remove
Pour supprimer également le fichier de configuration PMG :
pmg setup remove --config-file
Puis désinstallez PMG lui-même :
# Homebrew
brew uninstall safedep/tap/pmg
# NPM
npm uninstall -g @safedep/pmg
Confiance et sécurité
Les builds PMG sont reproductibles et signés.
- Attestations : les attestations GitHub et npm garantissent l'intégrité des artefacts.
- Vérification : Vous pouvez prouver cryptographiquement que le binaire correspond au code source.
- Voir Faire confiance à PMG pour les étapes de vérification.
Guide de l'utilisateur
- Configuration
- Configuration des paquets de confiance
- Période de refroidissement des dépendances
- Mise en cache
- Architecture du mode proxy
- Serveur proxy persistant
- Autorité de certification
- Bac à sable
Support
Si PMG vous a sauvé d'un mauvais paquet, mettez une étoile à ce dépôt. Cela aide les autres à le trouver.
Star History
Contribuer
Les contributions sont les bienvenues. Voir CONTRIBUTING.md pour les instructions de construction et de test.
Merci à tous les contributeurs ❤️
Télémétrie
PMG collecte des données d'utilisation anonymes. Pour désactiver, soit :
- Définissez
disable_telemetry: truedans votre fichier de configuration PMG, ou - Exportez
PMG_DISABLE_TELEMETRY=true.