約2週間の調査結果を公表

開発支援AIの米Cursorは11月13日(日本時間14日午前10時13分26秒)、10月末に起きたセキュリティ侵害について、調査結果の更新を公式ブログで公表したと公式Xアカウントで告知した。ブログでは、何が起きたかと、同社が取った対応を詳しく説明している。

We’ve published an update on our recent security incident. See a detailed overview of what happened and our remediation steps here: https://t.co/2lf6lRJPlL

訳:先日のセキュリティインシデントについて、続報を公開しました。何が起きたかと、私たちの対処の詳しい概要はこちらをご覧ください。

Cursorは10月29日、自社の拡張機能ストアで米Anthropicの拡張機能「Claude Code」の改ざん版が配られていたと公表していた(初報)。11月13日付のブログによると、その後の約2週間の調査で、攻撃の全体像と影響の範囲が分かった。大半の利用者は影響を受けておらず、影響のあった利用者には、それぞれに当てはまる内容を個別に連絡したという。同社は、今回の侵害には同社が保存し共有したデータ、発行した認証情報、運用するシステムが関わったと説明している。

発端は委託先Fireworksに渡した鍵

ブログによると、攻撃の発端は、Cursorが委託先のFireworksに発行したアクセスキーだった。この鍵はFireworksの側から流出し、攻撃者はそれを使って、Cursorが同社とのデータ共有に使っていた読み取り専用の保管場所からデータを複製した。保管場所にあったのは、主に2025年のコーディングエージェントの作業記録の一部で、プライバシーモードを使っていない利用のうち、モデルの学習に使う許可を得ていたものだった。

作業記録のごく一部には、消し忘れた認証情報が含まれていた。APIの認証情報が流出した顧客は全体の0.01%未満という。攻撃者はこの認証情報を足がかりに、Cursorが使う一部の業務ツール(SaaS)に入り込んだ。そこから、本番に使っていない古いソースコードの保管庫の一部(取引先の連絡先を含むものがあった)、支援窓口のデータとメールのやり取りの一部、製品の利用状況の指標と連絡先、エージェントとの会話の要約の一部、利用者が支援窓口に送った認証情報の一部にアクセスした。

プライバシーモードを使っていない利用者のうち、作業記録が流出したのは0.05%未満だった。Cursorは対象の利用者を特定して個別に通知しており、通知が届いていない利用者のデータは含まれていないとしている。

改ざん版の拡張機能もこの経路で

Cursorの監視の仕組みが不正な活動を見つけ、同社は委託先の鍵を無効にして対応を始めた。認証情報の取り消しと入れ替えを進め、ほかの不正なアクセスを探し、見つけるたびに遮断したという。念のため、証拠が示す範囲を大きく超えて社内と製品のサービスを一時止めたため、Cursorの一部の機能が一時使えなくなった。

攻撃者は10月29日、流出したデータの中から得た社内システムの認証情報を使い、改ざんしたClaude Codeの拡張機能を、Cursorの拡張機能ストアの配信用キャッシュ(一時保存の場所)に直接置いた。ブログは、改ざん版をAnthropicが公開したものではなく、Anthropicの製品の脆弱性でもないとしている。ストアの配信元であるOpen VSXには、不正なプログラムは入っていなかった。改ざん版を受け取った可能性があるのは、10月29日に特定のキャッシュの版を求めた最大5000人で、取り除くまで約11時間配られていた。

改ざん版の版番号について、ブログは2.1.312と2.1.313の2つを挙げている。この期間にCursorのストアからどちらかを入れたり更新したりした利用者には、10月の告知に書いた手順に従うよう求めた。拡張機能を消すだけでは足りない場合があるという。

11月1日以降、攻撃の活動は確認されず

Cursorは侵害を封じ込めたとみている。攻撃者の活動を最後に確認したのは11月1日で、その活動も遮断したという。監視を続け、利用者に関わる新しい情報が分かれば直接連絡するとしている。

ブログは、影響を受けなかったものとして、プライバシーモードで送ったプロンプトとコード、いま送っているデータと通信、Cursorを動かす本番のシステムを挙げた。アプリと公式の更新、利用者の端末とクラウドに配るコードも対象外で、アプリは攻撃者が入れなかった別のコード管理の仕組みから配っており、配布物に付ける署名の鍵も流出していないという。ストアのほかの拡張機能、Cursor Marketplaceのプラグイン、顧客のコードの保管庫、顧客のチーム向けのCloud Agentsなどほかの製品、処理中の推論の要求も影響を受けなかったとしている。

推論を委託先から移し、認証情報を全面的に入れ替え

ブログによると、Cursorは推論(AIが答えを出す処理)の通信をすべてFireworksから移し、同社に渡した鍵を無効にして、共有していたデータへのアクセスを断った。見つけた流出済みの認証情報は危険の大きい順にすべて入れ替え、流出の証拠がない社内システムの認証情報も念のためすべて入れ替えた。

ほかに、ストアのほかの拡張機能が本物であることを確かめてストアを作り直し、利用するサービス事業者の側で、できる範囲で認証情報を決まった場所の外から使えないようにする制限を広げた。すべてのコードの保管庫に秘密情報の検出と保護を加え、本番のシステムとサービスを念のためすべて配置し直した。外部のフォレンジック(デジタル鑑識)の専門家の協力も得て、影響のあった全員に連絡したという。

Cursorはブログで影響を受けた人に謝罪し、重要な変化があればブログを更新するとしている。Fireworksの側が鍵をどう流出させたかや、流出した支援窓口のデータや認証情報の件数は、ブログに書かれていない。