【威胁情报】chrome 插件 Enhanced Image Viewer 被 Chrome 标记"包含恶意软件"的图片查看器扩展,实为 ChatGPT 对话窃取器


逆向分析:被 Chrome 标记"包含恶意软件"的图片查看器扩展,实为 ChatGPT 对话窃取器

分析环境:macOS + Chrome(Manifest V3)。样本为 Chrome Web Store 官方渠道分发的商店版本,分析基于磁盘上的已安装文件(Extensions/<扩展ID>/6.21_0/),未运行样本。

TL;DR

Chrome 弹出"此扩展程序包含恶意软件"警告的 Enhanced Image Viewer(扩展 ID gefiaaeadjbmhjndnhedfccdjjlgjhho,v6.21),表面是一个功能完善、翻译成 31 种语言的图片查看器,但其后台代码会:

  1. 监听你在 chatgpt.com 上的每一次发消息;
  2. 用你自己的登录态重新拉取整个会话内容;
  3. 提取你的提问原文与 AI 回复全文,连同 IP 地理信息、浏览器指纹一起;
  4. AES-GCM 加密后悄悄上传到厂商服务器 enhancedimageviewer.com。

而这一切在其设置页、隐私说明、31 种语言文案中零披露。商店条目已被 Google 下架。

样本信息

项目 内容
扩展名称 Enhanced Image Viewer(更好的 Chrome 图片查看体验)
扩展 ID gefiaaeadjbmhjndnhedfccdjjlgjhho
版本 6.21(Manifest V3)
分发渠道 Chrome Web Store(from_webstore=true,非侧载)
商店状态 已下架(详情页已变为空条目)
商店条目最后更新 2026-06-11(即当前版本至少自该日起在店分发)
技术栈 PureScript + Halogen(编译产物,非手写 JS)
官网/收集端 https://www.enhancedimageviewer.com

申请的权限:

  • API 权限:contextMenus、storage、webNavigation、webRequest、scripting、declarativeNetRequest
  • Host 权限:<all_urls>
  • 内容脚本:<all_urls> + document_start(所有页面最早时机注入)

表面功能:伪装非常"正经"

抛开后台不谈,它的前台确实是个完成度很高的产品:

  • 点击图片放大、缩放、旋转、拖动,带多语言教程页、changelog 页、联系页;
  • 内置一条 declarativeNetRequest 重定向规则(Reddit 的 preview.redd.it 图片转直链 i.redd.it),完全良性;
  • 代码中引用了数十个图床域名(imgur、pixiv、pinterest 及各类图床站),是图片查看器的正常兼容列表;
  • 31 种语言的 _locales 文案,设置页用 Halogen 框架精心搭建。

这种"真实有用 + 工程规范"的外壳,正是它能通过审核、积累用户的原因,也让恶意行为更难被普通用户察觉。

恶意行为链(background.js 逆向)

第 1 步:安装即建档,生成持久用户指纹

安装时生成一个 UUID 作为用户标识,POST /user-api/installed 上报 {userId};通过自家 /welcome-api/json 接口获取 IP 地理数据(代码中该模块就叫 DataCollection.IpApi);再叠加 userAgentData 浏览器指纹。卸载时还会带该 UUID 回调 /uninstalled/?userId=<UUID>,用于统计流失。

第 2 步:监听 chatgpt.com 的发消息动作

后台注册了两个 webRequest 监听器(均限定 frameId === 0 主框架):

  • onBeforeRequest 过滤 https://chatgpt.com/backend-api/*
  • onCompleted 过滤 https://chatgpt.com/backend-api/f/conversation ——这正是你在 ChatGPT 里发送一条消息时触发的接口

同时用正则 ^https://chatgpt\.com/c/<uuid>$ 从标签页 URL 提取会话 ID。也就是说:你每发一条消息,它都会知道。

第 3 步:用你的登录态拉取并解析完整会话

收到发消息事件后,它调用 https://chatgpt.com/backend-api/conversation/<会话ID> 拉取会话完整 JSON,fetch 请求显式设置 credentials: "include"——借你的登录 Cookie 访问这个只有登录用户才能访问的接口。

拿到 JSON 后遍历 mapping 消息树,沿父节点回溯配对,提取出结构化记录:

{ assistantMessageId, promptText, promptResponse, timestamp }
   // assistantMessageId: 消息节点 ID(用于去重)
   // promptText:         你的提问原文
   // promptResponse:     AI 的回复全文
   // timestamp:          时间戳(只挑时间窗口内的新消息,避免重复上传)

已上传过的消息按 assistantMessageId 去重,只增量上报新对话。

第 4 步:AES-GCM 加密外传

最终载荷为:

{ userId, ipGeoData, userAgentData, conversationId, assistant: "ChatGPT", pairs: [...消息对...] }

经 AES-GCM 加密(密钥以 base64 硬编码在扩展内,IV 拼接在密文前),以 Content-Type: text/plain 的普通 POST 发往:

https://www.enhancedimageviewer.com/stats-api/update
https://www.enhancedimageviewer.com/stats-api/update-inter
https://www.enhancedimageviewer.com/stats-api/update
https://www.enhancedimageviewer.com/stats-api/update-inter

加密细节(已从扩展内硬编码常量还原):

  • 算法:AES-256-GCM(32 字节 raw key,crypto.subtle.importKey 导入)
  • 硬编码密钥(base64,即代码中常量 BS):mXmNqOSY72M1Vs0bbGg/CYaQ4zGspd9ab6uPHjxQ/cU=
  • 密钥(hex):99798da8e498ef633556cd1b6c683f098690e331aca5df5a6fab8f1e3c50fdc5
  • IV:每次加密由 crypto.getRandomValues 生成的 12 字节随机值,直接前置拼接在密文头部([IV(12B) || ciphertext+tag])

加密 + 伪装修文本类型,使得无论是肉眼抓包还是企业流量审计都无法直接看出传了什么——但密钥就明文放在扩展里,任何人都能提取,只有厂商能解,这正是典型的间谍软件外传手法。也因此,研究者可凭该密钥解密自己机器上捕获的上报流量,直接验证外传内容(取请求 body 前 12 字节为 IV、其余为密文与 GCM tag,用上述密钥解密即可)。

隐蔽性设计小结

  • 功能外壳真实有用,权限申请(webRequest、<all_urls>)对"图片查看器"勉强说得通;
  • 数据外传加密、低频、走自家域名;
  • 零披露:设置页、31 种语言文案中没有任何一处提到 ChatGPT 或该数据收集行为——这是定性最关键的一点。

严谨排除项:它没有做的事

为避免误伤,以下行为经逐一排查未发现:

  • ❌ 键盘记录(仅有图片查看器自身 UI 的 keydown/keyup)
  • ❌ 读取 document.cookie 或调用 chrome.cookies
  • ❌ 抓取密码框/表单
  • ❌ 广告注入、搜索劫持
  • ❌ 远程代码加载/动态 eval(grep 到的 eval( 均为 Halogen 框架 component.eval() 方法调用,属误报特征)

它是"专注的"数据窃取:只偷 ChatGPT 对话内容 + 使用统计 + 设备/网络指纹。

为什么这构成"恶意软件"

Chrome 商店政策对恶意软件的定义包含"与声明功能无关的隐蔽数据收集"。一个图片查看器,偷偷把你的 AI 对话原文发到自己服务器,且不做任何披露——完全落入该定义。Google 已将其商店条目下架,已安装用户的 Chrome 会收到"此扩展程序包含恶意软件"警告,属正常联动机制。

自查与处置

查自己是否装了:

  • 打开 chrome://extensions,搜索 gefiaaeadjbmhjndnhedfccdjjlgjhho 或 "Enhanced Image Viewer";
  • 或检查磁盘:macOS ~/Library/Application Support/Google/Chrome/*/Extensions/gefiaaeadjbmhjndnhedfccdjjlgjhho、Windows %LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions\gefiaaeadjbmhjndnhedfccdjjlgjhho,目录时间戳即安装/最近更新时间,可作为数据暴露窗口的起点。

处置:

  1. chrome://extensions 中直接移除(卸载回调只上报 UUID,无其他副作用);
  2. 评估 2026 年内你在 ChatGPT 中的敏感对话(代码、密钥、内部信息、隐私)——提问与回复成对泄露;
  3. 它未获取密码与 Cookie,无需改密码;但 AI 对话中若出现过口令、API Key 等,按泄露处理;
  4. 替代品选择知名开源的图片查看扩展,安装前核对权限与功能是否匹配。

时间线与本文局限

  • 商店条目最后由开发者更新于 2026-06-11,当前 6.21 版本至少自该日起分发;
  • 在本次分析所用机器上,该扩展(含目录时间戳与 Chrome 安装记录)于 2026-08-01 落地;若你更早安装过旧版本,暴露窗口可能更长——旧版本是否已含此行为,本次未取证,请以自己机器上的目录时间为准;
  • 分析仅覆盖 v6.21 静态代码;加密载荷的完整字段清单以代码中可确认的为准(已列)。

IOC 汇总

类型 值
扩展 ID gefiaaeadjbmhjndnhedfccdjjlgjhho
扩展名 Enhanced Image Viewer (v6.21)
收集服务器 www.enhancedimageviewer.com
上报端点 /user-api/installed、/stats-api/update、/stats-api/update-inter、/welcome-api/json、/log-api/log-error、/uninstalled/
监听目标 https://chatgpt.com/backend-api/f/conversation(onCompleted)、https://chatgpt.com/backend-api/*(onBeforeRequest)
窃取数据 ChatGPT 提问原文、AI 回复全文、会话 ID、IP 地理、UA 指纹、持久化 UUID
外传特征 AES-256-GCM,硬编码密钥 base64 mXmNqOSY72M1Vs0bbGg/CYaQ4zGspd9ab6uPHjxQ/cU= / hex 99798da8e498ef633556cd1b6c683f098690e331aca5df5a6fab8f1e3c50fdc5,12 字节随机 IV 前置拼接,Content-Type: text/plain

PS:还好我不用web版本的chatgpt!去除ChatGPT 监听、遥测域名、卸载回传 + DNR 兜底阻断:https://github.com/Mr-xn/enhanced-image-viewer-clean


手机扫码阅读

关于后续本站文章的阅读权限说明

普华PowerPMS snapshot.aspx 命令注入漏洞+SQL注入漏洞+JWT硬编码密钥漏洞

评 论