你想象过吗?仅仅点开一个网页,Tor浏览器就被人远程控制了,无需下载文件,不用点击任何权限弹窗,安静得像什么都没发生。Nebula Security的研究人员刚刚展示了这种攻击的可能性:只要Firefox核心引擎里还藏着一个CVE-2026-10702,未打补丁的Tor浏览器就像一个敞开的大门,等着恶意网页进来拿走会话、探取身份。
6月初Mozilla已经在Firefox 151.0.3里修好了这个高危JavaScript引擎缺陷,7月下旬Tor项目也把修复整合进了Tor Browser 15.0.19。但如果你还在运行更早的版本,那个漏洞就是一根埋在浏览器进程里的引信,一个恶意网页就足以把它点燃。
漏洞的根子扎在Firefox的SpiderMonkey JavaScript引擎深处,准确地说是在Ion/Warp这一套即时编译(JIT)优化流水线里。Tor浏览器把Firefox当骨架,所以所有骨架上的裂缝自然也就划在了Tor身上。过去人们讨论匿名浏览器的威胁模型,总把重点放在网络层面的去匿名化,但这次漏洞明明白白地说了一件事:浏览器引擎本身的代码执行缺陷,可以直接绕过所有网络层的保护,从渲染进程里把底裤掀开。
Nebula Security的研究把攻击链条画得异常清晰:攻击者只需要部署一个精心构造的恶意网页,受害者用Tor浏览器打开它,SpiderMonkey在解析和执行JavaScript时就会触发JIT优化错误。这个错误落脚在渲染器进程的任意代码执行上,不需要沙箱逃逸,也不依赖用户交互,因为漏洞的原生能力就是在渲染进程内获得代码执行权。对于一个隐私工具而言,渲染进程失陷几乎等于浏览器隔间被钻透,后续的身份探针、指纹提取、网络请求劫持,都只是时间问题。
要理解为什么一个JIT编译错误能捅出这么大的篓子,得先弄清楚SpiderMonkey在后台到底做了什么装傻的动作。JIT优化的基本原理并不复杂:把频繁执行的热点JavaScript代码直接编译成本地机器码,跳过解释执行的开销。这过程里,引擎需要对变量类型、对象形状、属性访问路径做出大量推测,并按推测结果生成高效代码。一旦推测有误,就得反优化(deopt)回到解释模式。真正致命的是,如果推测错误发生在内存操作的依赖关系上,就可能生成读写已被释放内存的代码——这正是CVE-2026-10702的底牌。
研究人员把三个具体的优化缺陷钉在了墙上:
第一,对象键处理里的错误假设。引擎在优化`Object.keys()`这类操作时,针对数组和对象键的推断过于乐观,假定某些内存布局不会在优化期间发生变化,但实际上后续的属性查找完全可以触发内存重新分配,让原先的指针变得无效。
第二,延迟属性解析埋下的地雷。SpiderMonkey在遇到`length`、`name`、`prototype`这类隐式属性查找时,会采用延迟填充的方式生成完整属性缓冲区。这个过程伴随新的内存分配,但JIT优化器并没有正确处理这种分配操作的副作用,继续使用旧的属性缓冲区指针,妥妥的“释放后使用”(use-after-free)。
第三,别名分析的误判。编译器把一些会分配内存的操作错误地标记为“无害读取”,以为它们不改变对象身份,从而在生成的机器码中保留了指向旧内存区域的引用。这相当于在代码里留了一扇暗门:一个本来应该被回收的内存块,却被当成正常数据继续读写。
这三个缺陷串在一起,攻击者就可以从use-after-free原语中构造出地址泄露和伪造对象。通俗地说,先用漏洞把渲染进程的内存布局看清楚,再伪造一个可控的JavaScript对象放在那里,接下来想读什么就读什么,想执行什么就执行什么。因为这一切都发生在渲染进程内部,浏览器原有的同源策略和进程隔离形同虚设。
这种攻击对匿名网络的威胁格外扎眼。Tor浏览器在设计上把不同网站的标签页隔离在独立的第一方隔离区里,防止跨站追踪,可一旦渲染进程本身被控,网页内执行的任意代码就可以读取当前会话的cookies、本地存储、甚至发起隐蔽的网络请求。更危险的是,如果攻击者把代码执行与后续的沙箱逃逸或权限提升串起来,本机网络接口、DNS缓存、MAC地址等真实身份线索就全暴露了。曾经有人把Tor比作一件隐身斗篷,但这次的漏洞相当于在斗篷里藏了一个发信器——别人不用掀开斗篷,就能知道里面是谁。
好在这次从发现到修复的流程跑得够快。Nebula Security在2026年5月20日就把漏洞详细报告给了Mozilla,当天Mozilla就定位到了根本原因。6月2日,Firefox 151.0.3正式发布,堵住了SpiderMonkey里的这个JIT缺陷。Tor项目随后在7月20日推出了Tor Browser 15.0.19,完成了上游修复的集成。如果你用官方渠道更新到这两个版本以上,那个曾经能用单个网页就端掉渲染进程的漏洞,就失效了。
但这件事背后的反思远不止一个CVE编号。很长一段时间里,隐私浏览器的安全更新节奏和主流浏览器并不同步,不少用户甚至出于“稳定”或“反指纹”的考虑,刻意关闭自动更新。在CVE-2026-10702面前,这种习惯等于主动把浏览器底层的漏洞暴露给整个互联网。Tor网络能隐藏TCP流量的源头,但它无法保护一个已经被黑客掌控的浏览器进程。换句话说,当你选择用隐私工具的时候,如果工具本身的软件栈没有跟着主流安全补丁一起演进,那么隐私往往先死在软件漏洞手里,而不是流量分析。
Nebula Security的研究还间接挑明了一个更顽固的问题:浏览器引擎的安全审计常聚焦于沙箱边界和IPC通信,但JIT编译器的复杂优化过程却像一个不断膨胀的暗区。Ion/Warp流水线里的推测优化、内存依赖的建模、延迟属性填充,这些代码逻辑极度依赖编译工程师的精心维护,任何一个微小的假设错误,都可能被安全研究人员花几周转化成稳定的利用原语。而且这类漏洞不像XPCOM接口之类的边界问题那样容易通过fuzzer快速发现,它常常需要半自动化的代码审计加上领域知识才能挖出来。
对于普通用户,能抓住的安全绳其实很简单:别把隐私和安全当成两个可以分开选的开关。Tor浏览器也好,其他基于Firefox的隐私型浏览器也好,接收到新版本提示时,立即更新就是最便宜也最有效的防御。哪怕你并不关心浏览器引擎里那几百个CVE的细节,至少记住一点——如果一个号称让你隐身的东西,连自己的渲染进程都守不住,所有的匿名承诺都可能在一张恶意网页面前碎得干干净净。
而那些负责维护隐私工具的开发团队,也该把上游安全补丁的合并延迟压到最低。这次从Firefox修好到Tor浏览器发布修复用了将近50天,虽然其中有集成测试和稳定性的考量,但对于一个drive-by级别的攻击向量来说,这50天一点都不短。Nebula Security的报告已经给出了足够的技术拆解,如何把补丁命中率提到接近上游发布时间,是比解释漏洞更迫切的工程命题。
热门跟贴