安全
本指南旨在解释 Tauri 设计核心中的高级概念和安全功能,这些功能默认情况下可以提高您的安全性、应用安全性以及用户安全性。
虽然我们尽一切努力帮助您加强应用程序的安全性,但始终存在一些潜在威胁,例如 BIOS 攻击、内存行锤击以及其他不断被发现(在最佳情况下会被负责任地披露)的操作系统漏洞。
此外,开发团队有很多方法可以偷工减料,从而泄露敏感信息或为各种攻击敞开大门。安全是一项永无止境的追求,您的用户依靠您来保障他们的安全。
因此,我们强烈建议您花一些时间考虑应用程序执行的所有操作的安全隐患,尤其是在最终用户设备的半敌对平台上运行的背景下。
如果您需要帮助或想要进行审查,欢迎您联系 Tauri 团队进行安全咨询。
安全研究人员
如果您认为 Tauri 中存在安全问题或隐患,请不要公开评论您的发现。请直接联系我们的安全团队:[email protected]
虽然我们目前没有安全奖励计划的预算,但在某些情况下,我们会考虑用我们有限的资源奖励负责任的披露。
无需服务器
Tauri 使您能够构建一个使用 Web 技术作为用户界面的应用程序,而无需使用服务器与后端通信。即使您使用了动态导入和将工作卸载到后端的先进技术,也无法在 TCP 端口或外部进程上嗅探流量,因为它们不存在。这不仅大大减少了最终二进制文件的物理和虚拟占用空间,而且还通过消除潜在的攻击媒介来减少潜在攻击面的面积。
Rust 的语言特性
通过转向以其内存安全性和速度而闻名的编程语言,Tauri 简化消除了整类常规攻击。“使用后释放”根本不可能在 Tauri 中发生。
动态提前编译 (AOT)
此编译过程在 Tauri 应用的引导阶段会发生多次。使用我们的默认动态提前编译器,您可以生成对每个会话都唯一的代码引用,并且它们仍然是静态代码单元。
函数强化
功能性 ASLR
功能性地址空间布局随机化技术随机化运行时函数名称,并可以实现 OTP 哈希,因此没有两个会话是相同的。我们提出了一种新颖的启动时函数命名类型,并且可以选择在每次执行后进行命名。为每个函数指针使用 UID 可以防止静态攻击。
神风特攻队函数注入
这种使用 `EVENT` API 端点的先进类型的 fASLR 是一种用闭包(带随机句柄)包装的 Promise,Rust 在运行时将其插入 WebView,其接口在 Promise 解析处理程序中被锁定,并在执行后被清除。
桥接,而非服务
可以使用事件桥将消息和命令传递到应用程序各自端点上的命名代理,而不是传递潜在的不安全函数。
一次性密码令牌化和哈希
使用 OTP 盐值对重要消息进行哈希处理,您可以加密用户界面和 Rust 后端之间的消息。我们目前正在研究使用其他熵源,例如令人惊叹的 Infinite Noise TRNG。
系统特性
允许 API
您可以选择哪些 API 函数可用于 UI 和 Rust。如果未启用它们,则代码不会与您的应用程序一起发布,从而减少了二进制文件大小和攻击面。它们是可选的,因此您必须有意识地选择逐步增强您的应用程序。
内容安全策略管理
长期以来,使用 CSP 防止网站的未授权代码执行已被“解决”。Tauri 可以将 CSP 注入用户界面的 `index.html` 中,当使用本地主机服务器时,它还会将这些标头发送到 UI 或任何与其连接的其他客户端。
反编译很困难
这意味着您的应用程序不容易被反编译,就像 Electron ASAR 文件一样,这使得逆向工程您的项目的过程更加耗时,并且需要专业的培训。
生态系统
构建管道和工件真实性
发布我们的源代码工件的过程是高度自动化的,但需要来自真正人员的启动和审查。我们目前的发布策略结合使用了 GitHub Actions 和 IOTA Tangle 发布。
弹性的 PR 和审批流程
我们的 WG-TECH 审查代码更改,用范围标记 PR,并确保所有内容保持最新。当需要发布新版本时,维护者之一会在 dev 上标记一个新版本,该版本会:
- 验证核心
- 运行冒烟测试
- 审核 crates 和 npm 的安全性
- 生成变更日志
- 创建工件
- 将校验和发布到 IOTA
- 创建草稿版本
然后维护者审查发行说明,如有必要进行编辑,然后生成新的版本。
未来工作
签名二进制文件
因为整个项目都打包在一个单体二进制文件中,所以可以为所有可分发文件签名代码。(目前使用外部工具,但我们正在积极努力使捆绑器成为一站式商店。)这使得黑客几乎不可能更改已安装的应用程序,而不会被操作系统察觉。参考
二进制后分析
使用工业级渗透测试工具(通过我们即将推出的 Tauri-Frida GUI)来发现和修复最终二进制文件中的安全漏洞。
二进制后增强
构建之后是交付之前,Tauri 将为您提供前所未有的工具。敬请期待!
审核
我们目前正在进行第一次外部审核。完成后,我们将在此处发布结果。