
pmg v0.26.0
PMG 通过代理、沙箱和 SafeDep 的威胁情报源保护开发者和 AI 代理免受恶意开源包的侵害。
包管理器守卫 (PMG)
在恶意包安装之前将其拦截。
为什么选择 PMG?
开发者和 AI 编程代理每天都在安装软件包。每一次 npm install 或 pip install 都会执行数千行无人审查的代码。
近期热门生态系统中发生的入侵事件:
- Mini Shai-Hulud - 300 多个热门软件包遭到入侵
- litellm 1.82.8 - 一个热门 AI 代理库遭到入侵,用于窃取凭据
- telnyx 4.87.2 - 一个合法的电信 SDK 在 PyPI 上被劫持
- pino-sdk-v2 - 一个伪装成热门 pino 日志库的误植域名包
PMG 免费、开源(Apache 2.0),且无需账户或 API 密钥。 它会拦截每一次软件包安装,并在代码执行之前对照 SafeDep 的免费社区 API 检查是否存在已知恶意软件。对于未知恶意软件,它使用依赖冷却期和可选的沙箱来实现主动安全防御。
PMG 的工作原理
PMG 采用纵深防御策略。零配置,可在 Windows 上的 Zsh、Bash、Fish 和 PowerShell 中运行。每一次被拦截的安装都会在代码运行之前经过适用于它的各层保护,并留下审计记录。
各层详情
- 透明拦截 - PMG 封装了
npm、pip及其他包管理器。开发者和 AI 代理使用相同的命令。无需更改工作流程。 - 第 1 层:威胁情报 - PMG 在安装前会对照 SafeDep 的实时威胁情报 检查每个包。已知的恶意包会被阻止。无需密钥,无需登录。
- 第 2 层:策略(依赖冷却) - PMG 会阻止在可配置冷却窗口内发布的包版本,因此在窗口期内会跳过最近被入侵的版本。
- 第 3 层:可选沙箱 - 当沙箱启用并配置后,PMG 会在操作系统原生沙箱(默认 macOS Seatbelt、Linux Landlock,或 Bubblewrap 回退)内运行安装,因此即使威胁突破了前两层,安装脚本的系统访问权限也会受到限制。
- 审计日志 - PMG 会记录每次安装(安装了什么、何时安装、从何处安装),以提供可验证的审计追踪。
PMG 对比
PMG 将安装时恶意软件拦截、依赖冷却和操作系统原生沙箱整合到一个免费的开源工具中,面向开发者和 AI 编码代理。
| 能力 | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| 开源 / 公开构建 | ✓ | ✗ | ✓ | ✗ | ✗ |
| 无需账户或 API 密钥 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 安装时恶意包拦截 | ✓ | ✓ | ✓ | ✗ | ✗ |
| 依赖冷却策略 | ✓ | ✗ | ✓ | ✗ | ✗ |
| 运行时沙箱 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 透明保护 AI 编码代理 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 本地审计日志 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 已知 CVE 修复 PR | ✗ | ✗ | ✗ | ✓ | ✓ |
注意: 此对比截至 2026 年 10 月准确。
快速开始
1. 安装
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
有关 Homebrew、npm 及其他安装方法,请参阅安装。
2. 设置
将 PMG 接入你的 shell,使其能够拦截包管理器。
pmg setup install
# Restart your terminal to apply changes
提示: 升级 PMG 后请重新运行
pmg setup install,以应用新的配置选项。全用户 / 黄金镜像:在 Linux 上运行
sudo pmg setup install --system,或在 Windows 上以管理员身份运行pmg setup install --system—— 参见 docs/system-install.md。
验证你的安装并确认防护已生效:
pmg setup doctor
可选: PMG 使用一个即时生成的 CA 来检查 HTTPS 流量,并在每次运行时将其注入包管理器。若要在多次运行之间持久化同一个 CA,并在操作系统的信任存储中信任它(对于忽略 CA 环境变量的工具是必需的,例如 macOS 和 Windows 上的 Go),请安装一次:
pmg setup cert install # 用户范围,无需 sudo pmg setup cert status # 检查信任状态和过期时间有关作用域、轮换和移除,请参阅 Certificate Authority。
3. 使用
查看 PMG 拦截威胁。
npm install --no-cache --prefer-online [email protected]
# or
pip install --no-cache-dir safedep-test-pkg==0.0.4
注意:
safedep-test-pkg(在 npm 和 PyPI 上)是一个良性测试包,在 SafeDep 的数据库中被标记为恶意,用于 测试和验证目的。
像往常一样继续使用你的包管理器,或者让你的 AI 编码代理来运行它们。PMG 位于路径中,拦截恶意包。
npm install express
# or
pip install requests
支持的包管理器
PMG 支持你已经在使用的工具:
| 生态系统 | 工具 | 命令示例 |
|---|---|---|
| Node.js | npm | npm install <pkg> |
pnpm | pnpm add <pkg> | |
yarn | yarn add <pkg> | |
bun | bun add <pkg> | |
aube | aube add <pkg> | |
npx | npx <pkg> | |
pnpx | pnpx <pkg> | |
aubx | aubx <pkg> | |
aubr | aubr <script> | |
| Python | pip | pip install <pkg> |
pipx | pipx run <pkg> | |
poetry | poetry add <pkg> | |
uv | uv add <pkg> | |
uvx | uvx <pkg> |
实验性
对这些生态系统的支持是实验性的。行为和输出可能在不同版本之间发生变化。
pmg setup install 不会包装这些工具。请通过 pmg 运行它们。
| 生态系统 | 工具 | 命令示例 |
|---|---|---|
| Go | go | pmg go get <module> |
| Rust (crates) | cargo | pmg cargo add <crate> |
注意: 在 macOS 和 Windows 上,
pmg go需要将 PMG CA 安装到操作系统信任存储中。请先运行pmg setup cert install。参见 证书颁发机构。
安装
安装脚本(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
MSI 或 Chocolatey(Windows)
每个版本都会附带 pmg_Windows_x86_64.msi。该 MSI 会为所有用户安装 pmg.exe,并运行 pmg setup install --system。请从提升权限的命令提示符中运行它:
msiexec /i pmg_Windows_x86_64.msi /qn
Chocolatey 包安装的是同一个 MSI:
choco install pmg
有关 MDM 部署和升级,请参阅 docs/system-install.md。