CVE-2026-34773Electron是一个使用JavaScript、HTML和CSS构建跨平台桌面应用程序的框架。在38.8.6、39.8.1、40.8.1和41.0.0版本之前,Windows平台上的`app.setAsDefaultProtocolClient(protocol)`函数存在安全漏洞。该函数在写入注册表之前未对协议名称进行有效验证。当应用程序使用源自外部或不受信任输入的协议名称调用此函数时,攻击者可能利用此漏洞向`HKCU\Software\Classes\`下的任意子键写入数据,从而劫持现有的协议处理程序。此漏洞仅影响将未受信任输入传递给该函数的应用程序,使用硬编码协议名称的应用不受影响。该问题已在后续版本中修复。
该漏洞的核心在于Windows平台上Electron的`app.setAsDefaultProtocolClient` API未对传入的协议名称参数进行充分的输入验证。在Windows系统中,协议关联信息存储在注册表`HKEY_CURRENT_USER\Software\Classes\`路径下。当应用调用该API时,若直接使用未经净化的用户输入(如命令行参数、网络数据等)作为协议名称,攻击者可构造包含路径遍历序列(例如`..\`)的恶意字符串。由于缺乏校验,API会将该恶意字符串直接作为注册表路径的一部分进行写入操作。这导致攻击者能够绕过预期的目录限制,在`HKCU\Software\Classes\`下的任意位置创建或修改注册表项。利用此机制,攻击者可以劫持系统中已存在的协议处理程序(如`http`、`mailto`等),篡改其关联的命令行参数。一旦用户触发被劫持的协议,系统将执行攻击者指定的恶意程序,从而实现本地代码执行或权限提升。该漏洞需要本地低权限用户交互或诱导应用运行,且无需用户界面交互即可完成利用。