2024年8月、私たちはLinkedInの投稿に遭遇しました。その投稿では、OpenAIがGitHubの非公開リポジトリのデータを使って学習を行い、そのデータを公開していると主張していました。この主張の重大性を考慮し、私たちの研究チームは直ちに調査を開始しました。
簡単な検索で、問題のリポジトリはかつて公開されていたことが判明しました。そのページはBingによってまだインデックス登録されていたからです。しかし、GitHub上でこれらのページに直接アクセスしようとすると、404エラーが発生し、リポジトリが非公開になっていることが確認されました。
このことから、重要な疑問が浮かび上がりました。ChatGPTは 、もはや公開アクセスできないリポジトリのコンテンツに基づいて、どのようにして回答を返すことができたのでしょうか?
Bingでインデックスされたリポジトリのページ
インデックスされたページが存在しません
取得するにはこの問題の真相を突き止めるため、ChatGPT にこのリポジトリに関連するデータを繰り返し照会しました。そのたびに、ChatGPT は実際のデータに直接アクセスできないこと、そしてリポジトリ名に基づいて仮想コンテンツを生成していることが明確に示されました。ChatGPT は公開時に Bing を検索エンジンとして利用していることがわかりました。この仕組みにより、かつては公開されていたものの後に非公開になったリポジトリから情報を取得できることが説明されました。データは公開段階でインデックス化され、Bing のキャッシュに保存されていたのです。
しかし、2つの疑問が残りました。リポジトリが非公開にされた後、実際のコンテンツはどうなったのか?そして、他にどのようなチャットで同様の動作が見られるのか?
公開されたリポジトリの発見
私たちはさらに深く調査し、組織のリポジトリが公開状態にあるかどうかを調査することにしました。Lasso 組織配下のリポジトリを Bing で検索したところ、私たちのリポジトリの1つがインデックス化されていることがわかりました。しかし、リポジトリが非 公開に設定されていたため、GitHub からアクセスすると 404 エラーが返されました。
社内調査の結果、リポジトリは誤って短期間公開された後、再び非公開に設定されていたことが確認されました。
権限がないと非公開リポジトリにアクセスできません
潜在的な影響について懸念し、ChatGPT がインデックスされたページからデータを抽出できるかどうかをテストしました。
リポジトリの存在はBingのインデックスのおかげで時々確認されましたが、実際のデータは提供されませんでした。
*ChatGPTは、lasso-security GitHubの下に「lassollm」というリポジトリが存在することを確認しました。組織.*
ChatGPTはlassollmリポジトリにアクセスできないと返します。
そこで、ある懸念すべき可能性が浮かびました。Bingがインデックス登録していた場合、データはどこかにキャッシュされている可能性があり、Microsoft Copilot以上にアクセスに適したツールは他にないのではないでしょうか。結局のところ、すべてのデータはファミリー内で共有されるのですから。
Copilotがリポジトリが公開されていた時点の実際のデータを返したことで、私たちの疑念は確信に変わりました。これは、ユーザーが非公開または削除済みだと 考えているものの、依然としてアクセス可能な「ゾンビデータ」のキャッシュされたスナップショットを取得しているように見えました。
当社のプライベートリポジトリは、Copilot にアクセスできるすべてのユーザーがアクセスできます。
この発見は、重大なセキュリティ問題を浮き彫りにしました。
- 「ゾンビデータ」:たとえ短期間であっても、公開されていた情報は Microsoft Copilot によってアクセスおよび配布されたままになる可能性があります。
- プライベートコードのリスク:この脆弱性は、保存されているデータの機密性のために、セキュリティ保護される前に誤って公開されたリポジトリにとって特に危険です。
Wayback Copilot Flow
Bing のキャッシュメカニズム
Bing のインデックスシステムをさらに詳しく調査したところ、cc.bingj.com という Microsoft 所有のドメインが、インデックスされたページのキャッシュ版を保存していることがわかりました。Bing では検索結果の横に小さな矢印が表示され、ユーザーはアクセスできなくなってもページのキャッシュ版を見ることができます。
元のAzure/responsible-ai-hubページは存在しません
キャッシュされたリンクへのボタンBing
Azure/responsible-ai-hub のキャッシュされたページの内容
スケールアップ
GitHub 上のあらゆるデータは、たとえ一瞬でも公開されていたとしても、Copilot のようなツールによってインデックス化され、潜在的に公開される可能性があることに気づき、この情報にいかに簡単にアクセスできるかに驚きました。この問題の全容を把握するため、私たちは「ゾンビリポジトリ」(かつては公開されていたが現在は非公開となっているリポジトリ)を特定するプロセスを自動化し、その結果を検証することにしました。
データ収集と調査の流れ
ステップ 1: 公開リポジトリの収集
私たちは、すべての公開リポジトリのアクティビティを記録する Google BigQuery の githubarchive
データセットを使用しました。 2024年のいずれかの時点で公開されており、GitHub 組織に属しているリポジトリのリストを抽出しました。
ステップ 2: 見つからないリポジトリの特定
次に、GitHub で各リポジトリにアクセスして、そのステータス を確認しました。
- リクエストが「200 OK」を返した場合、リポジトリは引き続き公開されています。
- リクエストが「404」を返した場合、リポジトリは削除されているか、非公開に設定されています。
ステップ 3: Bing からキャッシュされたデータを抽出する
非公開になったリポジトリごとに、以下のコマンドを使用して Bing を検索しました。
見つかったキャッシュされたページを抽出しました。
ステップ 4: コンテンツのスキャン
社内ツールを使用して、抽出したデータに、公開されていないシークレット、トークン、アクセスキー、パッケージ(依存関係の混乱を招くリスクがある)が含まれていないかスキャンしました。
調査結果
- 本調査では、Bing のキャッシュメカニズムを使用して 20,580 件の GitHub リポジトリが抽出されました。
- Wayback Copilot の影響を受けた組織は 16,290 社に上り、Microsoft、Google、Intel、Huwai、Paypal、IBM、Tencent などが挙げられます。
- 依存関係の混乱を引き起こす可能性のある 100 件以上の Python および Node.js 内部パッケージが発見されました。
- GitHub、Hugging Face、GCP、OpenAI などの 300 件以上のプライベートトークン、キー、シークレットが発見されました。公開されました
Wayback Copilotメカニズムの悪用
報告と修正
Microsoftに報告しました調査結果では、削除済みまたは非公開のGitHubリポジトリがBingのキャッシュとCopilot経由で引き続きアクセス可能であり、この機能が組織データを公開することでセキュリティリスクをもたらすことが示されました。また、影響を受けるすべての組織に警告を発し、侵害されたキーをローテーションまたは失効させるよう勧告しました。
Microsoftは、この問題の深刻度を「低」と分類し、「影響度が低い」ことを理由に、このキャッシュ動作は許容範囲内であると主張しました。しかし、Microsoftは迅速に対応し、2週間以内にBingのキャッシュリンク機能が削除され、すべてのユーザーに対して「cc.bingj.com」ドメインへのアクセスが無効化されました。
開始点に戻る
Bingのキャッシュリンク機能は無効化されましたが、キャッシュされたページは引き続き検索結果に表示されていました。これは、この修正が一時的なパッチに過ぎないことを示しており、一般ユーザーからのアクセスはブロックされているものの、基盤となるデータが完全に削除されていないことを示しています。
Microsoft Copilot の調査を再検討した結果、私たちの疑念は確証されました。Copilot は、人間のユーザーがアクセスできなくなったキャッシュデータに依然としてアクセスできていたのです。つまり、修正は部分的なものであり、人間のユーザーはキャッシュデータを取得できなくなりましたが、Copilot は依然としてアク セスできていたのです。
Wayback Copilot の悪意ある利用
2025年1月14日(Microsoft による修正後)、私たちは Wayback Copilot をテストする機会に再び遭遇しました。Techcrunch の記事 で、「Microsoft は、クラウド AI 製品の安全ガードレールを迂回するツールを意図的に開発・使用したとして、あるグループに対して法的措置を講じた」という情報を知りました。このツールのリポジトリがGitHubから削除されたという情報がありました。これらのリポジトリの内容が気になり、古き良き友人と話をしてみることにしました。リポジトリは削除されていましたが(有名なGitHub 404エラー)、悪意のあるパッケージの内容を取得することができました。
削除されたファイルのインデックスリストリポジトリ
utils.py* リポジトリのページはアクセス可能*
Wayback Copilotを使用してde3uリポジトリから* utils.py*コードを取得する
調査からの主なポイント
今日のデジタル環境において、データは依然として貴重な資産であり、LLM(法務・法務・経営学)と生成AIの爆発的な増加により、独自のデータセット獲得競争が激化しています。こうしたプレッシャーから、組織はトレーニングの品質と回答の精度を向上させるために、よりリスクの高いデータ取得戦略、さらにはダークパターンに頼る戦略へと傾倒しています。主な知見は以下のとおりです。
1. 一度漏洩したデータは、すべて侵害されると想定する
現代の組織は、たとえ一時的に公開されたとしても、ネットワークから発信されるデータは、LLMエンジンや主要検索エンジンによって将来のトレーニングに利用される可能性があるという前提で業務を遂行する必要があります。発信データストリームを保護し、サニタイズすることは、これまで以上に重要になっています。境界から発信されるあらゆるデータを管理する必要があります。
2. 新たな脅威ベクトルとしてのLLMエンジン
従来の脅威インテリジェンスは、Web、フォーラム、ダークウェブをスキャンして漏洩データを探すことに重点を置いてきました。しかし今、LLMとAIコパイロットは新たなリスクをもたらします。たった一度の指示で、機密データが広範囲のユーザーに公開される可能性があるのです。これは、データ侵害の発生方法に大きな変化をもたらしています。
3.権限に関する落とし穴と過剰に親切なシステム
私たちの調査結果から、LLMと検索拡張生成(RAG)システムには、権限管理とシステム本来の支援への熱意という、2つのよく知られた課題があることが明らかになりました。特定の設計上の選択(私たちの場合はMicrosoft)と 相まって、これらの問題は機密情報の過剰な共有につながる可能性があります。独自のシステムを導入または開発する際には、ユーザーが閲覧を許可されたデータにのみアクセスできるようにし、インデックス作成および取得されるデータの内容を完全に把握できるようにしてください。
4. 基本に立ち返る:基本的なデータハイジーン
状況は変化していますが、サイバーセキュリティの基本は変わりません。リポジトリがプライベートであることを常に確認し、GitHubなどのプラットフォームでシークレットやトークンを公開しないようにし、プライベートパッケージには公式パッケージリポジトリ(例:PyPi、NPM)を使用することで、依存関係の混乱などのリスクを軽減してください。つまり、個人情報とコードを組織の境界内に留めることで保護するということです。
ご自身の組織が影響を受けたかどうかを知りたい場合は、research@lasso.security までお問い合わせください。