CVE-2026-34765Electron是一个使用JavaScript、HTML和CSS编写跨平台桌面应用程序的框架。在39.8.5、40.8.5、41.1.0和42.0.0-alpha.5版本之前,存在一个安全漏洞。当渲染器使用目标名称调用window.open()时,Electron未能正确将命名窗口查找范围限制在打开者的浏览上下文组内。如果两个不相关的渲染器使用相同的目标名称,一个渲染器可能会导航由另一个渲染器打开的现有子窗口。如果该现有子窗口是通过setWindowOpenHandler的overrideBrowserWindowOptions创建的,并拥有更宽松的webPreferences(如特权预加载脚本),第二个渲染器加载的内容将继承这些权限。这可能导致权限提升,甚至在特定配置下导致任意代码执行。
该漏洞源于Electron在处理命名窗口查找时的逻辑缺陷。具体来说,当渲染进程调用window.open()并指定一个target名称时,框架未能将该查找操作严格限定在调用者所属的浏览上下文组内。这意味着,如果应用程序打开了多个具有不同信任级别的顶级窗口,且使用了setWindowOpenHandler来为某些子窗口分配更高的权限(例如通过overrideBrowserWindowOptions设置特权预加载脚本),攻击者可以利用这一点。攻击场景如下:假设渲染器A(低权限)尝试打开一个窗口,使用了特定的target名称(如"foo")。如果另一个渲染器B(高权限上下文,或父窗口拥有创建高权限子窗口的能力)之前也使用"foo"作为target名称打开了一个具有高权限的子窗口,由于漏洞的存在,渲染器A可能实际上导航到或控制了原本属于高权限上下文的窗口。一旦低权限内容获得了高特权窗口的引用,它就可以访问那些被提升的webPreferences,如nodeIntegration或沙箱绕过,从而导致敏感信息泄露、权限提升,甚至在子窗口禁用沙箱时实现任意代码执行。这破坏了Electron应用中多窗口架构的安全隔离边界。