Bumblebee 入門 — Perplexity製サプライチェーンスキャナでnpm・PyPI・MCP設定の脅威を可視化する
Bumblebee は Perplexity AI が2026年5月にオープンソース化した、サプライチェーンスキャナです。npm や PyPI のパッケージだけでなく、AIエージェントが参照する MCP 設定ファイルまで読み取り専用でスキャンできる点が特徴です。本記事ではインストールから実務での CI 組み込み、既存ツールとの比較検証まで解説します。
Bumblebee とは — 読み取り専用のサプライチェーンスキャナ
Bumblebee は「あるセキュリティ勧告が特定のパッケージを指摘したとき、自社のどの開発マシンがそれを保有しているか」という問いに答えるために設計されたインベントリスキャナです。npm ls や pip list のようにパッケージマネージャを実行するのではなく、package-lock.json や .dist-info などのメタデータファイルを直接読み取ります。
この「read-only」な設計には明確な理由があります。侵害された可能性のある環境でパッケージマネージャや疑わしいコードを実行すると、それ自体が攻撃のトリガーになりかねません。Bumblebee は静的ファイルの解析のみで完結するため、悪意のあるインストールスクリプトを誤って実行するリスクがありません。
Go 製で標準ライブラリのみに依存しており、Apache License 2.0 で公開されています。対応 OS は macOS と Linux です。
インストールとクイックスタート
Go 1.25 以上がインストールされていれば、コマンド1つで導入できます。
go install github.com/perplexityai/bumblebee/cmd/bumblebee@latest
特定バージョンに固定したい場合はタグを指定します。
go install github.com/perplexityai/bumblebee/cmd/bumblebee@v0.1.1
インストール後は組み込みのフィクスチャに対してスモークテストを実行し、正しく動作するか確認できます。
bumblebee selftest
最初の一歩として、ホームディレクトリ配下を軽量スキャンしてみます。
bumblebee scan --profile baseline > inventory.ndjson
出力は1行1レコードの NDJSON 形式です。パッケージレコードの例は次のようになります。
{"type":"package","ecosystem":"npm","name":"example-pkg","version":"1.2.3","source":"package-lock.json","confidence":"high"}
confidence フィールドは high(正規メタデータ由来)・medium(信頼性は高いが不完全)・low(参照のみ)の3段階で、検出結果の信頼度を判断する材料になります。
対応エコシステムとスキャンプロファイルの使い分け
Bumblebee は npm 系(npm/Yarn/pnpm/Bun)、PyPI、Go モジュール、RubyGems、Composer、MCP 設定、エージェントスキル、エディタ拡張、ブラウザ拡張、Homebrew まで幅広いエコシステムをカバーします。
# 特定のエコシステムだけに絞ってスキャン
bumblebee scan --profile baseline --ecosystem npm,pypi
スキャンプロファイルは用途に応じて3段階が用意されています。
| プロファイル | 想定用途 | 対象パス |
|---|---|---|
baseline | 定期実行のグローバルインベントリ収集 | 共通のパッケージルートとツール |
project | 開発ディレクトリの継続的なチェック | ~/code など事前設定済みのディレクトリ |
deep | インシデント対応・オンデマンド精査 | --root で明示指定したパス |
baseline と project はベアなホームルート全体を対象にできないよう制限されており、広範囲を精査したい場合は deep プロファイルで --root を明示する必要があります。
# 特定パス配下を深く精査する場合
bumblebee scan --profile deep --root "$HOME/projects/critical-app"
現在解決されているスキャンルートを事前に確認したい場合は roots サブコマンドが便利です。
bumblebee roots --profile baseline
MCP 設定ファイルスキャン — AIエージェント時代の新しい攻撃面
Bumblebee が他のサプライチェーンスキャナと一線を画すのが、MCP(Model Context Protocol)設定ファイルを攻撃対象領域として扱っている点です。mcp.json・claude_desktop_config.json・~/.claude.json など複数の設定ファイル形式を解析し、AIエージェントが接続を許可されている外部サーバーの一覧を抽出します。
MCP 設定には環境変数やトークンを渡す env ブロックが含まれることが多く、悪意のあるコネクタが紛れ込むと、AIエージェント経由で認証情報の漏洩や意図しないコマンド実行につながる恐れがあります。Bumblebee はこの env ブロックをパースしてサーバーのインベントリは抽出しますが、値そのものは出力レコードに含めない設計になっており、スキャン結果を共有・保存しても機密情報が漏れない配慮がされています。
# MCP 設定だけを対象にスキャン
bumblebee scan --profile project --ecosystem mcp
なお、v0.1 時点では JSON 形式以外の MCP 設定(Codex の config.toml など)には未対応という制限があるため、利用しているエージェントの設定形式が JSON かどうかは事前に確認しておくとよいでしょう。
実務での活用パターンと類似ツールとの比較検証
Exposure Catalog で既知の脅威と突き合わせる
インベントリを取るだけでなく、既知の侵害パッケージと突き合わせたい場合は Exposure Catalog を使います。エコシステム・パッケージ名・バージョンの完全一致でマッチングするシンプルな JSON 形式です。
{
"schema_version": "0.2.0",
"entries": [
{
"id": "advisory-2026-0042",
"ecosystem": "npm",
"package": "example-pkg",
"versions": ["1.2.3", "*"]
}
]
}
# 脅威インテリジェンスと突き合わせて検出結果だけを出力
bumblebee scan --profile deep --root "$HOME" \
--exposure-catalog ./threat_intel/ \
--findings-only
複数のカタログファイルはディレクトリ単位でまとめて指定でき、社内で収集した脅威情報と OSS で公開されている情報源を統合して運用できます。
CI に組み込んで定点観測する
baseline プロファイルは軽量なので、CI パイプラインやスケジュール実行に向いています。
# .github/workflows/bumblebee-scan.yml
name: Supply Chain Scan
on:
schedule:
- cron: "0 3 * * 1"
workflow_dispatch:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
- run: go install github.com/perplexityai/bumblebee/cmd/bumblebee@latest
- run: bumblebee scan --profile project --exposure-catalog ./threat_intel/ --findings-only > findings.ndjson
- uses: actions/upload-artifact@v4
with:
name: bumblebee-findings
path: findings.ndjson
npm audit / Socket.dev / OSV-Scanner との違い
既存ツールと比較すると、Bumblebee の立ち位置がより明確になります。
| ツール | 動作方式 | 主な対象 | 特徴 |
|---|---|---|---|
npm audit | パッケージマネージャ経由で脆弱性DB照会 | npm のみ | 単一エコシステムの脆弱性チェックに特化 |
| OSV-Scanner | ロックファイル解析+OSV DB照会 | 多エコシステム対応 | 既知CVE/脆弱性の網羅的検出が得意 |
| Socket.dev | パッケージの静的解析+振る舞い検知(SaaS) | npm/PyPI 等 | 新規公開パッケージのリアルタイム監視に強い |
| Bumblebee | 読み取り専用のメタデータ収集+任意のカタログ照合 | npm/PyPI/Go/MCP/拡張機能等 | どのマシンが該当パッケージを保有しているかの横断棚卸しに強い |
npm audit や OSV-Scanner が「このプロジェクトに脆弱なパッケージが含まれているか」を答えるのに対し、Bumblebee は「組織内のどの開発マシンが特定のパッケージ・拡張機能・MCP接続を保有しているか」を横断的に棚卸しすることに主眼を置いています。侵害が発覚した際のインシデント対応や、AIエージェント導入に伴う MCP 接続の可視化など、他ツールではカバーしにくい領域を補完する位置づけで使うのが実務的です。
まとめ
| 項目 | ポイント |
|---|---|
| 設計思想 | パッケージマネージャを実行しない read-only スキャンで安全性を確保 |
| 対応範囲 | npm/PyPI/Go/RubyGems/Composer に加え MCP 設定・エディタ拡張・ブラウザ拡張まで |
| スキャンプロファイル | baseline(定期棚卸し)/ project(開発ディレクトリ)/ deep(インシデント対応) |
| MCP 対応 | env ブロックの値を出力しない安全設計でAIエージェントの接続先を可視化 |
| 実務活用 | Exposure Catalog による既知脅威との突き合わせ、CI への定期実行組み込み |
| 既存ツールとの違い | 脆弱性DB照会よりも「どのマシンが何を保有しているか」の横断棚卸しに強み |
AIエージェントが開発フローに深く組み込まれる中で、MCP 設定という新しい攻撃面まで一括で棚卸しできる Bumblebee は、既存のサプライチェーンセキュリティツールを補完する選択肢として一度試す価値があります。まずは baseline プロファイルで自分の開発環境を可視化するところから始めてみてください。