0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chrome拡張のAI会話流出問題から学ぶ:安全にChatGPT/Gemini/Claude履歴を管理する技術的アプローチ

0
Last updated at Posted at 2025-12-17

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 自動アップデートの罠

今回の問題の核心はインストール時には問題なかったこと。

  1. ユーザーがVPN拡張をインストール(この時点では安全)
  2. 数ヶ月後、自動アップデートで収集コードが追加
  3. ユーザーは気づかない
  4. 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アプリの通信を確認する手順:

  1. F12でDevToolsを開く
  2. Networkタブを選択
  3. 操作を実行(ファイルアップロード等)
  4. 外部ドメインへのリクエストを確認
✅ 安全な例
localhost, cdn.jsdelivr.net(静的アセット), 認証系のみ

❌ 危険な例
unknown-analytics.com, data-collector.xyz への通信

5.2 拡張機能の権限確認

Chrome:

  1. chrome://extensions/にアクセス
  2. 各拡張機能の「詳細」をクリック
  3. 「サイトへのアクセス」を確認
⚠️ 注意が必要な権限
- すべてのサイト
- 閲覧履歴の読み取り
- ダウンロードの管理

5.3 問題の拡張機能リスト

今回発覚した8つの拡張機能:

拡張機能 ユーザー数
Urban VPN Proxy 600万人
1ClickVPN Proxy 60万人
Urban Browser Guard 4万人
Urban Ad Blocker 1万人

インストールしている場合は即座に削除を。


6. まとめ

学んだこと

  1. ブラウザ拡張機能は構造的にリスクがある — 自動アップデートで後から悪意あるコードを注入可能
  2. 「おすすめ」バッジは安全の保証ではない — 審査時点での安全性しか担保しない
  3. クライアントサイド完結が最も安全 — 外部通信がなければデータは漏れない

安全にAI履歴を管理するために

アプローチ 安全性 利便性
拡張機能(常時監視型)
公式エクスポート → ローカルツール
何もしない(履歴を管理しない)

公式エクスポート+ローカル処理がバランスの取れた選択肢。


参考リンク


宣伝

iLoveAIは完全無料でChatGPT/Claudeの履歴を閲覧・検索できます。

  • ✅ 完全ローカル処理(サーバー送信なし)
  • ✅ IndexedDB永続化(ブラウザを閉じてもデータ保持)
  • ✅ プロンプト発掘機能(過去の良質なプロンプトを自動抽出)
  • ✅ オープンな設計(DevToolsで通信を確認可能)

プライバシーを重視する方はぜひお試しください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?