

ModHeader是一款广受欢迎的浏览器扩展程序,在Chrome和Edge平台的累计安装量已超过160万,其中Chrome用户约90万,Edge用户约70万。
近日,有用户发现该扩展会向api.stanfordstudies.com/app/log发送数据,相关问题随即在Reddit和Hacker News等社区引发广泛讨论。
安全研究人员随后下载了ModHeader最新版本(v7.0.17),并对其数据外传流程进行了全面逆向分析。结果显示,实际情况可能比最初披露的更为严重:该扩展不仅利用AES-GCM对存储在IndexedDB中的数据进行加密,还会随机安排上传时间,并在数据成功外传后清除相关记录,以减少可供追踪的证据。
Part01
背景
ModHeader主要用于修改HTTP请求头和响应头,以及设置URL重定向,因此被开发人员和渗透测试人员广泛使用。此次异常最早由Reddit用户u/veqtor发现。其在监测网络流量时捕获到可疑请求,从而引发了研究人员对数据收集、存储和外传全过程的进一步调查。
入口点是压缩后的背景包中的单行代码(background-c2ed2c3f.js):

类似这样的字符串“api.stanfordstudies.com/app/log”不属于标头修改扩展。混淆后的变量名(qw、Yw、Qc)和Unicode盐值(盐)是标准的规避信号。
Part02
根本原因
该扩展程序嵌入了一个完整的数据外泄子系统,该系统独立于其头部修改功能运行。它包含三个核心组件。

此密钥在扩展程序启动时导入,并用于所有加密操作。数据在泄露前已加密,这使得网络级检查无效。
该类Qi将IndexedDB操作封装成一个简单的键值存储。它创建了两个数据库:
settings数据库中settings存储着指纹(fp)、AES-GCM IV和上传状态 temp数据库中temp存储收集到的域数据
该jw()功能会生成唯一的设备指纹:

Part03
数据收集流程
整个链条的运作方式如下。
步骤1:挂钩到每个页面加载事件
该Jw()函数已注册为chrome.tabs.onUpdated监听器。每次标签页加载URL时,它都会调用集合函数。

注意这个空catch块。失败会被默默地吞掉。
步骤2:提取并存储域名
该Zw()函数从URL中提取域名,对其进行加密,并将其与访问次数一起存储在IndexedDB中。

每个被访问过的域名都使用硬编码密钥进行AES-GCM加密。计数记录了每个域名被访问的次数。
步骤3:达到阈值后上传
该Qw()函数根据两个条件决定何时撤离:

上传触发器:
您访问了1000个不同的域名 自上次上传以来已过去24小时
步骤4:加密并寄送
触发后,整个域集合将被序列化、AES-GCM加密,并通过POST发送到C2端点。

上传成功后,tempIndexedDB将被清除。证据将不复存在。
步骤5:POST请求体

最多重试3次,每次重试间隔1秒。有效载荷包含加密的域名数据、持久设备指纹和浏览器标识。
Part04
泄露的数据

Part05
隐形机制
1. 随机上传计划
该zw()函数计算一个时间窗口,该窗口因安装而异。它首先计算用户所在时间SHA-256(fp + "mod盐header"),然后对结果取模8小时(28800秒),最后加上7小时(25200秒)。最终输出是相对于用户所在时间午夜7到15小时之间的随机偏移量。每个安装都在不同的时间窗口内上传文件。

盐Yw = "mod盐header"使用了汉字(盐=“salt”),这使得这部分内容更难用grep命令找到。
2. 自毁的证据
上传成功后,await r.clear()会清除整个tempIndexedDB。
3. 加密传输
使用硬编码密钥的AES-GCM加密使得有效载荷在网络上看起来像是不透明的二进制数据。网络监控器看到的是随机的数据块,而不是域名列表。
4. 静默失败
每个数据外泄函数都将调用包装在try/catch语句块中,但语句块本身是空的。错误是不可见的。
Part06
附加跟踪
该扩展程序还会将安装、更新和卸载事件报告给extensions-hub.com:

每次更新都会打开一个指向extensions-hub.com的标签页,显示扩展程序版本和浏览器类型。
Part07
为什么这种模式会反复出现?
浏览器扩展程序是大多数组织机构的盲点。它们在用户的浏览器环境中运行,拥有广泛的权限,并且其代码会在用户不知情的情况下更新。Chrome网上应用商店的审核流程可以检测到明显的恶意软件,但由于审核人员时间有限且代码经过压缩,一些经过混淆的数据收集管道经常能蒙混过关。
硬编码的AES密钥、随机计时器和证据清除机制,与安全研究员在Foxtopia NPM供应链恶意软件中记录的规避三要素相同。这里的Unicode盐值(mod盐header)也采用了相同的混淆技术。
核心问题在于,扩展程序模型赋予了扩展程序强大的功能(例如对所有URL使用webRequest,对本地存储使用IndexedDB,以及网络访问),但运行时却很少验证扩展程序实际如何使用这些功能。Chrome团队一直在推进Manifest V3的开发,以限制部分功能,但本次分析中的V3扩展程序表明,V3并不能阻止数据泄露。
另一个因素是盈利。拥有数百万用户的免费扩展程序会刺激开发者将用户数据变现。该api.stanfordstudies.com域名显然是一个数据收集终端,伪装成学术研究项目。这是一种常见的套路:用加密技术包装数据收集过程,使用看似合法的域名,悄悄收集浏览数据,然后出售给数据经纪商或分析平台。
Part08
影响
安装ModHeader后,访问的每个域名都会被记录并窃取。这包括公司内部域名、VPN登录页面、云控制台和敏感应用程序URL。 数据在传输过程中加密,但服务器可以解密。没有用户控制的密钥。 IndexedDB的持久性意味着即使网络中断,数据也会不断累积,一旦网络连接恢复,上传就会继续进行。 extensions-hub.com跟踪提供额外的行为遥测数据。 手术范围:这不是通用的分析SDK。这是一个定制构建的、具有反取证功能的数据窃取管道。
Part09
披露
目前,该问题尚未获得CVE编号。ModHeader是一款通过Chrome网上应用店分发的专有扩展程序,此次分析对象为其7.0.17版本的CRX安装包,相关结论主要来自对扩展后台脚本的静态分析。
此次研究是在u/veqtor最初发现异常网络请求的基础上展开的进一步技术分析。
鉴于相关风险,建议用户尽快从浏览器中移除ModHeader,并向Chrome网上应用店提交举报。对于仍有修改HTTP标头等需求的用户,可考虑选择不包含此类可疑数据收集机制的开源替代方案。
Part10
时间线

参考来源:
ModHeader: Covert Data Exfiltration to api.stanfordstudies.com
https://aydinnyunus.github.io/2026/07/12/modheader-data-exfiltration-stanfordstudies/

电报讨论



夜雨聆风