Tauri 跨平台隐身术
摘要 Tauri 以 Rust 后端和系统 WebView 前端的组合,为跨平台桌面应用提供了远小于 Electron 的二进制体积。前后端之间的 IPC 桥接通过 Serde 实现类型安全的序列化,表面上构建了一道结构化的安全边界。然而,这道边界的安全性取决于三个脆弱的假设:origin 验证的正确性、命令参数的类型完整性、以及文件系统 scope 的不可绕过性。CVE-2026-42184 中 is_local_url() 仅检查 URL 第一个子域名标签,使 app.evil.com 被误判为本地 origin,远程页面得以调用仅限本地的前端命令。更深层的攻击链利用未冻结的 JavaScript 原型,通过原型污染篡改 Tauri IPC 桥接所依赖的原型链,劫持 invoke 调用并伪造任意消息类型。结合 #[tauri::command] fn read_file(path: String) 中零路径验证的模式,攻击者可将前端的 XSS 或原型污染升级为任意本地文件读写、持久化安装甚至代码执行。 Tauri IPC 桥接架构 前后端通信模型 Tauri 应用由两个独立进程组成:Rust 后端进程(主进程)和系统 WebView 渲染的前端页面。两者之间的通信通过IPC 桥接完成,前端调用 window.TAURI_INTERNALS.invoke() 发送序列化后的消息,Rust 后端的 invoke_handler 接收并分发到对应的 #[tauri::command] 函数。…