👁️‍🗨️

緊急警報:Cursorユーザーを狙う悪意のあるnpmパッケージと、その巧妙な手口とは?

に公開

緊急警報:Cursorユーザーを狙う悪意のあるnpmパッケージと、その巧妙な手口とは?

近年、ソフトウェア開発のサプライチェーンを狙った攻撃は増加の一途をたどっており、開発者自身がセキュリティ対策を講じることが不可欠となっています。最近、人気のAI搭載ソースコードエディタ「Cursor」のmacOS版ユーザーを標的とした、巧妙な手口を用いる悪意のあるnpmパッケージが複数発見され、大きな注意を呼んでいます。

本記事では、この事件の詳細、攻撃者の手口、そして私たち開発者が同様の脅威から身を守るために取るべき対策について詳しく解説します。

事件の概要:Cursorユーザーに迫る脅威

サイバーセキュリティ研究者によってフラグが立てられたのは、以下の3つのnpmパッケージです。

  • sw-cur (2,771ダウンロード)
  • sw-cur1 (307ダウンロード)
  • aiide-cur (163ダウンロード)

これらのパッケージは、「最も安価なCursor API」を提供する開発ツールを装い、合計で3,200回以上ダウンロードされていました。特に「aiide-cur」は2025年2月14日に、「sw-cur」と「sw-cur1」はその前日に公開されており、比較的短期間で多くの開発者に影響を与えた可能性があります。

攻撃者の巧妙な手口

これらの悪意のあるパッケージは、単にマルウェアを配布するだけでなく、非常に巧妙な手口で開発者のシステムに侵入し、永続性を確保しようとします。

  1. 認証情報の窃取: インストールされると、まずユーザーがCursorエディタに入力した認証情報を収集します。
  2. ペイロードの取得とコード改ざん: 次に、脅威アクターが管理するリモートサーバー(t.sw2031[.]com または api.aiide[.]xyz)から暗号化されたペイロードを取得します。このペイロードを使い、Cursorエディタの正規のコアファイルであるmain.jsを悪意のあるロジックに置き換えます。
  3. 自動更新の無効化と永続化: さらに、sw-curパッケージはCursorの自動更新機能を無効化し、全てのCursorプロセスを強制終了させます。その後、改ざんされたコードでアプリケーションを再起動することで、脅威アクターによる任意のコード実行を可能にし、バックドアを恒久的に設置しようとします。

新たな脅威:「パッチベースの侵害」

この攻撃の特筆すべき点は、ソフトウェアサプライチェーンセキュリティ企業Socket社が「パッチベースの侵害」と呼ぶ新しい攻撃ベクトルを利用していることです。

従来の攻撃が、単に悪意のあるコードを含むパッケージを配布するのに対し、パッチベースの侵害は、一見無害に見えるnpmパッケージを公開し、それがインストールされた際に、被害者のマシンに既に存在する信頼されたソフトウェア(この場合はCursorエディタ)のコードを直接書き換えます。

この手口により、マルウェアは以下の利点を得ます。

  • 信頼性の継承: 正規のIDEや共有ライブラリといった親プロセス内で動作するため、そのアプリケーションが持つ信頼性を悪用できます。
  • 永続性の向上: 原因となった悪意のあるnpmパッケージが削除された後でも、改ざんされた正規ファイルは残存するため、マルウェアは活動を継続できます。
  • 権限の自動取得: 親アプリケーションが持つAPIトークン、署名キー、外部ネットワークアクセス権限などを自動的に掌握します。

攻撃者は、AI技術への関心の高まりや、AIモデル利用料の低価格化を求める開発者の心理を巧みに利用し、「最も安価なCursor API」といった魅力的な謳い文句でユーザーを誘い込み、静かにバックドアを設置していたのです。

他のnpmパッケージにおける同様の脅威

このCursorを標的とした攻撃は氷山の一角に過ぎません。同様のサプライチェーン攻撃は他のnpmパッケージでも確認されています。

  • BullX関連マルウェア: Socket社は、暗号通貨プラットフォーム「BullX」に関連する認証情報やウォレットファイルを窃取する目的で作成されたpumptoolforvolumeandcommentおよびdebugdogsというnpmパッケージも発見しています。これらのデータはTelegramボット経由で外部に送信されていました。
  • rand-user-agentパッケージの侵害: セキュリティ企業Aikidoの報告によると、正規のnpmパッケージであるrand-user-agentが侵害され、バージョン2.0.83、2.0.84、1.0.110にリモートアクセストロジャン(RAT)を隠蔽するコードが注入されました。このRATは外部サーバーからのコマンドを受け、ファイルのアップロードやシェルコマンドの実行が可能でした。この侵害は、2要素認証で保護されていなかった古い自動化トークンが不正アクセスされたことが原因とされています。

これらの事例は、npmエコシステム全体が巧妙なサプライチェーン攻撃の脅威に晒されていることを示しています。

開発者が取るべき対策

このような巧妙な攻撃から身を守るためには、開発者自身がセキュリティ意識を高め、多層的な防御策を講じる必要があります。

  1. 不審なパッケージの特定:
    • インストール後に不審なスクリプトを実行するパッケージ。
    • node_modulesディレクトリ以外のファイルを変更しようとするパッケージ。
    • 予期しないネットワーク通信を開始するパッケージ。
      これらの挙動を示すパッケージには特に注意が必要です。
  2. 厳格なバージョン管理: 依存関係のバージョンを固定(バージョンピニング)し、意図しないアップデートによるリスクを低減します。
  3. リアルタイムの依存関係スキャン: 開発パイプラインにセキュリティスキャンツールを導入し、既知の脆弱性や悪意のあるパッケージを早期に検出します。
  4. ファイル整合性監視: 特に重要な依存関係やアプリケーションのコアファイルに対して、ファイル整合性監視システムを導入し、不正な改ざんを検知できるようにします。
  5. クリーンインストールの徹底: 万が一、悪意のあるパッケージの影響を受けたと疑われる場合は、関連するソフトウェアの完全なクリーンインストールを実施してください。多くの場合、悪意のあるパッケージを削除するだけでは、システムからマルウェアを完全に除去できないことがあります。
  6. 認証情報の管理強化: APIトークンやパスワードなどの認証情報は厳重に管理し、可能な限り2要素認証(2FA)を有効にしてください。

まとめ:常に警戒を怠らず、安全な開発環境を

今回のCursorを標的としたnpmパッケージの事件は、ソフトウェアサプライチェーン攻撃がますます巧妙化し、開発者の身近なツールにまで及んでいることを改めて浮き彫りにしました。

開発者は、利便性だけでなく、利用するツールやライブラリの安全性にも常に注意を払い、セキュリティ対策を怠らないことが重要です。「最も安い」「簡単」といった言葉に安易に飛びつくことなく、信頼できるソースから提供されるソフトウェアを利用し、不審な挙動には常に警戒心を持つようにしましょう。

安全な開発環境を維持するためには、コミュニティ全体での情報共有と、個々の開発者のセキュリティ意識の向上が不可欠です。この記事が、皆さんのセキュリティ対策の一助となれば幸いです。

参考情報

この記事は、以下の情報を参考に作成しました。

Discussion