AI News HubLIVE
站内改写3 分钟阅读

Perplexity开源Bumblebee:面向开发者终端的只读供应链扫描器

Perplexity开源了其内部使用的安全工具Bumblebee,这是一个用于macOS和Linux开发者终端的只读供应链扫描器,能够检查npm、PyPI、Go模块、MCP配置、编辑器扩展和浏览器扩展,而无需运行任何代码或调用包管理器。

来源MarkTechPost作者: Asif Razzaq

Perplexity 公司近日在 GitHub 上开源了其内部使用的安全工具 Bumblebee。该工具专为 macOS 和 Linux 系统上的开发者终端设计,是一个只读的供应链资产清单收集器。Bumblebee 完全使用 Go 语言编写,不依赖任何非标准库,目前已被 Perplexity 内部用于保护其搜索产品 Comet、Comet 浏览器以及 Computer 代理的开发环境。

随着攻击者越来越多地将目标对准开发者机器上的软件包、编辑器扩展和 AI 工具配置,而非仅限于生产系统,安全团队需要一种能够快速检查开发人员本地环境安全风险的工具。Bumblebee 正是为了解决这一痛点而诞生。当一个新的漏洞被公开时,安全团队面临的首要问题是:哪些开发者机器当前存在暴露风险?现有的 SBOM(软件物料清单)和漏洞扫描器覆盖的是构建产物和代码仓库,而端点检测与响应(EDR)产品追踪的是进程运行和网络连接情况。两者都无法全面检查开发者本地机器的状态,例如分散在文件系统中的锁文件、软件包元数据、扩展清单以及 AI 工具配置。

Bumblebee 填补了这一空白。每当安全公告中提及某个软件包、扩展或版本时,Bumblebee 能够立即回答哪些机器上的磁盘元数据与之匹配。该工具所覆盖的生态系统是经过精心选择的,对应了近期活跃的供应链攻击活动,包括影响 npm、PyPI、RubyGems、Go 模块和 Composer 包的 Mini Shai-Hulud 系列攻击,受影响的公司包括 TanStack、SAP 和 Zapier 等。

Bumblebee 采用一次性扫描模式,每次调用执行一次扫描后即退出。扫描节奏由操作者控制,可以通过 cron、launchd、systemd 或 MDM 设备管理工具来安排。其输出为 NDJSON(换行分隔的 JSON)格式,每行一条结构化的记录,诊断信息则输出到标准错误流。

该工具支持三种扫描配置:基线模式扫描常见的全局和用户包根目录、语言工具链、编辑器扩展、浏览器扩展及 MCP 配置;项目模式针对配置的开发目录(如 ~/code 或 ~/src);深度模式则在事件响应期间扫描操作者指定的根目录,通常为裸露的家目录。

在 Perplexity 内部,Bumblebee 被整合到一个五步工作流程中:威胁信号从公开披露或第三方情报源到达;Perplexity Computer 随后起草目录更新,将信号以结构化的条目形式录入,包括生态系统、包名和版本,并打开带有来源链接的 GitHub PR;人类开发者审核并合并 PR;接着 Bumblebee 在端点运行更新后的目录,将发现结果共享给安全团队。

Bumblebee 的扫描覆盖四个主要领域:语言包管理器(npm、pnpm、Yarn、Bun、PyPI、Go 模块、RubyGems 和 Composer),直接读取锁定文件和已安装包的元数据(如 package-lock.json、pnpm-lock.yaml、go.sum 及 *.dist-info/METADATA),但 v0.1 版本不支持 Bun 的二进制锁定文件 bun.lockb,仅支持文本格式 bun.lock;AI 代理配置(MCP JSON 主机配置文件,包括 mcp.json、.mcp.json、claude_desktop_config.json 等,但非 JSON 格式如 Codex 的 config.toml 和 Continue 的 YAML 暂不支持);编辑器扩展(VS Code、Cursor、Windsurf 和 VSCodium 的清单);浏览器扩展(Chromium 系浏览器如 Chrome、Comet、Edge、Brave、Arc 及 Firefox)。

Bumblebee 的只读特性至关重要。npm 包可能携带自动执行的后安装脚本,如果扫描器调用 npm 来检查暴露情况,那么它已经触发了本应查找的攻击。Bumblebee 通过从不运行安装脚本或生命周期钩子、从不调用 npm、pnpm、bun 或 pip、从不读取应用程序源文件、也不进行进程或网络监控,完全避免了这一问题。它并非 EDR 产品。

每条包记录包含主机名、操作系统、架构、生态系统、包名、版本、源文件及置信度字段。置信度为高表示精确的身份和版本来自规范元数据,中表示身份可靠但版本或源不完整,低表示仅找到配置路径或规格引用。安全团队可以提供自己的暴露目录,即指定生态系统、包名和受影响版本的简单 JSON 文件。当 Bumblebee 发现匹配时,会输出包含严重性、目录 ID 和证据的发现记录,每条发现都可追溯到触发它的目录条目。此外,仓库中还包含一个 threat_intel/ 目录,提供了基于公开供应链攻击报告构建的、持续维护的暴露目录。

要开始使用 Bumblebee,需要 Go 1.25 或更高版本,安装命令为:go install github.com/perplexityai/bumblebee/cmd/bumblebee@latest。安装后,运行 bumblebee selftest 可验证二进制文件功能正常。该工具采用 Apache 2.0 许可证,当前版本为 v0.1.1。