TL;DR
- 600万人以上が影響:VPN系Chrome拡張がChatGPT/Claude等の会話を収集・第三者に販売
- 拡張機能の構造的リスク:DOM監視+自動アップデートで「後から」悪意あるコードを注入可能
- 安全な設計原則:クライアントサイド完結、JSONエクスポート経由、IndexedDB保存
- 確認方法:DevToolsのNetworkタブで外部通信をチェック
1. 何が起きたのか
2025年12月、セキュリティ企業Koiが衝撃的な調査結果を発表した。
Urban VPN Proxyをはじめとする8つのChrome/Edge拡張機能が、ユーザーの生成AIとの会話を収集し、第三者に販売していたことが発覚した。
影響を受けたサービス
| サービス | 影響 |
|---|---|
| ChatGPT | ✅ |
| Claude | ✅ |
| Gemini | ✅ |
| Copilot | ✅ |
| Perplexity | ✅ |
| DeepSeek | ✅ |
| Grok | ✅ |
| Meta AI | ✅ |
収集されていた情報
- 送信したすべてのプロンプト
- AIからのすべての応答
- 会話ID、タイムスタンプ
- セッションメタデータ
- 使用したモデル情報
医療相談、財務情報、企業の機密コード、個人的な悩み——すべてが「マーケティング分析目的」で売られていた。
2. なぜブラウザ拡張機能は危険なのか
2.1 DOM監視による会話傍受
拡張機能はページのDOMに自由にアクセスできる。ChatGPTの会話は画面に表示される以上、技術的には以下のコードで傍受可能:
// 悪意ある拡張機能のイメージ(実際のコードではない)
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
// 新しいメッセージを検出
const newMessages = document.querySelectorAll('[data-message-id]');
newMessages.forEach(msg => {
sendToExternalServer(msg.textContent); // 外部送信
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
2.2 自動アップデートの罠
今回の問題の核心はインストール時には問題なかったこと。
- ユーザーがVPN拡張をインストール(この時点では安全)
- 数ヶ月後、自動アップデートで収集コードが追加
- ユーザーは気づかない
- 2025年7月以降の会話がすべて流出
Googleの「おすすめ」バッジがついていても、将来の安全性は保証されない。
2.3 権限の過剰要求
多くの拡張機能が要求する権限:
- すべてのウェブサイトでデータを読み取り、変更する
- 閲覧履歴を読み取る
- ストレージにアクセスする
VPNに「すべてのウェブサイトでデータを読み取る」権限は本当に必要か?
3. 安全なAI履歴管理の設計原則
では、どうすれば安全にAI会話履歴を管理できるのか。
3.1 原則1:クライアントサイド完結
❌ 危険なパターン
ブラウザ → 拡張機能 → 外部サーバー → データベース
✅ 安全なパターン
ブラウザ → ローカルファイル → ローカル処理 → IndexedDB
外部通信が発生しない設計が最も安全。
3.2 原則2:ユーザー主導のデータ取得
❌ 危険:常時監視型
拡張機能がリアルタイムで会話を傍受
✅ 安全:エクスポート型
ユーザーが明示的にJSONをダウンロード → 手動でアップロード
ChatGPTもClaudeも公式のエクスポート機能を提供している。これを使えば拡張機能は不要。
3.3 原則3:処理の透明性
// 外部通信がないことを確認できるコード例
// fetch, XMLHttpRequest, WebSocket を使用しない
// ファイル読み込み
const reader = new FileReader();
reader.onload = (e) => {
const data = JSON.parse(e.target.result);
// ローカルで処理
processLocally(data);
};
reader.readAsText(file);
// IndexedDBに保存
await db.conversations.bulkPut(processedData);
4. 実装例:iLoveAIのアーキテクチャ
私が開発しているiLoveAIは、上記の原則に基づいて設計した。
4.1 データフロー
[ChatGPT/Claude]
│
▼ 公式エクスポート機能(JSON)
[ユーザーのローカルPC]
│
▼ ドラッグ&ドロップ
[iLoveAI(ブラウザ内)]
│
▼ FileReader API
[メモリ上で解析]
│
▼ Dexie.js
[IndexedDB(ブラウザ内ストレージ)]
サーバーを経由するポイントがゼロ。
4.2 技術スタック
// src/lib/db.ts - IndexedDBスキーマ
class ILoveAIDatabase extends Dexie {
conversationMeta!: Table<ConversationMeta, string>;
conversationMessages!: Table<ConversationMessages, string>;
constructor() {
super('iLoveAI_DB');
this.version(6).stores({
conversationMeta: 'threadId, createdAt, source, *modelNames',
conversationMessages: 'threadId',
});
}
}
4.3 外部通信の排除
// 認証・課金を除き、外部APIは一切使用しない
// src/lib/parser.ts - すべてローカル処理
export function parseConversation(json: unknown): ConversationWithMessages[] {
// JSONをメモリ上で解析
// fetch, XMLHttpRequest は使用しない
const conversations = json as Conversation[];
return conversations.map(conv => ({
...conv,
parsedMessages: extractMessages(conv.mapping),
source: 'chatgpt',
}));
}
4.4 セキュリティ対策
| 対策 | 実装 |
|---|---|
| XSS対策 | react-markdownによる自動エスケープ |
| データ保存 | IndexedDB(ブラウザサンドボックス内) |
| 認証 | Supabase Auth(有料機能のみ) |
| 外部通信 | 認証・課金以外は一切なし |
5. 自分で安全性を確認する方法
5.1 DevToolsでNetwork監視
任意のWebアプリの通信を確認する手順:
-
F12でDevToolsを開く -
Networkタブを選択 - 操作を実行(ファイルアップロード等)
- 外部ドメインへのリクエストを確認
✅ 安全な例
localhost, cdn.jsdelivr.net(静的アセット), 認証系のみ
❌ 危険な例
unknown-analytics.com, data-collector.xyz への通信
5.2 拡張機能の権限確認
Chrome:
-
chrome://extensions/にアクセス - 各拡張機能の「詳細」をクリック
- 「サイトへのアクセス」を確認
⚠️ 注意が必要な権限
- すべてのサイト
- 閲覧履歴の読み取り
- ダウンロードの管理
5.3 問題の拡張機能リスト
今回発覚した8つの拡張機能:
| 拡張機能 | ユーザー数 |
|---|---|
| Urban VPN Proxy | 600万人 |
| 1ClickVPN Proxy | 60万人 |
| Urban Browser Guard | 4万人 |
| Urban Ad Blocker | 1万人 |
インストールしている場合は即座に削除を。
6. まとめ
学んだこと
- ブラウザ拡張機能は構造的にリスクがある — 自動アップデートで後から悪意あるコードを注入可能
- 「おすすめ」バッジは安全の保証ではない — 審査時点での安全性しか担保しない
- クライアントサイド完結が最も安全 — 外部通信がなければデータは漏れない
安全にAI履歴を管理するために
| アプローチ | 安全性 | 利便性 |
|---|---|---|
| 拡張機能(常時監視型) | ❌ | ◎ |
| 公式エクスポート → ローカルツール | ◎ | ○ |
| 何もしない(履歴を管理しない) | ◎ | ❌ |
公式エクスポート+ローカル処理がバランスの取れた選択肢。
参考リンク
宣伝
iLoveAIは完全無料でChatGPT/Claudeの履歴を閲覧・検索できます。
- ✅ 完全ローカル処理(サーバー送信なし)
- ✅ IndexedDB永続化(ブラウザを閉じてもデータ保持)
- ✅ プロンプト発掘機能(過去の良質なプロンプトを自動抽出)
- ✅ オープンな設計(DevToolsで通信を確認可能)
プライバシーを重視する方はぜひお試しください。