日志日期 · 周二
Electron 44.4.0:自定义协议校验与 V8 代码缓存修复
Electron 44.4.0 校验特权协议名称、修复 V8 代码缓存与跨站拖放检查,依赖这些机制的桌面应用需回归测试。
当天发生了什么
2026-09-15T17:06Z(UTC),electron/electron 仓库发布了 v44.4.0,同日还发布了 43.7.1 和 42.11.4。44.4.0 的发布说明包括:传给 protocol.registerSchemesAsPrivileged() 的协议名会按 URI 协议语法校验,不合法的名称被拒绝;修复了从 file:// 和自定义协议页面加载的 https 脚本的 V8 代码缓存问题;此前在同一页面跨站框架之间阻止拖放的浏览器侧检查被禁用,现已修复;在 macOS 上,辅助可执行文件在没有进程类型参数时启动可能拉起第二个应用实例,现在该配置下 child_process.fork() 会抛出异常;修复了 Windows 上 app.getPreferredSystemLanguages() 的内存泄漏和释放后使用问题;Node.js 更新到 v24.21.0,并回移了 Chromium、V8 等上游修复。发布说明没有单独的安全章节。
对保护应用逻辑的人意味着什么
Electron 应用的业务逻辑以 JavaScript 形式随安装包分发,很多保护方案会借助自定义协议加载资源、使用 V8 代码缓存或快照,或依赖进程模型与 fuse 配置。这次补丁版本恰好触及其中几处:自定义协议名称开始被严格校验,V8 代码缓存行为被修正,macOS 上 fork 的行为也有变化。这些都是正确性或安全性修复,但对依赖这些机制的加载器来说,补丁版本也可能改变行为。跨站拖放检查的修复则提醒我们,渲染进程之间的边界依赖框架本身的实现,及时升级本身就是防护的一部分。
可以做的检查
第一,检查应用注册的所有特权协议名称是否符合 URI 协议语法,并在升级后确认资源加载正常。第二,如果你的保护或启动优化依赖 V8 代码缓存、快照或字节码,升级后在 Windows 与 macOS 上分别回归验证。第三,搜索代码中对 child_process.fork() 的使用,确认在 macOS 打包后仍按预期工作。第四,升级后重新确认 fuse 配置与 asar 完整性设置,并重新签名和公证。第五,保持在受支持的 Electron 主版本线上,及时跟进补丁版本。
行动清单
- 核对特权协议名称合法性并回归资源加载
- 依赖 V8 代码缓存或快照的保护在双平台回归
- 升级后复核 fuse 与 asar 完整性并重新签名公证
原始资料
- GitHub: electron/electron release v44.4.0 · 资料日期 2026-09-15 · 核对于 2026-10-12