npmで配布されているパスワードマネージャー「Bitwarden」のCLIツールが、2026年4月22日に一時的にマルウェア入りのバージョンへすり替えられました。攻撃者はBitwardenのCI/CDパイプラインに侵入し、開発者の認証情報を盗む不正パッケージを公開しました。

この記事でわかること:

  • 攻撃の経路(CheckmarxのインフラがBitwardenの公開パイプラインを汚染した経緯)
  • マルウェアが盗む認証情報の種類
  • 影響を受けるユーザーの確認方法と対処手順

何が起きたか

@bitwarden/cli@2026.4.0 というバージョンが2026年4月22日17時22分(ET)ごろnpmに公開されました。このバージョンはBitwarden公式のリリースではなく、攻撃者が仕込んだマルウェア入りのパッケージです。Bitwardenはおよそ93分後に問題を検知し、対象バージョンをdeprecated(非推奨)に設定して封じ込めました。

Bitwardenのコミュニティフォーラムの公式声明によると、影響を受けたのはnpm経由でこのバージョンをインストールした334ユーザーのみです。エンドユーザーの保管庫データへのアクセスはなく、本番環境のシステムへの侵害も確認されていません。

Checkmarxインフラが起点になった

この攻撃は「Checkmarxサプライチェーンキャンペーン」と呼ばれる一連の攻撃の一部です。セキュリティ企業CheckmarxのDockerイメージとVS Code拡張機能が先に侵害されており、そこで得たアクセスがBitwardenのCI/CDパイプラインへの侵入に転用された、とセキュリティ研究者は分析しています。

BitwardenのGitHubリポジトリは checkmarx/ast-github-action というGitHub Actionsを使用しており、このアクションが侵害されたことでBitwardenの公開ワークフロー(publish-ci.yml)も汚染されました。コードレビューを通過した正規のコードには問題がなくても、パッケージを公開するCI/CDパイプライン自体が侵入口になった点が、今回の攻撃の本質です。

マルウェアの動作

Aikidoの分析によると、悪意のあるパッケージには preinstall フックが仕込まれており、npm install 実行時にユーザー操作なしで自動的に起動します。

Stage 1(bw_setup.js): 実行環境のOSとアーキテクチャを検出し、JavaScriptランタイム「Bun」をGitHubから直接ダウンロードして、第2フェーズのペイロードを実行します。

Stage 2(bw1.js): 10MBの高度に難読化されたペイロードです。資格情報の収集と自己拡散の両機能を持ちます。コード内部に「Shai-Hulud: The Third Coming」という文字列が埋め込まれており、過去に発生したShai-Hulud名義の攻撃キャンペーンとの関連が指摘されています。

C2サーバーのドメインは audit.checkmarx[.]cx です。.cx はクリスマス島のTLDであり、正規のCheckmarxドメイン(.com)とは別物です。ファイアウォールルールがあれば即座にブロックしてください。

盗まれる認証情報の種類

マルウェアがスキャンする対象は開発者が日常的に使うファイルばかりです。

  • SSHプライベートキー(~/.ssh/id*
  • AWS認証情報(~/.aws/credentials
  • GCP認証情報(~/.config/gcloud/credentials.db
  • npmの認証トークン(~/.npmrc
  • Claude Codeの認証トークン(~/.claude.json
  • Claude CodeのMCPサーバー設定(~/.claude/mcp.json
  • KiroのMCPサーバー設定(~/.kiro/settings/mcp.json
  • Gitリモート情報と認証情報(.git/config.git-credentials
  • プロジェクトの環境変数(.env
  • シェル履歴(~/.bash_history~/.zsh_history

ローカルファイルに加え、マシンに設定されているクラウド認証情報を利用してAWS SSM Parameter Store、AWS Secrets Manager、Azure Key Vault、GCP Secret Managerからシークレットを直接取得する機能も持っています。CI実行環境でこのパッケージを動かした場合、シークレット管理基盤全体が流出する可能性があります。

また、盗んだデータは被害者自身のGitHubアカウントに公開リポジトリを作成して外部に送り出す「ワーム型」の動作が確認されています。組織のメンバーでない場合、GitHubトークンも公開コミットとして書き出される仕様です。

対処手順

影響を受けるのは、2026年4月22日17時22分〜19時30分(ET)の間にnpm経由で @bitwarden/cli@2026.4.0 をインストールしたユーザーに限られます。スナップパッケージや公式バイナリ配布経路は影響を受けていません。

インストールしたかどうかを確認するには次のコマンドを実行してください。

npm list -g @bitwarden/cli

バージョンが 2026.4.0 と表示された場合は、以下の手順で対処します。

# アンインストール
npm uninstall -g @bitwarden/cli

# キャッシュを消去
npm cache clean --force

# インストールスクリプトを一時的に無効化(クリーンアップ中の予防措置)
npm config set ignore-scripts true

# クリーンな最新版をインストール
npm install -g @bitwarden/cli@2026.4.1

インストール後は npm config set ignore-scripts false でスクリプトの設定を元に戻すことを忘れずに。

対処後は、マシン上のすべてのAPIトークン・SSHキー・クラウド認証情報のローテーションを行ってください。また、GitHubの活動履歴とCIワークフローに不審な変更がないか確認することも必要です。

今回の攻撃が示すリスク

CI/CDパイプラインそのものが攻撃の起点になるケースが続いています。コードレビューがどれだけ厳格でも、パッケージを公開するワークフローが侵害されれば悪意のあるコードを正規の名前で配布できます。

Bitwardenのコミュニティでは、対策として以下の方針が提案されています。

  • npmのOIDC公開にpublish環境を設定し、特定のリリースブランチに限定する
  • リリースブランチに対してプルリクエストレビューを必須にする
  • publish環境に手動承認ステップを追加する

外部のGitHub Actionsを利用する場合は、そのアクション自体が侵害されるリスクも考慮する必要があります。今回の攻撃はCheckmarxというセキュリティ企業のアクションが踏み台になった点が象徴的で、信頼できる組織のツールであっても無条件に安全とは言えません。

CVEはBitwarden CLI 2026.4.0に対して申請中です。詳細な事後報告が公開され次第、追加情報が出てくる見込みです。