悪意あるVS Code AI拡張機能、150万人の開発者からコードを窃取

AIコーディングアシスタントはいまや至る所に存在します。コードを提案し、エラーを説明し、関数を書き、プルリクエストをレビューしてくれます。どの開発者向けマーケットプレイスも、こうしたツールで溢れています。ChatGPTのラッパー、Copilotの代替品、生産性を10倍にすると謳うコード補完ツールなどです。

私たちは深く考えずにこれらをインストールしてしまいます。公式マーケットプレイスに掲載されており、レビューも何千件とついていて、実際に動作するからです。そのため、ワークスペースやファイル、キー入力へのアクセスを許可し、そのアクセス権はコーディングを助けるためだけに使われていると思い込んでしまいます。

しかし、そうとは限りません。

当社のリスクエンジンは、私たちが「MaliciousCorgi」と呼んでいるキャンペーンにおいて、2つのVS Code拡張機能を特定しました。合計150万件のインストール数を誇り、現在もマーケットプレイスで公開されているこの2つの拡張機能は、うたい文句どおりに動作します。コーディングに関する質問に答え、エラーを説明してくれます。しかしそれと同時に、ユーザーが開いたすべてのファイル、行ったすべての編集を捕捉し、中国国内のサーバーへ送信しているのです。同意もなければ、開示もありません。

MaliciousCorgiキャンペーン

両拡張機能とも、AIコーディングアシスタントとして宣伝されており、実際に機能します。そして両方とも、同一の悪意あるコードを含んでいます。異なる公開者名の下で稼働している、同じスパイウェアインフラです。

Image

完璧な隠れ蓑

これらの拡張機能は実際に機能します。それこそが危険な理由です。

コードを選択して質問すると、AIによる有用な回答が返ってきます。この拡張機能は、GitHub Copilotと同様にインラインの自動補完機能も提供しています。ユーザーが入力すると、カーソル周辺の約20行分のコンテキストを読み取り、提案を得るためにAIサーバーへ送信します。

Image

ここまでは正常であり、想定の範囲内です。AIコーディングアシスタントは、コードを書く手助けをするために、ある程度のコードを読み取る必要があります。

しかし、これらの拡張機能は、自動補完に必要な範囲をはるかに超えた動作をしています。

自動補完機能はユーザーが実際に入力している際にカーソル周辺の約20行を送信するだけですが、それと並行して3つの隠れたチャネルが稼働しており、ユーザーの操作を一切介さずに、はるかに大量のデータをはるかに頻繁に収集しています。

チャネル1:リアルタイムのファイル監視

ユーザーが何らかのファイルを開いた瞬間――操作するまでもなく、開いただけで――拡張機能はそのファイルの全内容を読み取り、Base64でエンコードし、隠れたトラッキング用iframeを含むWebビューへ送信します。20行どころではありません。ファイル全体です。

Image

同じ仕組みがonDidChangeTextDocument、つまり編集のたびに発動します。

Image

実際に作業しているファイルだけではありません。目を通しただけのファイル、入力したすべての文字が捕捉され、送信されているのです。

チャネル2:大量ファイル収集(サーバー制御型)

そして、事態はさらに悪化します。
リアルタイム監視はユーザーが作業している最中にファイルを捕捉しますが、サーバー側はユーザーが何かを開くのを待つ必要すらありません。

サーバーは、ユーザーの操作なしに、いつでもリモートから大量のファイル収集をトリガーできます。
この拡張機能は、サーバーからの応答に含まれるjumpUrlフィールドをJSONとして解析し、そのまま実行します。

Image

サーバーが{“type”: “getFilesList”}を送信すると、拡張機能はワークスペース全体の収集をトリガーします。

Image

攻撃の流れは単純です。

  1. サーバーが任意のAPI応答にjumpUrlを含める
  2. Webビューがそれをjsonとして解析し、拡張機能へ転送
  3. 拡張機能がgetFilesListコマンドを実行
  4. 最大50件のファイルが収集され送信される
  5. ユーザーには何も表示されない

ユーザーのコードベースは、サーバーからのコマンド一つで完全に外部流出させられる状態にあります。ユーザー側の操作は一切必要ありません。

チャネル3:プロファイリングエンジン

チャネル1と2はユーザーのコードを収集しますが、チャネル3が収集するのはユーザー自身です。

この拡張機能のWebビューには、サイズがゼロピクセルで完全に見えない隠れたiframeが埋め込まれており、4つの商用アナリティクスSDKを読み込んでいます。これはWebサイトの単なるトラッキングではなく、コードエディタの内部で動作するプロファイリングエンジンです。

Image

当社はこのURLから配信されているコンテンツを取得しました。そのページタイトルがすべてを物語っています。「ChatMoss数据埋点」――「ChatMossデータトラッキング」です。ここでは、Zhuge.io、GrowingIO、TalkingData、Baidu Analyticsという4つの独立したアナリティクスプラットフォームが読み込まれており、それぞれユーザーの行動を追跡し、アイデンティティプロファイルを構築し、デバイスをフィンガープリンティングし、あらゆる操作を監視するよう設計されています。

これらのSDKを組み合わせることで、ユーザーが誰であるか、どこにいるか、どの企業で働いているか、何に取り組んでいるか、どのプロジェクトを最も重視しているかといった詳細なプロファイルが構築されます。

なぜソースコードと一緒にこれほど大量のメタデータを収集するのでしょうか。考えられる可能性の一つはターゲティングです。チャネル2に組み込まれたサーバー制御型のバックドアは、命令一つで50件のファイルを収集できます。アナリティクスは、攻撃者に対して誰のファイルを盗む価値があるか、そしてユーザーが最も活発に活動しているのがいつかを教えます。つまり、まずプロファイリングを行い、その後に外部流出を実行する――これがMaliciousCorgiの手口です。

何が危険にさらされているか

今この瞬間、自分のワークスペースに何が入っているか考えてみてください。

APIキーやデータベースのパスワードが記載された.envファイル、サーバーのエンドポイントや社内URLが書かれた設定ファイル、クラウドサービスアカウント用のcredentials.json、利便性のために追加したSSHキー、そしてソースコードそのもの――アルゴリズムやビジネスロジック、まだリリースしていない機能などです。

ファイル収集機能は、画像を除くあらゆるものを取得します。一度に最大50件のファイルを、命令一つで収集します。ユーザーの機密情報も認証情報も独自のコードも、すべてが中国国内のサーバーからアクセス可能な状態にあり、攻撃者がいつ引き金を引くかを決めるだけの状況です。

そしてチャネル3が背後でユーザーをプロファイリングしているため、攻撃者は誰が最も価値の高いコードを持っているかを正確に把握しています。

結論

私たちは今、AIツールのゴールドラッシュのただ中にいます。開発者はかつてないスピードで拡張機能をインストールしていますが、それ自体は正しい判断です。こうしたツールは、開発者をより速く、より賢く、より生産的にしてくれます。

しかし、導入のスピードと検証の徹底度の間には大きな隔たりがあります。150万人の開発者がこれらの拡張機能を信頼したのは、実際に機能したからです。マーケットプレイスはそれらを承認し、レビューも好意的でした。機能は本物です。しかし、スパイウェアもまた本物なのです。

AIツールを素早く導入すること自体は良いことです。しかし、それらが実際にユーザーのコードに対して何をしているのかを把握しないまま突き進むことが、150万人の開発者のワークスペースが収集される結果につながったのです。

開発チームは、スピードを取るか安全を取るかという選択を迫られるべきではありません。
Koiを使えば、その両方を実現できます。当社は、拡張機能がインストール後に実際に何をしているのかを分析します。単なる宣伝文句だけではありません。すでに稼働している脅威を見つけるために環境をスキャンし、悪意ある拡張機能をインストール前にブロックします。AIツールを全速力で導入しながら、完全な可視性を確保できます。

デモを予約することで、Koiが開発者のスピードを落とすことなくどのように保護するかをご覧いただけます。

IOC(侵害指標)

VS Code拡張機能:

  • whensunset.chatgpt-china
  • zhukunpeng.chat-moss

ドメイン:

  • aihao123.cn

翻訳元: https://www.koi.ai/blog/maliciouscorgi-the-cute-looking-ai-extensions-leaking-code-from-1-5-million-developers

本記事は koi.ai の記事を翻訳・要約したものです。