微软最近宣布了新版本的 Microsoft Teams 桌面应用程序。在这篇博文中,我们将介绍这个新版 Teams 带来的一些安全改进。
使用 MSIX 进行更安全的部署
新的 Teams 不再依赖于定制的部署和更新解决方案。 相反,它现在利用 Windows 原生支持的 MSIX 程序包和应用程序安装程序。与使用自定义安装程序和更新程序相比,这大大降低了风险面和维护成本。
微软也不再在用户配置文件中安装 Teams。虽然在用户配置文件中安装很方便并且不需要提升权限,但它也使常见的后开发活动(例如维护持久性)变得更加容易。新的 Teams 依赖 App Installer 进行安装,并将安装在特权位置,非管理员用户无法在该位置篡改其可执行文件。
使用 Edge WebView2 运行时更新更快
新 Teams 中最重要的架构变化之一是从 Electron 迁移到 Edge WebView2。Electron 和 WebView2 最终都基于相同的 Chromium 浏览器引擎,但是切换到 WebView2 允许新的Teams从各种效率中受益。
例如,Windows 上的新 Teams 在Evergreen distribution model中利用 WebView2。这意味着 WebView2 运行时通过 Edge 浏览器更新,独立于 Teams 客户端,并且可以在多个嵌入应用程序(例如,Teams 和 Outlook)之间共享。这通过在多个嵌入应用程序之间共享 WebView2 实例来节省用户设备上的存储空间。
Evergreen distribution模型还具有为嵌入应用程序提供最新和最安全的运行时的安全优势。 尽管确实有一个程序来确保经典 Teams 客户从 Chromium 接收适用的安全修复程序,但切换到Evergreen的 WebView2 运行时使微软能够减少与向后移植相关的工作量并更快地向客户提供安全修复程序。
应用程序更加简洁-拒绝臃肿
从 Electron 切换到 WebView2 的另一个影响是主要 Teams 可执行文件更苗条:新 Teams 不到 12 MB,而经典 Teams 超过 134 MB。
这仅仅是因为经典 Teams 由 Electron 可执行文件提供服务,包括大部分 Chromium、Node.js 和所有 Electron 逻辑。也许令人惊讶的是,它包含非常少的应用程序逻辑——其中大部分都作为 JavaScript 和 DLL 文件与可执行文件一起交付。换句话说,有一点开销和额外的风险面。
相比之下,新Teams的主要可执行文件主要包含应用程序逻辑和所需的基础设施。它既不包括 Chromium 也不包括 Node.js。没有 V8(Node.js 和 Chromium 使用的 JavaScript 引擎)或任何其他编译器/解释器,特别是在未来有更多的自由来部署更多的进程和内存安全缓解措施。
使用 Trusted Types 提高网络安全性
现在让我们谈谈我们在网络上所做的改进。新的 Teams 仍然是一个混合客户端,其中客户端应用程序(“外壳”)从网站加载和显示远程内容。通过这种混合架构,Web 层的安全性是整体客户端安全性不可分割的一部分,并且在新 Teams 中也得到了一些重大改进。
微软有一个现代化的网络框架堆栈。新的 Teams 是使用 React 重建的。选择 React 是因为它让工程师更容易编写更安全的代码。
微软改进了内容安全策略 (CSP) 基础架构,允许进行更精细的调整,从而制定更严格、更精细的策略。
微软在缓解跨站点脚本攻击 (XSS) 和部署可信类型方面投入了大量资金。Trusted Types 是一种浏览器强制技术,旨在防止客户端 XSS,例如将未清理的 HTML 标记写入 DOM 而导致的 XSS。启用受信任类型后,浏览器将保护可能导致 DOM 修改(所谓的“接收器”)的属性和函数,以免使用未经批准的清理功能处理的输入进行分配或调用。微软相信 Trusted Types 的采用将显着提高新Teams对 XSS 的抵抗力。