Perplexity开源Bumblebee:帮你在供应链漏洞爆发时,快速查出哪些电脑"中招"了

前沿资讯 1779590318更新

0

今天一早,Perplexity 在 X 上发了一条推,说他们把内部用的一款工具给开源了。

叫 Bumblebee,就是雄蜂那个 Bumblebee。

推文是这么说的:

"今天我们开源了 Bumblebee,一个面向 macOS 和 Linux 的只读扫描器。它会检查开发者的机器上是否有危险包、扩展和 AI 工具配置。连接到 Computer 之后,每当有新的供应链风险出现,它就能触发深度扫描。"

Perplexity 在博客里说了一句话,我觉得挺扎心的。

"让产品对用户更安全,得从保护我们构建这些产品的开发者系统开始。"

AI 时代,漏洞发现得越来越频繁。最近的很多威胁,越来越多地瞄准了软件包、开发者工具和本地环境。而这些恰恰是现代工程团队最依赖的东西。

比如,上个月底,国家网络安全通报中心就发布消息说,AI模型部署工具 Xinference 遭遇供应链投毒攻击。

攻击者向 PyPI(Python 官方软件包仓库)上传了包含恶意代码的 Xinference 包,只要用户安装受影响的版本,恶意代码就会自动执行。

这个恶意代码能干什么呢?它会窃取云平台凭据、API 密钥、数据库密码、加密货币钱包和环境变量,然后发送到远程服务器。

最骚的是,这是专门针对 AI 工具的投毒。Xinference 是什么?是一个用来部署大语言模型的工具,很多公司在本地跑 AI 模型用的就是它。所以中招的,基本都是 AI 开发者,或者是公司里负责 AI 基础设施的人。

所以,产品的安全性,得从供应链的上游开始抓。

而 Bumblebee,就是他们用来干这件事儿的。

Bumblebee 是一个只读的扫描工具,跑到开发者的电脑上,扫一遍,然后把结果吐出来。

它扫什么呢?

语言包管理器这块,基本全覆盖了。

npm、pnpm、Yarn、Bun、PyPI、Go modules、RubyGems、Composer,基本你听过的都用。

AI 工具配置,它也扫 MCP。

MCP 就是那种让 AI 助手能够调用各种工具的配置文件,什么 Claude 的、Codestral 的,基本都扫。

编辑器扩展,VS Code 系列的,包括 Cursor、Windsurf、VSCodium,这些它都看。

浏览器扩展,Chrome 家族的一整套,再加上 Firefox 的。

Perplexity 的博客里说,现有的开源工具一般只能覆盖一两个领域,而 Bumblebee 四个全扫了。

工作流是什么样的?

首先,有个威胁信号冒出来了。可能是公开的漏洞披露,可能是第三方情报源,也可能是内部研究发现的。

然后,Perplexity Computer 会自动起草一个 catalog update。就是把那个漏洞信息整理成一个结构化的条目,包括生态系统、包名、版本,然后开一个 GitHub PR,附上来源链接。

接着,人类来 review 这个 PR,确认没问题了就 merge。

merge 之后,跑到所有开发者的机器上跑 Bumblebee,传入这个更新的 catalog。

最后,扫出来的结果直接推给安全团队。

整个流程里,Perplexity Computer 负责draft和整理,人负责把关质量和最终决策,Bumblebee 负责执行扫描。

Bumblebee 支持三种扫描模式。

baseline 模式,就是例行扫描。扫的是那些标准位置,什么全局的包目录、用户级的安装、编辑器扩展、浏览器插件这些。团队可以通过 MDM 或者 fleet tooling 来定时跑这个,适合日常的安全巡检。

project 模式,就是定向扫描。扫的是特定的代码仓库或者工作目录,比如 ~/code、~/Developer 这些。适合重点关注某些核心仓库的时候。

deep 模式,就是深度扫描。扫的是整个 $HOME 目录,或者你指定的任意路径。这个模式是给应急响应用的,当一个重大的供应链漏洞爆发,你需要知道影响范围有多大的时候,跑这个模式。

Perplexity 在博客里说,这个模式通常会配合 exposure catalog 和 findings-only 一起用,就是只输出匹配到漏洞包的那些结果,不输出所有的包。

为什么是"只读"?这是 Bumblebee 最重要的设计决策。

它是只读的。不运行任何包管理器,不读源码文件,只读那些锁文件和元数据文件。package-lock.json、pnpm-lock.yaml、go.sum、METADATA 这些,它们只是静态文件,不包含任何可执行代码。

为什么这么做?

因为很多供应链攻击就是通过 install 脚本传播的。npm 的 postinstall 脚本就是最典型的例子。你运行 npm install,npm 会自动执行 package.json 里定义的 postinstall 脚本,这是合法的功能,但也是攻击者的最爱。

你去翻翻最近几年的供应链安全事件,基本都是这么传播的。

所以问题来了。如果你用传统的扫描方式,比如调用 npm list 去查你有没有装某个包,你可能还没查完,那个恶意脚本就已经跑了。

你本来是去检查风险的,结果可能反而把风险给激活了。

Bumblebee 解决这个问题的方式就是不运行,永远不运行。

Bumblebee 不会运行 install 脚本或生命周期钩子,不会运行 npm、pnpm、bun 或 pip,不会读取应用程序的源码文件,也不会监控进程或网络。Bumblebee 不是 EDR。

它只做一件事,就是读文件。

安装很简单,前提是你有 Go 1.25 或者更高版本。

go install github.com/perplexityai/bumblebee/cmd/bumblebee@latest

或者你想从源码编译:

go build -o bumblebee ./cmd/bumblebeego test ./...

装完之后,跑一下 selftest 检查安装是否正常:

bumblebee selftest# selftest OK (2 findings in 1ms)

基础的扫描命令是这样的:

bumblebee scan --profile baseline > inventory.ndjson

如果想针对特定目录扫描,可以用 --root 参数。如果想检查某个漏洞包,可以用 --exposure-catalog 参数。

Bumblebee 会把结果输出为 NDJSON 格式,每行一条记录,包括包信息、版本、路径这些。

Bumblebee 目前已经开源,代码在 GitHub 上:github.com/perplexityai/bumblebee。

用 Go 写的,没有第三方依赖。

Perplexity 在博客里说,安全团队可以下载这个工具,用自己的漏洞 catalog 来跑扫描,然后把结果接进自己已有的响应流程。

不需要从零开发,不需要重复造轮子。

threat_intel 目录里已经放了一些现成的 exposure catalog,是他们从公开的威胁情报里整理出来的,包括最近一些供应链攻击涉及的包。

感兴趣的话,可以去翻翻看。