悪意あるnpmパッケージが、正規のコマンドラインツールを装いながら、密かに情報窃取マルウェアとリモートアクセス型トロイの木馬(RAT)を展開し、開発者を標的にしている。
このパッケージ、@openclaw-ai/openclawaiはOpenClaw Installerユーティリティを装っているが、実際には多段階のマルウェア攻撃を開始する。
実行されると、認証情報、暗号資産ウォレット、SSH鍵、ブラウザデータ、開発者トークンの窃取を試みる。
「この攻撃は、広範なデータ収集、被害者のシステムパスワードを聞き出すソーシャルエンジニアリングの利用、そして永続化機構とC2インフラの高度さが注目される」と述べたのはJFrogの研究者だ。
GhostClaw攻撃チェーンを詳しく見る
この悪意あるパッケージは、正規の開発者向けユーティリティに見えるよう、入念に設計されていた。
package.jsonの設定は正常に見え、公開されているソースコードには、パッケージをざっと確認する人を安心させるための無害な関数が含まれている。
悪意あるコードはインストールスクリプトに埋め込まれており、セットアップ中に自動実行されるため、攻撃者はすぐに疑われることなく足場を確保できる。
インストール中、postinstallスクリプトが被害者のシステムにパッケージをグローバルにひそかに再インストールし、悪意あるバイナリがシステムのPATHに追加されるようにする。
偽インストーラーと認証情報フィッシングの段階
その後ユーザーがopenclawコマンドを実行すると、難読化されたセットアップスクリプトが起動し、マルウェアの第1段階として動作する。
このスクリプトは、アニメーション付きの進捗バー、ロード中のスピナー、正規ソフトウェアのインストール出力をまねるシステムログメッセージを備えた、説得力のある偽のコマンドラインインストーラー画面を表示する。
偽のインストールが完了したように見えると、プログラムは不正なKeychain認証プロンプトを表示し、ツールを安全に初期化するには管理者権限が必要だとして、ユーザーのシステムパスワードを要求する。
一般的なフィッシングプロンプトとは異なり、このマルウェアはOSの実際の認証機構を使ってパスワード入力を検証する。
これによりプロンプトは本物のシステム要求のように振る舞い、だましの手口がより巧妙になる。
被害者が認証を試みている間、スクリプトは攻撃者が管理するインフラから暗号化された第2段階のペイロードを同時に取得する。
ペイロードは暗号化されたリクエストで送信され、AES-256-GCMを使ってローカルで復号される。
復号されると、コードは一時ファイルに書き込まれ、バックグラウンドプロセスとして実行されるため、インストールが正常に完了したように見える間もマルウェアが動作し続ける。
GhostLoaderが永続化機構をインストール
攻撃の第2段階は、内部ではGhostLoaderと呼ばれており、情報窃取マルウェアと永続的なRATの両方として機能する大規模なJavaScriptバンドルである。
実行後、マルウェアは正規のnpmテレメトリーサービスに見せかけた隠しディレクトリに自身をインストールし、通常の開発者システムの活動に紛れ込む。
永続性を維持するため、マルウェアは.zshrc、.bashrcなどのシェル設定ファイルや関連プロファイルを変更する。
これらの変更により、新しいターミナルセッションを開くたびにマルウェアが自動起動する。Linuxシステムでは、システム再起動後にも確実に再実行されるよう、cronジョブを作成することもある。
マルウェアが開発者の認証情報と機密データを窃取
マルウェアは初回実行時に、開発者のシステムに通常保存されている広範な機密情報を収集する。
これには、macOS KeychainとiCloudキーチェーン、ブラウザの認証情報と保存済み決済データ、暗号資産ウォレットとリカバリーシードフレーズ、SSH秘密鍵、AWS、Azure、GCPのクラウドプロバイダー認証情報、GitHub CLI認証情報やnpm設定ファイルなどの開発者トークンが含まれる。
ユーザーがmacOSのフルディスクアクセスを許可すると、マルウェアは収集能力をさらに拡大する。その場合、Apple Notes、iMessageのチャット履歴、Safariの閲覧データ、Apple Mailのアカウント設定情報も収集できる。
収集されたデータはアーカイブに圧縮され、複数の経路を通じて攻撃者のインフラへ流出する。
これにはC2サーバーへの直接アップロードのほか、Telegramボットやクラウドファイル共有プラットフォームなどの二次的な経路も含まれ、いずれかの流出経路が失敗した場合の冗長性を確保する。
永続的アクセスとブラウザーセッションの乗っ取り
初期のデータ窃取段階を終えると、マルウェアは永続的な監視モードへ移行する。
感染したシステムは攻撃者のC2サーバーと定期的に通信し、命令を受け取るとともに継続的なアクセスを維持する。
攻撃者はそこから、任意のシェルコマンドの実行、システムからのファイル取得、更新されたマルウェアペイロードの展開、あるいはSOCKS5プロキシの有効化を指示できる。これにより、侵害されたマシンを追加のネットワーク活動の中継点として利用できる。
注目すべき機能の1つが、ブラウザーセッションのクローン作成だ。
マルウェアは被害者のブラウザープロファイルをコピーし、Chrome DevTools Protocol経由で攻撃者に接続されたヘッドレスブラウザーを起動する。これにより攻撃者は認証済みセッションを取得し、被害者になりすましてWebサイトやサービスにアクセスできる。
セッションでは既存の認証トークンとCookieが再利用されるため、攻撃者はパスワードを必要とせず、多要素認証(MFA)を迂回することもなく、アカウントにアクセスできる場合が多い。
悪意ある依存関係によるリスクを低減する方法
以下の対策により、組織は悪意ある依存関係が開発システムを侵害し、機密認証情報を漏えいさせるリスクを低減できる。
- 新しい依存関係をインストールする前にパッケージの真正性を確認する。特に正規プロジェクトと似た名前のパッケージについては、検証済みの発行元または信頼できる社内レジストリからインストールする。
- DevSecOpsツール(依存関係スキャンやSCAを含む)を使用し、開発パイプラインに到達する前に、悪意あるパッケージ、疑わしいインストール動作、脆弱な依存関係を検出する。
- npmのpostinstallスクリプトとパッケージのグローバルインストールを、可能な場合は制限または無効化することで、パッケージが隠されたインストール処理を実行したり、悪意あるバイナリをシステムのPATHに配置したりするのを防ぐ。
- 監視対象となる開発者エンドポイントを、予期しないNode.jsプロセス、分離された子プロセス、通常とは異なるネットワーク接続、シェル設定ファイルへの不正な変更など、疑わしい活動がないか監視する。
- 強力な認証と安全な保管方法を徹底するとともに、システムパスワード、SSH鍵、APIトークン、クラウド認証情報をローテーションする。漏えいが疑われる場合は直ちに実施する。
- ネットワーク監視と送信制御を実装し、通常とは異なる外向き接続、大規模なデータ流出の試み、Telegram APIや未知のドメインなど疑わしいインフラとの通信を検出または遮断する。
- 定期的にインシデント対応計画を、ソフトウェアサプライチェーン侵害のシナリオを想定した机上演習によってテストする。
これらの対策を総合的に講じることで、組織はサプライチェーンの脅威に対するレジリエンスを高め、悪意ある依存関係が開発環境に持ち込まれた場合の潜在的な被害範囲を抑えられる。
オープンソース依存関係のリスクが増大
GhostClawのキャンペーンは、攻撃者が開発者エコシステムやオープンソースパッケージレジストリを、企業環境への侵入口として狙う傾向が強まっていることを浮き彫りにしている。
マルウェアを正規の開発ツールに偽装することで、こうした脅威は従来のセキュリティチェックを回避し、機密認証情報、クラウドリソース、内部システムにアクセスできる。
この傾向は、より広範なソフトウェアサプライチェーンセキュリティの重要性を浮き彫りにしており、組織は悪意あるコードから開発パイプラインと依存関係を保護しようとしている。

