0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サプライチェーン攻撃と戦う、Perplexity 製のセキュリティスキャンツール 『Bumblebee』

0
Posted at

はじめに

こんにちは!今回は、Perplexity 社がオープンソースとして 2026 年 5 月 22 日 に公開したセキュリティスキャンツール Bumblebee についてです。

リリースドキュメント(概要・概念)
https://www.perplexity.ai/hub/blog/perplexity-is-open-sourcing-bumblebee

GitHub(インストール方法など)
https://github.com/perplexityai/bumblebee

最近のサプライチェーン攻撃に対抗する、AI時代のセキュリティ監査ツールです。
現代のNortonのようなものですが、静的解析のみを対象としています。

Bumblebee とは?

一言で言うと、「開発者のマシン(macOS / Linux 限定)に、危険なパッケージ、拡張機能、AIツールの設定がないか」を高速かつ安全に調べるためのツールです。

- 軽量・高速: Go 言語で作られている & 外部依存のない単一のバイナリとして動作する
  • 「読み取り専用(Read-only)」: npm や pip などのパッケージマネージャーを介さない。別パッケージのインストールなし。コマンド実行なし。ネットワーク通信なし。マシン内にあるメタデータ(ロックファイルや設定マニフェストなど)を直接「読み取るだけ」で解析する

注意点としては、

  • 自分でブラックリスト(カタログ)を作る必要があります。スキャンツール自体には何を脅威とするかのリストは含まれていません

スキャンできるもの4つ

開発者のPC内の以下の4つのカテゴリーの設定ファイルを自動的に探索・解析します。

1. 言語パッケージマネージャーの lock ファイル

npm, pnpm, Yarn, Bun, PyPI (Python), Go modules, RubyGems など。

検知できる例: https://tanstack.com/blog/npm-supply-chain-compromise-postmortem

2. AIエージェントの設定

MCPのJSONファイル(claude_desktop_config.json や cline_mcp_settings.json など)をチェック。

3. コードエディタの拡張機能

VS Code、Cursor、Windsurf などの拡張機能フォルダや設定。

検知できる例: https://nx.dev/blog/nx-console-v18-95-0-postmortem

4. ブラウザの拡張機能

Chrome、Edge、Brave、Arc、Firefoxなどの拡張機能のメタデータ。

インストール手順

前提条件: Go 1.25 以降が必須

# インストールする
go install github.com/perplexityai/bumblebee/cmd/bumblebee@v0.1.1

# or

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

(私は、最近はなんでも Pin 留めされたバージョンを使うようにしています)

# インストールできたか動作チェック(モックが走るので実際のセキュリティチェックはされません)
bumblebee selftest

使い方

Bumblebee を動かす上で、もっとも重要な概念が「Exposure Catalog」(ブラックリストのようなもの)です。

Bumblebee は単体だと、「PCの中のパッケージをひたすらリストアップする(棚卸し機能)」として動きます。

そこに脅威のあるリストを並べた、カタログ(JSON ファイル)を渡すことで、初めて「危険なものを検知するツール」へと切り替わります。

Perplexity が公開しているものもあります。
https://github.com/perplexityai/bumblebee/tree/main/threat_intel

このリストをベースに改良を加えるのがいいと思います。
個人であればこれだけで十分かもしれないです。(今後もメンテナンスされるのかは分からないですが)

公開されているカタログを使ってとりあえずスキャンしてみる

上で紹介した、Perplexity の カタログを指定して実行してみます。

# 最新の脅威リストが含まれる公式リポジトリを Clone
git clone https://github.com/perplexityai/bumblebee.git

# カタログを指定してスキャンを実行
bumblebee scan --exposure-catalog /<path-to-file>/bumblebee/threat_intel
# `findings_emitted` を見れば、脅威がいくつ見つかったかみることができます

以下は、実際の実行ログの抜粋です。

{"record_type":"diagnostic","...","level":"info","message":"default roots: 23 present..."}
{"record_type":"diagnostic","...","level":"warn","path":"/Users/<username>/.gemini/antigravity/mcp_config.json","message":"parse MCP config: unexpected end of JSON input"}
{"record_type":"diagnostic","...","level":"info","message":"scan complete: profile=baseline status=complete files_considered=481061 records=54926 findings=0 suppressed=0 ... duration=9.521839083s"}

わずか 9.5秒 で、48万以上のファイルを走査し、5万件以上のレコードを処理しています。

findings=0 となっており、現在の環境に既知の脅威となるパッケージが存在しないことが、一目で分かります。

(Antigravity の MCP ファイルが壊れていることもバレています。)

ユースケースに応じた4つの実行モード

上記レポジトリの README にもありますが、4つのユースケースが紹介されています。

1. 普段の棚卸し(Baseline)

OSごとにあらかじめ定義された「標準的な場所」だけを素早くスキャンし、PC内の全パッケージ一覧をファイルに書き出します。

bumblebee scan --profile baseline > inventory.ndjson

2. 日々のプロジェクト監視(Project)

自分が開発しているソースコードのフォルダ(例:$HOME/code)に絞って、依存ライブラリに変なものが混ざっていないか自動巡回させます。これを Daily で実行するのが良さそうです。

bumblebee scan --profile project \
  --root "$HOME/code" \
  --root "$HOME/Developer"

3. 特定の言語への絞り込み

JavaScript/TypeScriptやPython、Goの環境だけをピンポイントで調査したいときにフラグで限定できます。

bumblebee scan --profile baseline \
  --ecosystem npm,pypi \
  --ecosystem go

4. 緊急時の徹底調査(Deep)

「世間で大きな攻撃が起きた!」という緊急時に、ユーザーのホームディレクトリの奥深くまで徹底的にスキャンします。

bumblebee scan --profile deep \
  --root "$HOME" \
  --exposure-catalog ./catalog.json \
  --max-duration 10m

最後に

ユースケースとしては、チーム開発をしている場合が多いかなと思いました。

一人一人にマニュアルでチェックしてもらうのは難しいので…

「カタログを自分たちで用意・共有 -> それを利用して確実のローカルで、日次にコマンドを実行」というフローで、忙しい中でも全員のローカルPCの安全性を確保するみたいな使い方になるかなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?