PMG:在 payload 执行前拦截每一次安装
PMG 是一个开源的包防护工具,它在所有 post-install 脚本执行之前拦截每一次 npm install、pip install 或 cargo install。对于团队来说,将 pmg 与 SafeDep Cloud 同步可以为您提供跨整个开发团队的每个 endpoint 的安装、拦截和覆盖的审计跟踪。
当前安全态势中的缺口
大多数团队都有某种形式的依赖扫描。CI 任务检查 lockfile。CVE 订阅在清单中出现已知恶意包时发出告警。如果安全体系成熟,SCA 工具会在 PR 上运行。
但这些都不会在 npm install 完成之前运行。
恶意包在 post-install 脚本中执行。payload 在包落地到磁盘的那一刻就运行了,远早于您的下一次提交或 PR。在开发者的笔记本上。在 CI 运行器中。在 AI 编码代理的沙盒化环境中。当管道扫描器发出告警时,凭证已经被盗走,逆向 shell 已经被打开,或者后门已经被安装。
eslint-config-prettier 供应链攻击遵循了完全相同的模式。Strapi 攻击活动也是如此。攻击实际上着陆的 endpoint,而大多数团队在那里没有任何防护。
PMG:您与下一次供应链攻击之间的唯一别名
pmg 包装您的包管理器。设置一个别名,每个安装命令都先经过威胁情报检测。
# Install via Homebrew (macOS)
brew install safedep/tap/pmg
# Or download from https://github.com/safedep/pmg/releases
# One-time setup: registers pmg aliases in your shell
pmg setup install之后,npm install、pip install 和 cargo install 命令都会通过 pmg 路由。无需令牌。无需账户。无需配置。
pmg npm install express
# [info] checking threat intelligence...
# ✓ [email protected] — allowed当它检测到问题时:
检查在任何 post-install 脚本触发之前进行。如果包的 verdict 是人类验证过的恶意包,则安装中止。payload 永远不会运行。
pmg 还支持依赖冷却期:一个可配置的窗口(例如五天),用于限制新发布包的安装。在冷却期内的包会被拦截,或者回退到最新符合条件的版本。这可以捕获在发布时间和检测之间的窗口期被利用的供应链攻击,在任何威胁情报 verdict 存在之前。
PMG 是免费且完全开源的:github.com/safedep/pmg。
扩展到您的团队:云同步
单机上的 PMG 保护一位开发者。要在整个组织范围内覆盖,您需要跨车队中每个 endpoint 的可见性。
pmg cloud sync 将每个 endpoint 连接到您的 SafeDep Cloud 租户。身份验证后,每个包事件都会流式传输到 app.safedep.io/endpoints 的中央仪表板。
# Authenticate once per machine
pmg cloud login
# ? tenant id: acme
# ? domain: acme.safedep.io
# ✓ logged in
# Sync package events to SafeDep Cloud
pmg cloud sync
# ↑ pushing 142 package events
# ↑ pushing 28 sessions
# ✓ synced to app.safedep.ioEndpoint 仪表板显示每台注册的机器、其最后同步时间,以及过去 24 小时的聚合事件计数:总事件数、被拦截的安装数、活跃 endpoint 数。
对于 CI 管道,在安装阶段之后添加 pmg cloud sync 作为 post-step。构建的每次包活动都成为审计跟踪的一部分。
包事件:审计跟踪
一旦 endpoint 同步,您将使用包事件而不是聚合计数。每个事件都带有生态系统(npm、PyPI、crates.io)、包名称和版本、操作(install、remove、update)以及结果。
四个结果类型是您的安全团队真正需要的:
allowed— 安装干净完成blocked— 被威胁情报或冷却期阻止override— 开发者强制安装了尽管被阻止的包bypassed— 通过 flag 跳过了pmg
override 和 bypassed 是操作上最有意义的。它们显示哪位开发者突破了阻止,针对哪个包,以及何时。没有这个信号,您无法了解您的强制执行被规避的频率。
每个 endpoint 的视图显示任何机器的完整包防护流,深入到单个会话:
库存事件:机器上已经有什么
包事件涵盖开发者未来安装的内容。另一个问题是每个 endpoint 上已经安装了什么:哪些 AI 工具、MCP 服务器、CLI 工具和 IDE 扩展正在系统范围内运行。
vet endpoint scan 处理这个问题。它盘点 endpoint 上的工具并报告结果到 SafeDep Cloud,它们显示在库存标签下。
# Configure authentication
vet auth configure --tenant <your-domain.safedep.io>
vet auth verify
# Scan the endpoint (system-wide)
vet endpoint scan --scope system
# Or limit to the current project directory
vet endpoint scan --scope project这为安全团队提供了车队范围内的工具生态系统视图,而不仅仅是今天安装的内容。结合包事件,它回答了"这台机器上正在运行什么"和"什么时候安装了什么东西"这两个问题。
快速开始
对于个人开发者:
brew install safedep/tap/pmg
pmg setup install
# Every package install is now checked. Done.对于团队范围可见性:
pmg cloud login # once per machine
pmg cloud sync # after any install session, or on a schedule对于 endpoint 库存:
brew install safedep/tap/vet
vet auth configure --tenant <your-domain.safedep.io>
vet endpoint scan --scope system完整的设置文档涵盖 CI 集成、策略配置和多租户部署:
- 包防护设置:docs.safedep.io/cloud/endpoint-hub/package-guard
- Endpoint Hub(包括 vet 库存同步):docs.safedep.io/cloud/endpoint-hub
endpoint 可见性改变了什么
仓库扫描和 endpoint 防护覆盖不同的时刻。仓库扫描发现您提交代码中的内容。endpoint 防护在提交存在之前就阻止了尝试运行的内容。
定义最近供应链威胁报告的攻击有一个共同点:payload 在任何公开通报、CVE 或管道告警存在之前就已执行。威胁情报只有在 endpoint 上有东西及时采取行动时才有意义。
pmg 提供了这种强制执行。云同步使其在规模上可观测。
- pmg
- endpoint-protection
- supply-chain
- npm
- developer-security
来自 SafeDep 博客的最新内容
关注以获取开源安全与工程的最新更新和洞察