🚀 Chrome MCP Server (Security Hardened)
AIエージェント向けのエンタープライズグレードのChrome自動化ツールで、コンプライアンス対応のロギング機能を備えています。
エンタープライズ対応機能 • コンプライアンスロギング • セキュリティ機能 • クイックスタート • Dockerデプロイ
🚀 クイックスタート
1. デバッグモードでChromeを起動
./setup.sh --start-chrome
2. Claude Codeで使用する
"Check Chrome connection with health tool"
"Navigate to https://example.com"
"Take a screenshot"
3. セキュアなログインフロー
"Store a credential for my GitHub account"
"Navigate to github.com/login"
"Use secure_login with the stored credential"
✨ 主な機能
エンタープライズ対応
セキュリティ、コンプライアンス、監査可能性が不可欠な企業環境向けに構築されています。
| 要件 |
解決策 |
| 監査証跡 |
改ざん検知機能付きのハッシュチェーン化された監査ログ |
| SIEM統合 |
CEF (Splunk, ArcSight, QRadar) + Syslog (RFC 5424) |
| 資格情報セキュリティ |
ポスト量子暗号化 (ML-KEM-768 + ChaCha20-Poly1305) |
| データ保護 |
スクリーンショットとログ内の個人識別情報 (PII) の自動編集 |
| セッション管理 |
設定可能なタイムアウト、自動有効期限、非アクティビティロックアウト |
| アクセス制御 |
総当たり攻撃保護付きのトークンベースの認証 |
| コンプライアンスロギング |
OWASP準拠のイベントカテゴリ、相関ID |
コンプライアンス標準のサポート
| 標準 |
対応内容 |
| SOC 2 Type II |
監査ロギング、アクセス制御、静止データの暗号化 |
| GDPR |
データ最小化、削除権、監査証跡 |
| PCI DSS |
資格情報保護、アクセスロギング、暗号化 |
| HIPAA |
監査制御、アクセス管理、暗号化 |
コンプライアンスロギング
業界標準形式のSIEM対応ロギング。すべてのツール実行、資格情報アクセス、セキュリティイベントがログに記録されます。
出力形式
| 形式 |
使用例 |
例 |
| CEF |
Splunk, ArcSight, QRadar |
CEF:0|Pantheon-Security|Chrome-MCP-Secure|2.3.0|... |
| Syslog |
集中ロギング (RFC 5424) |
<134>1 2025-12-16T10:30:00Z ... |
| JSONL |
Elastic、カスタムパイプライン |
{"timestamp":"...","category":"audit",...} |
イベントカテゴリ (OWASP準拠)
authentication - ログイン試行、セッション作成
authorization - アクセス制御の決定
credential - コンテナ操作 (保存、取得、削除)
audit - ツール実行とタイミング
security - レート制限、インジェクション試行、異常検出
data_access - 機密データの取得
クイック設定
COMPLIANCE_LOG_FORMAT=cef
COMPLIANCE_LOG_DIR=./logs/compliance
SYSLOG_HOST=siem.company.com
SYSLOG_PORT=514
例: CEF出力
CEF:0|Pantheon-Security|Chrome-MCP-Secure|2.3.0|audit:tool:navigate|tool:navigate|3|rt=1702732800000 outcome=success msg=Tool navigate executed: success request=https://internal.company.com cn1=1702732800-abc123 cn1Label=correlationId
セキュリティ機能
コアセキュリティ (v2.1.0)
| 機能 |
説明 |
| ポスト量子暗号化 |
ML-KEM-768 + ChaCha20-Poly1305ハイブリッド |
| セキュアな資格情報コンテナ |
静止データで暗号化され、メモリから自動的に削除されます |
| メモリスクラビング |
使用後に機密データをゼロにする |
| 監査ロギング |
ハッシュチェーンによる改ざん検知可能なログ |
| プロファイル分離 |
セキュアなセッション用の専用Chromeプロファイル |
| ログサニタイズ |
すべての出力で資格情報をマスクする |
| レート制限 |
操作ごとに1分あたり100リクエスト |
| 入力検証 |
CSSセレクタのサニタイズ、URL検証 |
高度なセキュリティモジュール (v2.2.0+)
| モジュール |
説明 |
| シークレットスキャナ |
25種類以上の資格情報パターン (AWS、GitHub、Slack、OpenAIキー、秘密鍵、JWT、クレジットカード、SSN) を検出します |
| レスポンスバリデータ |
プロンプトインジェクション検出 (15パターン)、疑わしいURLブロック、エンコードされたペイロード検出 |
| セッションマネージャ |
最大8時間の有効期限と30分の非アクティビティタイムアウトを持つ資格情報セッションのライフサイクル管理 |
| MCP認証 |
自動生成、SHA256ハッシュ、総当たり攻撃ロックアウト付きのトークンベースの認証 |
| 証明書ピニング |
Google、GitHub、Microsoft、Anthropic、OpenAIドメインのSPKI形式のピニング |
| スクリーンショット編集 |
スクリーンショット内のパスワードフィールド、クレジットカード、CVV、SSN、APIキーを自動的に編集します |
| クロスプラットフォームパーミッション |
Linux、macOS、Windowsでのセキュアなファイルパーミッション (icacls) |
ポスト量子対応
従来の暗号化は量子コンピュータによって破られる可能性があります。このフォークではハイブリッド暗号化を使用しています。
ML-KEM-768 (Kyber) + ChaCha20-Poly1305
- ML-KEM-768: NIST標準化されたポスト量子鍵カプセル化
- ChaCha20-Poly1305: 最新のストリーム暗号 (タイミング攻撃に耐性があります)
一方のアルゴリズムが破られた場合でも、もう一方は安全です。
なぜ今すぐポスト量子暗号化を採用するのか?
| タイムライン |
脅威 |
| 2024 - 2030 |
"今収集して後で復号化" 攻撃 - 敵対者が現在暗号化されたデータを収集している |
| 2030 - 2035 |
初期の暗号的に関連する量子コンピュータが登場することが予想されます |
| 2035+ |
現在のRSA/ECC暗号化が破られる可能性があります |
現在保存されているブラウザの資格情報は、10年後に復号化される可能性があります。このフォークは、この将来の脅威から保護します。
📦 インストール
1コマンドセットアップ (推奨)
Linux / macOS:
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
./setup.sh
Windows (PowerShell):
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
.\setup.ps1
これにより、以下のことが行われます。
- 依存関係をインストールし、プロジェクトをビルドします。
- Claude CodeにMCPサーバーを登録します。
- リモートデバッグでChromeを起動します。
- 分離されたChromeプロファイルを作成します。
手動セットアップ
npm install && npm run build
claude mcp add chrome-mcp-secure --scope user -- node /path/to/chrome-mcp-secure/dist/index.js
google-chrome --remote-debugging-port=9222 --user-data-dir=~/.chrome-mcp-profile
プラットフォーム固有の注意事項
| プラットフォーム |
セットアップスクリプト |
Chromeプロファイルの場所 |
| Linux |
./setup.sh |
~/.chrome-mcp-profile |
| macOS |
./setup.sh |
~/.chrome-mcp-profile |
| Windows |
.\setup.ps1 |
%USERPROFILE%\.chrome-mcp-profile |
💻 使用例
利用可能なツール
ブラウザ自動化 (15ツール)
| ツール |
説明 |
health |
Chromeの接続とバージョンを確認する |
navigate |
URLに移動する |
get_tabs |
すべてのChromeタブをリストする |
click_element |
CSSセレクタで要素をクリックする |
click |
座標でクリックする |
type |
カーソル位置にテキストを入力する |
get_text |
要素からテキストを抽出する |
get_page_info |
URL、タイトル、インタラクティブな要素を取得する |
get_page_state |
スクロール位置、ビューポートサイズを取得する |
scroll |
座標にスクロールする |
screenshot |
ページのスクリーンショットを撮る |
wait_for_element |
要素が表示されるまで待つ |
evaluate |
JavaScriptを実行する |
fill |
フォームフィールドを入力する |
bypass_cert_and_navigate |
HTTPS証明書をバイパスして移動する |
セキュアな資格情報ツール (7ツール)
| ツール |
説明 |
store_credential |
暗号化されたログイン資格情報を保存する |
list_credentials |
保存された資格情報をリストする (パスワードは表示されません) |
get_credential |
資格情報のメタデータを取得する |
delete_credential |
保存された資格情報を削除する |
update_credential |
既存の資格情報を更新する |
secure_login |
保存された資格情報を使用してログインフォームを自動入力する |
get_vault_status |
コンテナの暗号化ステータスを確認する |
セキュアな資格情報の使用
資格情報の保存
"Store a credential for my Google account"
"Navigate to accounts.google.com"
"Use secure_login with the stored credential"
ログインに資格情報を使用する
1. Navigate to https://accounts.google.com
2. Use secure_login with the stored credential
secure_loginツールは以下のことを行います。
- コンテナから資格情報を取得して復号化する
- ユーザー名/メールフィールドを自動入力する
- パスワードフィールドを自動入力する
- 送信ボタンをクリックする
- 使用後に資格情報をメモリから削除する
📚 詳細ドキュメント
保護対象のデータ
| データ |
保護内容 |
| ログイン資格情報 |
静止データでポスト量子暗号化されます |
| メモリ内のパスワード |
5分のTTL後に自動的に削除されます |
| ログ出力 |
資格情報が自動的にマスクされます |
| Chromeプロファイル |
デフォルトのブラウザから分離されています |
| 監査証跡 |
改ざん検知用のハッシュチェーン化されています |
設定
環境変数
CHROME_HOST=localhost
CHROME_PORT=9222
CHROME_PROFILE_DIR=~/.chrome-mcp-profile
CHROME_MCP_ENCRYPTION_KEY=<base64-32-bytes>
CHROME_MCP_USE_POST_QUANTUM=true
CHROME_MCP_CONFIG_DIR=~/.chrome-mcp
CHROME_MCP_CREDENTIAL_TTL=300000
LOG_LEVEL=info
AUDIT_LOGGING=true
強力な暗号化キーの生成
openssl rand -base64 32
完全な設定リファレンスについては、SECURITY.md を参照してください。
セキュリティアーキテクチャ
暗号化
┌─────────────────────────────────────┐
│ ML-KEM-768 Key Pair │
│ (Post-Quantum Key Encapsulation) │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ ChaCha20-Poly1305 │
│ (Symmetric AEAD Encryption) │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ Encrypted Credential Files │
│ ~/.chrome-mcp/credentials/*.pqenc │
└─────────────────────────────────────┘
メモリ保護
- SecureCredentialクラス: TTL (デフォルト5分) 後に資格情報を自動的に削除します
- ゼロ埋めバッファ: ランダムな上書き + ゼロ埋めでメモリダンプを防止します
- 資格情報のログ記録なし: 機密フィールド名を自動的にマスクします
なぜChaCha20-Poly1305をAES-GCMよりも選んだのか?
| 特性 |
ChaCha20-Poly1305 |
AES-GCM |
| タイミング攻撃 |
耐性あり (一定時間) |
AES-NIなしで脆弱 |
| ソフトウェア速度 |
どこでも高速 |
ハードウェアなしで低速 |
| 複雑さ |
シンプル |
複雑 (GCMモード) |
| 採用状況 |
Google、Cloudflare TLS |
レガシーシステム |
管理コマンド
./setup.sh
./setup.sh --check
./setup.sh --uninstall
./setup.sh --start-chrome
./setup.sh --stop-chrome
アーキテクチャ
┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Claude/ │────▶│ MCP Server │────▶│ Chrome │
│ AI Agent │ │ (This Fork) │ │ (CDP) │
└─────────────┘ └──────────────────┘ └─────────────┘
│
┌──────┴──────┐
│ Security │
│ Layers │
└─────────────┘
• PQ Encryption
• Credential Vault
• Memory Wipe
• Audit Logs
• Rate Limits
• Input Validation
ファイル構造
chrome-mcp-secure/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── cdp-client.ts # Persistent CDP WebSocket client
│ ├── tools.ts # Browser automation tools
│ │
│ │── # Core Security (v2.1.0)
│ ├── credential-vault.ts # Encrypted credential storage
│ ├── credential-tools.ts # Credential MCP tools
│ ├── crypto.ts # Post-quantum encryption (ML-KEM-768 + ChaCha20)
│ ├── secure-memory.ts # Memory protection utilities
│ ├── security.ts # Input validation, rate limiting
│ ├── logger.ts # Logging with auto-masking
│ ├── errors.ts # Typed error classes
│ │
│ │── # Advanced Security Modules (v2.2.0+)
│ ├── secrets-scanner.ts # Credential leak detection (25+ patterns)
│ ├── response-validator.ts # Prompt injection detection
│ ├── session-manager.ts # Session lifecycle management
│ ├── mcp-auth.ts # Token-based MCP authentication
│ ├── cert-pinning.ts # Certificate pinning for sensitive domains
│ ├── screenshot-redaction.ts # Auto-redact sensitive fields
│ └── file-permissions.ts # Cross-platform secure file permissions
│
├── dist/ # Compiled JavaScript
├── setup.sh # Linux/macOS setup
├── setup.ps1 # Windows setup
├── SECURITY.md # Security documentation
├── CHANGELOG.md # Version history
├── CLAUDE.md # Claude Code integration guide
└── README.md
オリジナルとの比較
| 機能 |
lxe/chrome-mcp |
このフォーク |
| Chrome自動化 |
✅ |
✅ |
| 永続的なWebSocket |
✅ |
✅ |
| クロスプラットフォーム |
✅ |
✅ |
| ポスト量子暗号化 |
❌ |
✅ |
| セキュアな資格情報コンテナ |
❌ |
✅ |
| メモリスクラビング |
❌ |
✅ |
| 監査ロギング |
❌ |
✅ |
| 自動ログマスキング |
❌ |
✅ |
| プロファイル分離 |
❌ |
✅ |
| シークレットスキャナ |
❌ |
✅ |
| プロンプトインジェクション検出 |
❌ |
✅ |
| セッション管理 |
❌ |
✅ |
| MCP認証 |
❌ |
✅ |
| 証明書ピニング |
❌ |
✅ |
| スクリーンショット編集 |
❌ |
✅ |
v2.2.xの新機能
v2.2.1 - クロスプラットフォームファイルパーミッション
- すべてのファイル操作は集中管理された
file-permissions.tsを使用します
icaclsを介した適切なWindows ACLサポート
- Unixでの一貫した0o700/0o600パーミッション
v2.2.0 - 高度なセキュリティモジュール
合計3,000行以上のセキュリティ強化を行う6つの新しいセキュリティモジュールが追加されました。
- シークレットスキャナ - TruffleHog、GitLeaks、MEDUSAのパターンを使用してページコンテンツ内の漏洩した資格情報を検出します
- レスポンスバリデータ - スクレイピングされたコンテンツ内のプロンプトインジェクション攻撃をブロックします
- セッションマネージャ - 設定可能なタイムアウト後に資格情報セッションを自動的に期限切れにします
- MCP認証 - トークンベースの認証でMCPサーバー自体を保護します
- 証明書ピニング - 敏感なドメインのTLS証明書を検証します
- スクリーンショット編集 - スクリーンショットの前に敏感なフィールドをオーバーレイします
完全なバージョン履歴については、CHANGELOG.md を参照してください。
トラブルシューティング
Chromeにアクセスできない場合
curl http://localhost:9222/json
./setup.sh --start-chrome
資格情報の復号化に失敗した場合
- マシンを変更したかどうかを確認します (マシン派生キーは機能しません)
CHROME_MCP_ENCRYPTION_KEYを暗号化に使用したキーと同じに設定します
- キーが失われた場合は、資格情報を再保存する必要がある場合があります
要素が見つからない場合
Use get_page_info to see available elements
Use wait_for_element for dynamic content
開発
npm install
npm run dev
npm run typecheck
npm run build
npm start
脆弱性の報告
セキュリティ問題を発見した場合、公開GitHubイシューを開かないでください。
メールで報告してください: support@pantheonsecurity.io
クレジット
📄 ライセンス
MIT - 元のものと同じです。