6 ポイント 投稿者 darjeeling 2026-04-23 | 5件のコメント | 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インフラの武器化を組み合わせた精巧な攻撃だ。

5件のコメント

 
onlyforyou 2026-04-30

Enpass を使ってみてください。おすすめです。

 
savvykang 2026-04-24

THE MOST TRUSTED PASSWORD MANAGER
Defend against hackers and data breaches

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

 
t7vonn 2026-04-24

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

 
lamanus 2026-04-24

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

 
sanghunka 2026-04-23

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