Last Updated on 2025-05-11 07:36 by admin
サイバーセキュリティ研究者が、人気のAI搭載コードエディタ「Cursor」のmacOS版を標的とする3つの悪意あるnpmパッケージ「sw-cur」「sw-cur1」「aiide-cur」を発見した。
これらのパッケージは「最も安価なCursor API」を提供すると偽り、ユーザー認証情報を盗み出し、Cursorのmain.jsファイルを上書きして自動更新を無効化する機能を持つ。
問題のパッケージは、2025年2月14日に「aiide」というユーザーによって公開された「aiide-cur」と、その前日に「gtr2018」というエイリアスの脅威アクターによって公開された「sw-cur」「sw-cur1」である。これらは合計で3,200回以上ダウンロードされている。
これらのパッケージがインストールされると、ユーザーのCursor認証情報を収集し、リモートサーバー(「t.sw2031[.]com」または「api.aiide[.]xyz」)から悪意あるコードを取得して正規のCursorコードと置き換える。特に「sw-cur」はCursorの自動更新機能を無効化し、すべてのCursorプロセスを終了させる。
セキュリティ企業Socketの研究者Kirill Boychenkoによると、これは脅威アクターがnpmパッケージを使って開発者システム上の正規ソフトウェアに悪意ある変更を加える新たな傾向を示している。この手法の特徴は、悪質なライブラリが削除された後もマルウェアが持続することである。
また、同様の手法を用いた別の攻撃として、「pumptoolforvolumeandcomment」(625回ダウンロード)と「debugdogs」(119回ダウンロード)という2つのnpmパッケージも発見された。これらは暗号通貨プラットフォーム「BullX」に関連する暗号通貨キーやウォレットファイル、取引データを窃取するものである。
さらに、人気パッケージ「rand-user-agent」も、サプライチェーン攻撃によって侵害された。セキュリティ企業Aikidoは2025年5月5日に、このパッケージのバージョン1.0.110、2.0.83、2.0.84に悪意あるコードが注入されていることを発見した。このコードはリモートアクセストロイの木馬(RAT)を隠蔽するものだった。
パッケージを管理するWebScrapingAPIによると、攻撃者は二要素認証で保護されていない古い自動化トークンを取得し、悪意あるパッケージバージョンを公開したという。影響を受けたユーザーは最後の安全なバージョン(2.0.82)にダウングレードすることが推奨されているが、これだけではシステムからマルウェアは削除されない。
References:
Malicious npm Packages Infect 3,200+ Cursor Users With Backdoor, Steal Credentials
【編集部解説】
今回の事案は、開発者コミュニティに深刻な影響を与える可能性のあるサプライチェーン攻撃の新たな手法を示しています。複数のセキュリティ企業の報告を総合すると、この攻撃は単なるマルウェア配布を超えた巧妙な手法を用いていることが分かります。
特に注目すべきは、攻撃者がAI開発ツールの人気に便乗している点です。Cursorは開発者の間で急速に普及している独自のIDE(統合開発環境)で、AIの機能をコーディング環境に直接統合し、プレミアム言語モデルへの階層化されたアクセスを提供しています。「最も安価なCursor API」という謳い文句は、AIモデル利用料の節約を望む開発者の関心を巧みに利用しています。
Socket社の詳細な分析によれば、これらの悪意あるパッケージは単にマルウェアを配布するだけでなく、正規アプリケーションのコードを書き換えるという高度な手法を採用しています。これは「パッチベースの侵害」と呼ばれる新しい攻撃手法で、悪意あるパッケージを削除しても感染は継続するという特徴があります。
さらに深刻なのは、開発環境そのものが侵害されることの影響です。開発者のIDEが侵害されると、そこで作成されるすべてのコードが危険にさらされます。企業環境やオープンソースプロジェクトでは、この脅威はさらに拡大し、独自のソースコードの漏洩、ビルドへの悪意ある依存関係の導入、CI/CDパイプライン内での横方向の移動の足がかりとなる可能性があります。
一方、rand-user-agentパッケージの侵害事例からは、人気があるものの更新頻度の低いパッケージが特に狙われやすいことが分かります。このパッケージは多くの開発者に利用されており、二要素認証で保護されていない古い自動化トークンが攻撃の入り口となりました。
このような攻撃から身を守るためには、開発者は使用するパッケージの信頼性を常に確認し、不審な動作(postinstallスクリプトの実行、node_modules外のファイル変更、予期しないネットワーク通信など)に注意を払う必要があります。また、バージョン固定、リアルタイムの依存関係スキャン、重要な依存関係のファイル整合性監視などの対策も効果的です。
今回の事例は、AIツールの普及に伴い、それを標的とした攻撃も高度化していることを示しています。特にAI開発ツールは、コードの生成や修正に直接関わるため、侵害された場合の影響は従来のツールよりも大きくなる可能性があります。
開発者コミュニティとセキュリティ企業は、このような新たな脅威に対応するため、より強固なセキュリティ対策と迅速な情報共有の仕組みを構築していく必要があるでしょう。特に人気の高いパッケージやAI関連ツールの開発者は、二要素認証の徹底やトークン管理の強化など、基本的なセキュリティ対策の重要性を再認識すべき時期に来ています。
【用語解説】
npm(Node Package Manager):
JavaScriptの開発環境Node.jsのパッケージ管理システム。開発者が作成したライブラリやツールを共有・再利用するためのプラットフォームである。
サプライチェーン攻撃:
ソフトウェア開発の過程で使用される部品(ライブラリやパッケージなど)を標的とする攻撃手法。正規の配布経路を通じて悪意あるコードを広める。
Socket:
ソフトウェアサプライチェーンのセキュリティを専門とする企業。オープンソースの依存関係に潜む脆弱性やマルウェアを検出するプラットフォームを提供している。
パッチベースの侵害: 今回の攻撃で使用された新しい手法。悪意あるパッケージが、すでにインストールされている正規アプリケーションのコードを書き換えることで攻撃を行う方法。
Cursor:
AI機能をコーディング環境に直接統合した独自のIDE(統合開発環境)。プレミアム言語モデルへの階層化されたアクセスを提供し、リクエストごとに課金される。
【参考リンク】
Cursor公式サイト(外部)
AI搭載コードエディタCursorの公式サイト。ダウンロードやドキュメントが提供されている。
WebScrapingAPI(外部)
今回侵害された「rand-user-agent」パッケージを管理している企業のウェブサイト。
Socket(外部)
今回の脆弱性を発見したセキュリティ企業。オープンソースの依存関係セキュリティを提供。
npm公式サイト(外部)
JavaScriptのパッケージレジストリ。今回問題となったパッケージもここで公開・配布。
【参考動画】
【編集部後記】
開発環境の安全性について、皆さんはどのような対策を取られていますか?今回のような巧妙なサプライチェーン攻撃は、私たち開発者全員に関わる問題です。使用しているパッケージの更新履歴を確認する習慣や、不審な依存関係をチェックするツールの導入など、日々の小さな対策が大きな違いを生み出します。もし気になるセキュリティ対策や、実際に経験したヒヤリハット体験などがあれば、ぜひSNSでシェアしていただけると嬉しいです。開発者コミュニティ全体でこの問題に取り組んでいきましょう。