Back to MCP directory
publicPublicdnsLocal runtime

chrome-mcp-secure

这是一个企业级安全加固的Chrome自动化MCP服务器,提供合规审计日志、后量子加密、凭证安全存储和会话管理,专为需要高安全性和合规性的企业环境设计。

article

README

🚀 安全强化版 Chrome MCP 服务器

专为人工智能代理提供企业级 Chrome 自动化,并具备合规日志记录功能

版本 TypeScript MCP 安全性 后量子加密 SOC2 CEF 许可证

企业特性合规日志记录安全特性快速开始Docker 部署


✨ 主要特性

企业适用

专为安全、合规和可审计性至关重要的企业环境而设计。

| 需求 | 解决方案 | |-------------|----------| | 审计跟踪 | 具有篡改检测功能的哈希链审计日志 | | SIEM 集成 | CEF(Splunk、ArcSight、QRadar)+ Syslog(RFC 5424) | | 凭证安全 | 后量子加密(ML-KEM-768 + ChaCha20-Poly1305) | | 数据保护 | 自动对截图和日志中的个人身份信息进行脱敏处理 | | 会话控制 | 可配置的超时时间、自动过期、无活动锁定 | | 访问控制 | 基于令牌的身份验证,具备暴力破解防护功能 | | 合规日志记录 | 符合 OWASP 标准的事件类别、关联 ID |

合规标准支持

| 标准 | 覆盖范围 | |----------|----------| | SOC 2 Type II | 审计日志、访问控制、静态数据加密 | | GDPR | 数据最小化、数据删除权、审计跟踪 | | PCI DSS | 凭证保护、访问日志记录、加密 | | HIPAA | 审计控制、访问管理、加密 |


📦 安装指南

一键设置(推荐)

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

此操作将完成以下步骤:

  1. 安装依赖项并构建项目
  2. 向 Claude Code 注册 MCP 服务器
  3. 启动具有远程调试功能的 Chrome
  4. 创建一个隔离的 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 |


💻 使用示例

快速开始

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"

可用工具

浏览器自动化工具(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"
"Name: Google Work"
"Type: google"
"Email: me@example.com"
"Password: mypassword123"
"Domain: google.com"

使用凭证登录

"Navigate to https://accounts.google.com"
"Use secure_login with the stored credential"

secure_login 工具将执行以下操作:

  • 从凭证库中检索并解密凭证
  • 自动填充用户名/电子邮件字段
  • 自动填充密码字段
  • 点击提交按钮
  • 使用后自动从内存中清除凭证

📚 详细文档

合规日志记录

支持以行业标准格式进行 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 - 敏感数据检索

快速配置

# 为 Splunk 启用 CEF 日志记录
COMPLIANCE_LOG_FORMAT=cef
COMPLIANCE_LOG_DIR=./logs/compliance

# 转发到远程 Syslog
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

Docker 部署

推荐用于生产环境。

部署步骤

# 克隆并启动
git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git
cd chrome-mcp-secure
docker-compose up -d

生产配置

# 复制示例配置
cp env.example .env

# 根据环境进行编辑
vim .env

# 使用自定义配置启动
docker-compose up -d

关键环境变量

# SIEM 集成
COMPLIANCE_LOG_FORMAT=cef              # cef, syslog, jsonl, json
SYSLOG_HOST=siem.company.com           # 远程 Syslog 服务器
SYSLOG_PORT=514

# 加密(生产环境必需)
CHROME_MCP_ENCRYPTION_KEY=$(openssl rand -base64 32)

# 会话安全
CHROME_MCP_SESSION_MAX_LIFETIME=28800000   # 8 小时
CHROME_MCP_SESSION_INACTIVITY=1800000      # 30 分钟

日志收集

日志将以所选格式写入 ./logs/compliance/

# 查看合规日志
tail -f logs/compliance/compliance-2025-12-16.cef

# 通过 Syslog 转发到 Splunk
docker-compose logs chrome-mcp | nc -u siem.company.com 514

配置

环境变量

# 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  # 5 分钟

# 日志记录
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

# 从 Claude Code 卸载
./setup.sh --uninstall

# 启动/停止 Chrome
./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 服务器入口点
│   ├── cdp-client.ts         # 持久化 CDP WebSocket 客户端
│   ├── tools.ts              # 浏览器自动化工具
│   │
│   │── # Core Security (v2.1.0)
│   ├── credential-vault.ts   # 加密的凭证存储
│   ├── credential-tools.ts   # 凭证 MCP 工具
│   ├── crypto.ts             # 后量子加密(ML-KEM-768 + ChaCha20)
│   ├── secure-memory.ts      # 内存保护实用工具
│   ├── security.ts           # 输入验证、速率限制
│   ├── logger.ts             # 自动屏蔽的日志记录
│   ├── errors.ts             # 类型化错误类
│   │
│   │── # Advanced Security Modules (v2.2.0+)
│   ├── secrets-scanner.ts    # 凭证泄漏检测(25+ 模式)
│   ├── response-validator.ts # 提示注入检测
│   ├── session-manager.ts    # 会话生命周期管理
│   ├── mcp-auth.ts           # 基于令牌的 MCP 身份验证
│   ├── cert-pinning.ts       # 敏感域名的证书固定
│   ├── screenshot-redaction.ts # 自动脱敏敏感字段
│   └── file-permissions.ts   # 跨平台安全文件权限
│
├── dist/                     # 编译后的 JavaScript
├── setup.sh                  # Linux/macOS 设置
├── setup.ps1                 # Windows 设置
├── SECURITY.md               # 安全文档
├── CHANGELOG.md              # 版本历史
├── CLAUDE.md                 # Claude Code 集成指南
└── 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 - 高级安全模块

六个新的安全模块,总计 3000+ 行 安全强化代码:

  1. 秘密扫描器 - 使用 TruffleHog、GitLeaks 和 MEDUSA 的模式检测页面内容中的泄漏凭证
  2. 响应验证器 - 阻止抓取内容中的提示注入攻击
  3. 会话管理器 - 在可配置的超时时间后自动过期凭证会话
  4. MCP 身份验证 - 使用基于令牌的身份验证保护 MCP 服务器本身
  5. 证书固定 - 验证敏感域名的 TLS 证书
  6. 截图脱敏 - 在截图前覆盖敏感字段

完整的版本历史请见 CHANGELOG.md

故障排除

Chrome 无法访问

curl http://localhost:9222/json
# 如果无响应,启动 Chrome:
./setup.sh --start-chrome

凭证解密失败

  1. 检查是否更换了机器(机器派生密钥将失效)
  2. CHROME_MCP_ENCRYPTION_KEY 设置为用于加密的相同密钥
  3. 如果密钥丢失,可能需要重新存储凭证

元素未找到

使用 get_page_info 查看可用元素
使用 wait_for_element 处理动态内容

开发

# 安装依赖项
npm install

# 开发模式(自动重新加载)
npm run dev

# 类型检查
npm run typecheck

# 生产构建
npm run build

# 运行构建版本
npm start

报告漏洞

如果发现安全问题,请 不要公开在 GitHub 上创建问题。 请发送电子邮件至:support@pantheonsecurity.io

致谢

许可证

MIT - 与原始版本相同。


Pantheon Security 进行安全强化

完整安全文档报告漏洞

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client