2024年4月22日、Bitwardenの公式CLI(コマンドラインインターフェース)を装った悪意のあるバージョンが、npmレジストリ上で@bitwarden/[email protected]という公式パッケージ名で公開された。
この悪意のあるパッケージは、公開からわずか93分間でnpm経由でインストールされたユーザーのシステムに侵入し、正規のCLIの代わりにバックドア付きの代替ツールを実行させた。Bitwardenは直ちにパッケージを削除し、公式声明を発表。ユーザーのパスワード管理データ(vault)へのアクセスや、生産システムの侵害は確認されなかったとしている。
攻撃の仕組みと狙われた認証情報
セキュリティ調査会社JFrogの分析によると、この悪意のあるパッケージは、インストール時と実行時に攻撃を仕掛ける仕組みだった。具体的には、preinstallフックとbwバイナリのエントリポイントを改ざんし、Bunランタイムをダウンロードして難読化されたペイロードを実行していた。
攻撃者の主な狙いは、Bitwardenのvaultデータそのものではなく、以下のような開発・運用インフラに関わる機密情報だった。
| 対象データ/認証情報 | 主な格納場所 | 運用上の重要性 |
|---|---|---|
| GitHubトークン | 開発者PC、ローカル設定、CI環境 | リポジトリへのアクセス、ワークフローの悪用、機密情報の列挙、自動化を通じた横展開が可能 |
| npmトークン | ローカル設定、リリース環境 | 悪意のあるパッケージの公開やリリースフローの改ざんが可能 |
| SSH鍵 | 開発者PC、ビルドホスト | サーバー、内部リポジトリ、インフラへのアクセスが可能 |
| シェル履歴 | ローカルPC | ペーストされた機密情報、内部ホスト名、ワークフローの詳細が漏洩する可能性 |
| AWS認証情報 | ローカル設定ファイル、環境変数、CIシークレット | クラウドワークロード、ストレージ、デプロイメントシステムへのアクセスが可能 |
| GCP認証情報 | ローカル設定ファイル、環境変数、CIシークレット | クラウドプロジェクト、サービス、自動化パイプラインへのアクセスが可能 |
| Azure認証情報 | ローカル設定ファイル、環境変数、CIシークレット | クラウドインフラ、IDシステム、デプロイメントパスへのアクセスが可能 |
| GitHub Actionsシークレット | CI/CD環境 | 自動化、ビルド出力、デプロイメント、下流の機密情報へのアクセスが可能 |
| AIツール用設定ファイル | プロジェクトディレクトリ、ローカル開発環境 | APIキー、内部エンドポイント、モデル設定、関連する機密情報が漏洩する可能性 |
なぜBitwarden CLIが狙われたのか?
Bitwardenは5万社以上の企業と1000万人以上のユーザーに利用されており、そのCLIは「強力でフル機能のツール」として紹介されている。特に、環境変数を用いた自動認証に対応しており、CI/CDパイプラインなどの自動化ワークフローで広く利用されている。
Bitwardenの公式ドキュメントでは、npmを「最も簡単で推奨されるインストール方法」としており、多くのユーザーがnpm経由でCLIをインストールしている。このため、高い特権を持つ開発・運用環境の機密情報が保管されている場所に、このCLIがインストールされるという、リスクの高い状況が生まれていた。
攻撃の背景とセキュリティ業界の見解
セキュリティ企業Socketによると、この攻撃はBitwardenのCI/CDパイプライン内でGitHub Actionsが侵害されたことが原因と見られ、Checkmarxの研究者が追跡していたサプライチェーン攻撃の一環と一致しているという。Bitwardenもこの攻撃がCheckmarxによるサプライチェーン攻撃キャンペーンに関連していることを確認している。
「npmの信頼できる公開モデルは、まさにこの種のリスクに対処するために設計されたものだ。長期間にわたるnpm公開トークンに代わって、OIDCベースのCI/CD認証を導入することで、このリスクを軽減できる」
— セキュリティ専門家
今後の対策とユーザーへの注意点
- npm経由でのCLIインストールは避ける:公式サイトから直接ダウンロードするか、信頼できるパッケージマネージャーを使用する。
- CI/CDパイプラインのセキュリティ強化:GitHub Actionsなどの認証情報は定期的にローテーションし、OIDCベースの認証を導入する。
- ローカル環境の機密情報管理:シェル履歴や一時ファイルに機密情報が残らないよう注意し、定期的にクリーニングを行う。
- 監視とログの確認:不審なアクセスや実行コマンドがないか、ログを定期的に確認する。
- Bitwarden CLIのアップデート:最新バージョンがリリースされた場合は、公式ソースから確実に入手し、インストールする。