6 ポイント 投稿者 darjeeling 6 일 전 | 4件のコメント | WhatsAppで共有

JFrogのセキュリティ研究チームは、npmの@bitwarden/cliバージョン2026.4.0がハイジャックされていたことを発見した。正規のBitwardenメタデータとブランディングをそのまま維持しつつ、preinstallスクリプトとbwバイナリのエントリポイントだけを悪性ローダー(bw_setup.js)に置き換えた形だ。

動作方式

インストール時、ローダーはまずBunランタイムをGitHubからダウンロードし、その後で難読化されたJavaScriptペイロード(bw1.js)を実行する。Node.jsではなくBunを使うこと自体が検知回避戦略となっている。

ペイロードは3種類のコレクターを通じて、開発者ワークステーションとCI環境の認証情報を広範囲に収集する。

  • ファイルシステムコレクター: SSHキー(~/.ssh/)、Git認証情報(.git-credentials)、npmトークン(~/.npmrc)、.env、AWS認証情報(~/.aws/credentials)、GCP認証情報(~/.config/gcloud/credentials.db)など
  • シェル/環境コレクター: gh auth tokenコマンドの実行、process.envのスキャンによるGitHub・npmトークンのパターン照合
  • GitHub Actionsコレクター: トークン権限のあるリポジトリにワークフローを注入し、Actionsシークレットまで抽出

特に注目すべき点は、~/.claude.json~/.claude/mcp.json~/.kiro/settings/mcp.jsonなど、AIツールおよびMCP設定ファイルまで収集対象に含まれていることだ。

二重の流出経路

窃取したデータはgzip圧縮後、AES-256-GCM + RSA-OAEPハイブリッド暗号化を経て送信される。

  • 第1経路: audit.checkmarx.cx/v1/telemetryへHTTPS POST(正規のセキュリティサービスを装う)
  • 第2経路(GitHub悪用): 第1経路が失敗した場合、GitHubのコミットメッセージからLongLiveTheResistanceAgainstMachinesというマーカーで二重Base64エンコードされたPATを検索して抽出する。beautifulcastleというマーカーとRSA署名検証により、代替の流出ドメインも動的に復元する。最終的に被害者のGitHubアカウントに新しいリポジトリを作成し、暗号化されたJSONをresults/ディレクトリにアップロードする。

感染判定

内蔵された正規Bitwarden CLIメタデータは2026.3.0なのに対し、パッケージルートは2026.4.0となっており、正規のビルドパイプラインではなく外部から悪性レイヤーを被せたものと分析されている。

対応方法

当該バージョンのインストール履歴がある場合、そのホスト上のすべての認証情報が流出したものとみなすべきだ。

  • npm uninstall -g @bitwarden/cliおよびキャッシュの削除
  • GitHub PAT、npmトークン、AWSアクセスキーの全面ローテーション
  • Azure Key Vault / GCP Secret Managerの監査ログ確認
  • GitHub Actionsワークフローで不正な実行履歴がないか点検
  • audit.checkmarx.cxおよび94.154.172.43のネットワーク遮断
  • AIツール設定ファイル(Claude、Kiroなど)の機密情報露出有無を確認

一般的なnpm認証情報スティーラーを超え、サプライチェーン侵害 + 多段階シークレット窃取 + GitHubインフラの武器化を組み合わせた精巧な攻撃だ。

4件のコメント

 
savvykang 6 일 전

> THE MOST TRUSTED PASSWORD MANAGER
> Defend against hackers and data breaches

会社のホームページのタグラインが空虚に見えたので退会しました

 
t7vonn 6 일 전

ゾッとしますね;; 毎日使っていたものですが、運よくHomebrew側は情報を抜き取られなかったんですね。
はあ…… すべての npm のグローバルライブラリは、ひとまず削除するか、pre/postinstall を無効にするかしないといけませんね

 
lamanus 5 일 전

Homebrew は postinstall をデフォルトで無効化し、例外的に許可する方式に変わりました。運が良かったと言うべきか、npm を見ずにリポジトリのタグで更新していたので、今回はこのバージョンを回避できました。最近は npm のクールダウンも入ったので、たとえ npm を見ていても配布はされなかった気がします。

 
sanghunka 6 일 전

うわ、これはかなり衝撃的ですね