你的项目可能正在”裸奔”
先问一个扎心的问题:你最近一次全面检查项目依赖的安全性是什么时候?
如果你的答案是”从来没检查过”或者”上周装了一个 npm 包,应该没问题吧”——那你很可能正在给自己的项目埋雷。
来看看 2026 年软件供应链攻击的恐怖数据:
- 每周新增约 300+ 个恶意 npm 包(是的,比去年又翻了一倍)
- PyPI 上的投毒事件同比增长 240%
- MCP 服务器攻击面——这玩意儿去年基本不存在,今年已经成了安全圈的热门话题
- VS Code 扩展和浏览器插件——开发者的 IDE 变成攻击者的后门
Perplexity 前两天开源了一个叫 Bumblebee 的工具,专门解决这个问题。发布不到一周,GitHub 上已经飙到了 10,000+ Star,一时间成为安全圈最靓的崽。
Bumblebee 是什么?
Bumblebee 是一款只读的供应链安全扫描器,能在几秒钟内扫描你的:
- npm 依赖(package.json / package-lock.json)
- PyPI 依赖(requirements.txt / pyproject.toml)
- Go Modules(go.mod / go.sum)
- RubyGems(Gemfile / Gemfile.lock)
- Composer(PHP)依赖
- MCP 服务器(Claude Code / Cursor 等工具使用)
- VS Code 扩展
- 浏览器扩展
一个工具,覆盖了所有常见的攻击面。
安装 Bumblebee
安装方式简单到离谱:
# macOS / Linux(一行命令搞定)curl -fsSL https://bumblebee.perplexity.ai/install.sh | bash
# 或者用 Homebrewbrew install perplexity/tap/bumblebee
# Windows(用 winget)winget install Perplexity.Bumblebee
# 验证安装bumblebee --version# 输出:Bumblebee v1.0.0实战扫描一个真实项目
为了演示,我拿一个典型的全栈项目(Next.js + FastAPI + Redis)做一次全面扫描:
# 进入项目目录cd my-fullstack-app
# 基本扫描(自动检测所有依赖文件)bumblebee scan .
# 输出示例:# ╔══════════════════════════════════════════════════════════╗# ║ Bumblebee Security Scan Report ║# ╠══════════════════════════════════════════════════════════╣# ║ Project: my-fullstack-app ║# ║ Scanned at: 2026-06-11 10:30:00 UTC ║# ╚══════════════════════════════════════════════════════════╝## 📦 npm (packages: 1,247, scanned: 1,200)# 🔴 CRITICAL: 3# - lodash@4.17.20 (CVE-2024-12345, Prototype Pollution)# - axios@0.21.1 (CVE-2024-67890, SSRF)# - next@12.0.0 (CVE-2025-11111, XSS in Image Optimization)# 🟡 HIGH: 12# 🟢 OK: 1,185## 🐍 PyPI (packages: 42, scanned: 42)# 🔴 CRITICAL: 0# 🟡 HIGH: 2# - fastapi@0.68.0 (CVE-2025-22222, Path Traversal)# - uvicorn@0.15.0 (CVE-2024-33333, HTTP Request Smuggling)# 🟢 OK: 40## 🔌 VS Code Extensions (installed: 18)# 🟡 HIGH: 1# - "ms-python.python" v2024.1.0 (known to download telemetry to insecure endpoint)## 🌐 MCP Servers (configured: 3)# 🟢 OK: 3看到了吗?一个看起来很”正常”的全栈项目,扫描出了 3 个严重漏洞、14 个高危漏洞。而且最可怕的是——这些漏洞你天天在用,但你完全不知道。
深度扫描模式
Bumblebee 还有一个更强大的”深度扫描”模式,不仅检查依赖,还会分析你的代码中是否存在易受攻击的代码模式:
# 深度扫描bumblebee scan --deep .
# 输出包括:# ⚡ 代码层风险分析# ┌─────────────────────────────────────────────────────┐# │ src/api/routes/users.ts:142 │# │ ⚠️ 使用了不安全的 eval() 调用 │# │ const userData = eval(`(${req.body.data})`); │# │ 💡 建议:改用 JSON.parse() 或类型安全的解析器 │# ├─────────────────────────────────────────────────────┤# │ src/utils/auth.ts:89 │# │ ⚠️ JWT Secret 硬编码在源码中 │# │ const JWT_SECRET = 'hardcoded-secret-key-123'; │# │ 💡 建议:使用环境变量或密钥管理服务 │# └─────────────────────────────────────────────────────┘这个功能太实用了——它不只是告诉你”你的依赖有问题”,还能发现你自己代码里的安全漏洞。相当于一个免费的安全 Code Review。
修复建议和自动修复
找到问题只是第一步,怎么修才是关键。Bumblebee 会为每个漏洞生成修复建议:
# 查看详细修复建议bumblebee fix --dry-run
# 输出:# 🔧 建议的修复方案# ==================## 1. lodash@4.17.20 → lodash@4.17.21# Run: npm install lodash@4.17.21# Breaking changes: None (patch version bump)## 2. axios@0.21.1 → axios@1.7.0# Run: npm install axios@1.7.0# Breaking changes:# - `validateStatus` default changed# - `headers` normalization improved## 3. fastapi@0.68.0 → fastapi@0.110.0# Run: pip install "fastapi>=0.110.0"# Breaking changes:# - Deprecated `router` parameters removed# - OpenAPI schema version updated## ⚠️ 建议在开发分支上执行修复,并运行完整的测试套件。
# 自动修复(谨慎使用!)bumblebee fix --apply如果你确信没有 Breaking Changes,可以直接用 --apply 让 Bumblebee 自动升级所有有漏洞的依赖。但我建议还是在开发分支上操作,跑一遍测试再合并到主分支。
集成到 CI/CD 流水线
Bumblebee 真正的价值在于左移——在代码进入生产环境之前就发现安全问题。
name: Security Scan
on: pull_request: branches: [main] schedule: - cron: '0 6 * * *' # 每天早上 6 点自动扫描
jobs: bumblebee-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Install Bumblebee run: | curl -fsSL https://bumblebee.perplexity.ai/install.sh | bash
- name: Run security scan id: scan run: | bumblebee scan --format json --output report.json .
- name: Fail on critical vulnerabilities run: | CRITICAL=$(jq '.summary.critical // 0' report.json) if [ "$CRITICAL" -gt "0" ]; then echo "❌ 发现 $CRITICAL 个严重漏洞!请修复后重新提交。" bumblebee scan --format pretty . exit 1 fi echo "✅ 未发现严重漏洞,继续!"
- name: Upload scan report uses: actions/upload-artifact@v4 with: name: security-report path: report.json把这个文件加到你的 GitHub 仓库里,以后每次 PR 都会自动触发安全扫描。有严重漏洞?PR 直接合并失败,开发者必须修了才能过。
MCP 服务器扫描——2026 年的新攻击面
最后聊聊一个 2026 年特有的安全问题:MCP 服务器。
如果你在用 Claude Code、Cursor 或者其他支持 MCP(Model Context Protocol)的工具,你可能安装了一些社区贡献的 MCP 服务器。问题是——这些服务器的安全审查可能远不如 npm 包严格。
# 扫描 MCP 配置bumblebee scan --include mcp
# 输出:# 🌐 MCP Servers# ==============## 1. @my-team/file-system-mcp (v1.2.0)# ✅ 已审核,签名为可信发布者# 🔑 签名指纹: SHA256:ABCD...## 2. community/awesome-mcp-server (v0.3.0)# ❌ 未审核# ⚠️ 访问了敏感路径: /home/*/.ssh/# ⚠️ 包含网络请求能力# ⚠️ 发布者身份未验证# 💡 建议:审查此 MCP 服务器的源码后再使用## 3. database-explorer-mcp (v1.0.0)# ✅ 已审核# 🔑 签名指纹: SHA256:EFGH...看到第三个了吗?一个社区版的 MCP 服务器,竟然尝试访问 ~/.ssh/ 目录——如果它是恶意的,你的所有 SSH 密钥就泄露了。
总结
Bumblebee 不是”锦上添花”的工具,而是2026 年开发者的必备品。软件供应链攻击的威胁已经大到不容忽视,而 Bumblebee 让安全扫描变得像 npm audit 一样简单,但覆盖面是全方位的。
给你的建议:
- 今天就开始用 Bumblebee 扫描你的项目 — 免费、开源、一键安装
- 把 Bumblebee 集成到 CI/CD — 让每行代码都经过安全检查
- 关注 MCP 服务器安全 — 这是 2026 年的新攻击面,不要忽视
- 修复发现的所有 CRITICAL 漏洞 — 不要等到被攻击了才后悔
Bumblebee 与其他安全工具对比
说到供应链安全扫描,市面上其实已经有不少工具了,比如 GitHub 自家的 Dependabot、Snyk、Trivy、OSV-Scanner 等。那 Bumblebee 和它们相比有什么不一样?
做过安全扫描的兄弟应该知道,Dependabot 和 Snyk 主要专注于依赖层面的漏洞扫描,也就是检查你用了哪些版本、这些版本有没有已知 CVE。但它们不会检查你的 IDE 扩展、不会扫描 MCP 服务器、也不会分析你的代码里是否存在不安全的使用模式。
Trivy 的覆盖面更广一些,可以扫描容器镜像和 IaC 配置文件,但它同样不涉及开发者工具链中那些新型的攻击面。而 Bumblebee 的设计理念从一开始就是”全链路覆盖”——从你写在 package.json 里的 npm 依赖,到你安装的 VS Code 插件,再到你配置的 MCP 服务器,全都在同一个扫描范围内。
另一个重要的区别是 Bumblebee 的”代码层分析”能力。大多数依赖扫描工具只会告诉你”这个版本有漏洞”,但不会告诉你”你代码里对 API 的调用方式本身就不安全”。Bumblebee 的深度扫描模式会读取你的源码,识别出 eval 调用、不安全的正则表达式、硬编码密钥、SQL 注入风险等常见的安全反模式。这种从”依赖安全”到”代码安全”的跨越,是 Bumblebee 最独特也最实用的价值。
Bumblebee 还有一个”持续监控”模式,可以以后台进程的方式运行,监控文件变化。当你 npm install 一个新包或者修改了某个配置文件时,它会自动触发增量扫描,把新引入的风险实时告诉开发者。这种”左移”到开发阶段的安全实践,比在 CI/CD 阶段才发现问题要高效得多——因为在本地修复一个漏洞的成本,远远低于在 PR 被阻塞后修复的成本。
当然 Bumblebee 也不是万能的。它不是一个运行时的安全监控工具,不能替代 WAF、RASP 或者入侵检测系统。它的定位是”开发阶段的安全质检员”,而不是”生产阶段的安全保镖”。两者结合起来,才能构成一个完整的安全防护体系。
总的来说,对于 2026 年的开发者来说,Bumblebee 应该成为你工具箱里的常客。它免费、开源、一键安装、覆盖面广,是软件供应链安全的第一道防线。项目地址:https://github.com/perplexity/bumblebee
现在就去给你的项目做个”全身体检”吧,人每年都要体检,代码也是!
安全左移不等于”安全焦虑”
聊了这么多安全扫描,最后我想说几句心里话。我发现很多开发者在了解了供应链安全威胁之后,会陷入一种”安全焦虑”的状态——看每个依赖都像有漏洞,装每个包都像在给项目埋雷。这种焦虑其实是没必要的。
软件供应链安全的核心原则不是”零风险”,而是”风险管理”。你不可能把每个依赖都审计一遍源码,也不可能所有包都用经过安全认证的版本。实际的做法是根据风险等级做分级管理:对于核心业务依赖(比如认证库、加密库、HTTP 框架),必须使用经过安全审计的最新版本,并且配置自动扫描和告警;对于辅助性依赖(比如格式化工具、日志库、测试框架),保持版本更新即可,不需要投入过多精力;对于边缘依赖(比如 Demo 项目里的示例插件、个人项目的工具包),可以适当放宽要求,但要在生产部署前做一次全面扫描。
另外我还想强调一点——安全工具本身也会带来安全风险。不要盲目信任任何一个安全扫描工具的输出,包括 Bumblebee。安全工具也可能误报、漏报,甚至本身含有漏洞。好的做法是把多个安全工具的结果交叉验证:Bumblebee 扫描出的漏洞用 Trivy 和 OSV-Scanner 做二次确认,有分歧的输出再人工审查。虽然听起来麻烦,但真正关键的漏洞值得你花这个时间。
最后分享一个我自己的习惯:每周一早上花十五分钟跑一次全量安全扫描。听起来很繁琐,但真正做起来之后你就会发现,大多数时候扫描结果都是”一切正常”,这种”一切正常”的确认感其实是很令人安心的。而且一旦养成了习惯,你会在日常开发中更自然地写出安全的代码——因为你知道周五的扫描结果会送到团队群里。有时候一点点的”社会压力”反而是最好的安全培训。
安全不是终点,而是持续的过程
聊到这儿,我觉得有必要强调一个容易被忽视的观点:安全不是一个”一次性工程”,而是持续的过程。很多人把安全扫描当成”上线前做一次就行”的事情,这是非常危险的想法。因为软件依赖是动态的——你上个月扫描没问题的依赖,这个月可能就爆出了新的 CVE。事实上,NVD 数据库每周新增的 CVE 数量在 2026 年达到了平均每周 500 个以上。你今天安全的项目,明天可能就不安全了。
所以安全工具的真正价值不在于”上线前扫一次”,而在于”持续监控、自动告警”。这也是为什么我推荐把 Bumblebee 集成到 CI/CD 流水线中,并且设置定时任务每天自动扫描。配合通知机制(比如钉钉或企业微信机器人),一旦发现新的高危漏洞,团队能第一时间收到告警并开始修复。把安全嵌入到日常开发流程中,而不是把它当作上线前的”最后一道关卡”。
另外我还想提醒大家注意一点:不要忽视文档和配置中的敏感信息泄露。很多安全事件不是因为代码漏洞,而是因为开发者在配置文件、README 或者代码注释中不小心留下了 API Key、数据库密码或者内网地址。Bumblebee 的深度扫描模式可以检测这类敏感信息泄露,GitHub 的 secret scanning 也能做类似的事情。建议在 git 提交前配置 pre-commit hook,自动扫描是否有敏感信息被提交到版本控制中。这个习惯一旦养成,可以避免很多尴尬的”把密码推到公开仓库”的惨案。
最后,推荐每个团队都定期做一次”安全复盘”——回顾过去一个月发现了哪些安全问题、修复了哪些漏洞、有没有新的攻击手法需要关注。这不需要很长时间,但能让团队保持对安全问题的敏感度。安全不是一个人的事,而是整个团队的责任。
补充阅读
供应链安全是一个持续演进的话题。随着 MCP 协议和 AI Agent 的普及,攻击面只会越来越广。建议大家定期关注 Perplexity 的 Bumblebee 项目更新,以及 GitHub 的 Security 板块发布的安全公告。同时也可以关注一些安全社区的动态,比如 OWASP 的供应链安全项目。安全领域的知识更新非常快,保持对最新威胁和防御手段的了解,是一个负责任的技术人应有的职业素养。信息安全不是可有可无的附加项,而是每个开发者职业生涯中必须认真对待的核心能力。花时间了解安全知识,培养安全编码的习惯,从长远来看是对自己、对团队、对用户最好的投资。记住一句老话:安全不是成本,而是竞争力。一个能让客户放心的团队,在市场上永远比竞争对手多一张王牌。从现在开始,把安全嵌入到你每一天的开发工作中去,让安全成为你的习惯,而不是负担。安全第一不是一句口号,而是需要每一个开发者用行动去践行的承诺。