
pmg v0.27.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.
Une défense en profondeur pour les gestionnaires de paquets que vous utilisez déjà.
Pourquoi PMG ?
Les développeurs et les agents IA de codage 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 les écosystèmes populaires :
- Mini Shai-Hulud - plus de 300 paquets populaires compromis
- litellm 1.82.8 - une bibliothèque IA proxy populaire compromise pour exfiltrer des identifiants
- telnyx 4.87.2 - un SDK de 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 auprès de 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, compatible 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 enveloppe
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 : Renseignements sur les menaces - PMG vérifie chaque paquet auprès des renseignements sur les menaces en temps réel 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, afin que les versions récemment compromises soient 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 (Seatbelt macOS, Landlock Linux par défaut, ou repli Bubblewrap) afin que les scripts d'installation aient un accès système restreint même si une menace contourne les deux premières couches.
- Journalisation d'audit - PMG journalise chaque installation (quoi, quand, d'où) pour une piste d'audit vérifiable.
Comparaison de PMG
PMG est le seul pare-feu de paquets à l'installation, gratuit et open source, qui couvre à la fois les développeurs et les agents IA et qui est livré avec un bac à sable et une période de refroidissement intégrés.
| Capacité | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / construit publiquement | ✓ | ✗ | ✓ | ✗ | ✗ |
| Aucun compte ni clé API | ✓ | ✓ | ✓ | ✗ | ✗ |
| Blocage des paquets malveillants à l'installation | ✓ | ✓ | ✓ | ✗ | ✗ |
| Politique de refroidissement des dépendances | ✓ | ✗ | ✓ | ✗ | ✗ |
| Bac à sable d'exécution | ✓ | ✗ | ✗ | ✗ | ✗ |
| Protège les agents IA de codage de manière transparente | ✓ | ✗ | ✗ | ✗ | ✗ |
| Journaux d'audit locaux | ✓ | ✗ | ✗ | ✗ | ✗ |
| PR de correction des 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 d'autres méthodes d'installation.
2. Configuration
Intégrez PMG à votre shell afin qu'il intercepte les gestionnaires de paquets.
pmg setup install
# Redémarrez votre terminal pour appliquer les modifications
Astuce : Réexécutez
pmg setup installaprès une mise à niveau de PMG pour récupérer les nouvelles options de configuration.Linux pour tous les utilisateurs / images dorées :
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 AC à la volée qu'il injecte dans les gestionnaires de paquets à chaque exécution. Pour conserver une AC unique entre les exécutions et lui faire confiance dans le magasin de confiance de votre système d'exploitation (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 # portée utilisateur, sans sudo pmg setup cert status # vérifier l'état de confiance et l'expirationVoir Autorité de certification pour les portées, 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 IA de codage 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 présent 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 du binaire globalnpmchange avec la version active de Node, donc changer de version peut laisserpmgindisponible surPATH(ou pointer vers une ancienne installation). Pour ces configurations, privilégiez le script d'installation ou Homebrew.
Go (Compilation depuis les 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-architectures préconstruites (linux/amd64, linux/arm64) sont publiées sur le Registre de conteneurs GitHub à chaque version. Le point d'entrée de l'image est pmg.
# Tirez la dernière image (ou épinglez une balise de version, ex. :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 flux de travail CI avec une seule étape. PMG analyse chaque npm install,
pip install, etc. dans le travail.
- uses: safedep/pmg@v1
with:
server-mode: true
# intercepté via HTTP_PROXY automatiquement
- run: npm ci
- name: Appliquer la politique PMG
if: always()
run: pmg proxy stop --fail-on-violation # arrête le démon, fait échouer le travail en cas de blocage
Par défaut, vous bénéficiez du blocage des logiciels malveillants et de la période de refroidissement des dépendances. L'isolation par 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
Supprimez 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 d'autres personnes à le trouver.
Contribution
Les contributions sont les bienvenues. Voir CONTRIBUTING.md pour les instructions de compilation 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, soit - Exportez
PMG_DISABLE_TELEMETRY=true.