IPBUF安全漏洞报告
English
CVE-2026-34773 CVSS 4.7 中危

CVE-2026-34773 Electron协议注册表劫持漏洞

披露日期: 2026-04-04

漏洞信息

漏洞编号
CVE-2026-34773
漏洞类型
输入验证不严
CVSS评分
4.7 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Electron

相关标签

Electron注册表劫持输入验证路径遍历本地漏洞Windows

漏洞概述

Electron是一个使用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`等),篡改其关联的命令行参数。一旦用户触发被劫持的协议,系统将执行攻击者指定的恶意程序,从而实现本地代码执行或权限提升。该漏洞需要本地低权限用户交互或诱导应用运行,且无需用户界面交互即可完成利用。

攻击链分析

STEP 1
侦察
攻击者识别出目标Electron应用程序调用了`app.setAsDefaultProtocolClient`函数,且该函数使用了外部或未受信任的输入作为协议名称参数。
STEP 2
构造载荷
攻击者构造一个包含路径遍历字符(如反斜杠或点)的恶意字符串,旨在绕过注册表路径限制并指向敏感的注册表项。
STEP 3
执行攻击
攻击者诱导应用程序调用该API并传入恶意载荷。由于缺乏验证,应用程序在Windows注册表中的`HKCU\Software\Classes\`下的任意位置执行写入操作。
STEP 4
劫持协议
攻击者修改现有的协议处理程序注册表项,将其关联的命令指向攻击者控制的恶意可执行文件。
STEP 5
达成目的
当用户或系统触发被劫持的协议时,恶意代码被执行,导致系统完整性受损或潜在的提升权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-34773 // This demonstrates how untrusted input can write to arbitrary registry keys via path traversal. const { app } = require('electron'); // Simulate untrusted input containing a path traversal payload // This payload attempts to escape the protocol root and write to an arbitrary key const maliciousProtocol = "safe_protocol\..\..\ArbitrarySubKey"; // The vulnerable function does not validate the protocol name // This results in a registry write operation at: // HKCU\Software\Classes\ArbitrarySubKey app.setAsDefaultProtocolClient(maliciousProtocol); console.log(`[+] Attempted to hijack registry using protocol: ${maliciousProtocol}`); console.log(`[+] Check HKCU\Software\Classes\ArbitrarySubKey for impact.`);

影响范围

Electron < 38.8.6
Electron < 39.8.1
Electron < 40.8.1
Electron < 41.0.0

防御指南

临时缓解措施
如果无法立即升级,开发者应检查所有调用`app.setAsDefaultProtocolClient`的代码路径。确保传入的协议名称经过严格的验证,必须拒绝包含反斜杠(\)、斜杠(/)或任何路径遍历序列的输入。建议仅允许字母数字字符和特定的合法协议符号(如冒号、加号、点号),并尽量使用硬编码的协议名称以消除风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表