Introducing Package Manager Guard (PMG)
Table of Contents
Let’s say you are building an Express.js application. You need a cookie parser middleware. But instead of installing the original cookie-parser package, you install express-cookie-parser which is a malicious package, although removed from the npm registry. We developers want to get the job done while in the flow state. We hate going outside our terminals and IDEs to check if a package we are installing is malicious or not. This behavior is exploited by malicious actors to compromise developers through typosquatting and other supply chain attacks. To protect the software supply chain, we need to protect developers from malicious packages at the time of installation. This is where Package Manager Guard (PMG) comes in.
What is PMG?
PMG is a tool to protect developers from malicious packages at the time of installation. It is a CLI tool that
wraps popular package managers like npm, pnpm, etc. It prevents installation of malicious packages by scanning
the package at the time of installation.
How do I use PMG?
The easiest way to install PMG is using homebrew. For other installation options, please refer to the
PMG GitHub repository.
brew install safedep/tap/pmgIn your NPM project, you can now install any package using pmg as a security guard.
pmg npm install reactThe goal of PMG is to be as hidden and out of the way as possible while protecting developers from installing malicious packages. For a seamless experience, add PMG as an alias for your package manager.
alias npm="pmg npm"alias pnpm="pmg pnpm"That’s it! PMG will now protect you from installing malicious packages.
Demo
Bugs and Feedback
If you find any bugs or have any feedback, please file an issue on the PMG GitHub repository. You can also join SafeDep Community Discord to discuss PMG and other SafeDep products.
- pmg
- malware
- security
Author
SafeDep Team
safedep.io
Share
The Latest from SafeDep blogs
Follow for the latest updates and insights on open source security & engineering
mrmustard PyPI Package Trojanized to Steal Credentials
Version 0.7.4 of Xanadu's mrmustard quantum computing library shipped to PyPI with no matching GitHub release. It carries a 258-line credential stealer that harvests SSH keys, AWS and Kubernetes...
AsyncAPI Packages Compromised with Miasma RAT
Four @asyncapi npm packages were published with obfuscated malware on July 14, 2026 via compromised CI workflows. The payload downloads Miasma RAT, a credential stealer targeting browsers, SSH keys,...
@copilot-mcp/apex: A macOS Infostealer Re-Published on npm After Takedown
The npm security team removed the original @apexfdn/apex package for malicious code, and the operator re-published the same postinstall macOS infostealer as @copilot-mcp/apex about 11 hours later. It...
Official jscrambler npm Package Compromised Across Multiple Releases
The official jscrambler npm package (60K monthly downloads) was trojanized starting at 8.14.0 through an npm account or CI compromise. The attacker republished the same Rust infostealer across five...
Ship Code.
Not Malware.
Start free with open source tools on your machine. Scale to a unified platform for your organization.