Microsoft 在 Office Visual Basic for Applications (VBA) 宏项目签名中发现了一个漏洞。 此漏洞可能会使恶意用户篡改已签名的 VBA 项目,而不会使其数字签名失效。 因此,我们建议用户应用 Microsoft 公共漏洞和暴露 CVE-2020-0760 中列出的安全更新。
为增强 Office VBA 宏项目签名的安全性,Microsoft 提供了更安全的 VBA 项目签名方案版本:V3 签名。 V3 签名在以下产品中可用:
-
Microsoft 365 版本 2102(内部版本 16.0.13801.20266)以及当前频道的更高版本
-
批量许可的 Office 2019 版本 1808(内部版本 10372.20060)以及更高版本
-
Office 2016 即点即用版本和 Office 2019 版本 2102(内部版本 16.0.13801.20266)以及更高版本的零售版
-
基于 Microsoft Installer (.msi) 的 Office 2016 版本,具有以下更新或更高版本的更新:
建议组织将 V3 签名应用于所有宏,以消除篡改风险。
默认情况下,为了确保向后兼容性,具有现有签名的 VBA 文件将继续有效,并且使用 V3 签名的文件可以在早期版本的 Office 或未更新的 Office 客户端中打开和运行。 但是,我们建议管理员在将 Office 升级到列出的版本后,尽快将现有 VBA 签名升级到 V3 签名。 在管理员验证组织没有兼容性丢失后,他们可以通过启用 使用 V3 签名策略设置的“仅信任 VBA”宏来禁用旧的 VBA 签名。 有关此策略设置的详细信息,请参阅“启用策略设置:仅信任使用 V3 签名的 VBA 宏” 部分。
将已签名的 VBA 文件升级到 V3 签名
管理员可以使用以下主题将现有的 VBA 签名文件升级到 V3 签名。
使用 VBA 编辑器对 VBA 文件重新签名
如果有私有证书,请使用 Office 应用程序中提供的 Visual Basic for Applications (VBA) 编辑器对 VBA 文件重新签名。
-
若要对 VBA 文件重新签名,请在文件内按 Alt+F11 以打开 VBA 编辑器。
-
若要将现有签名替换为 V3 签名,请选择“工具”>“数字签名”。 “数字签名”对话框随即打开。
注意: 若要对 VBA 项目进行签名,必须正确安装私钥。 有关详细信息,请参阅 对宏项目进行数字签名。
-
选择“选择”以选择要用于对 VBA 项目进行签名的证书私钥,然后选择“确定”。
-
若要生成新签名,请再次保存该文件。 新的数字签名将替换以前的签名。
使用 SignTool 对 VBA 文件重新签名
Windows 10 SDK 中的 SignTool 可帮助通过命令行对 VBA 文件重新签名。 若要根据“创建已签名 VBA 文件的清单”部分中指明的清单列表批量处理重新签名工作,可以将 SignTool 集成到自己的管理工具中。
注意: 目前,SignTool 不支持 Microsoft Access。
要使用 SignTool 对 VBA 文件重新签名,请执行以下步骤:
-
下载并安装 Windows 10 SDK。
-
从用于数字签名 VBZ 项目的 Microsoft Office 主题界面包中下载 Officesips.exe。
-
若要对文件进行签名并验证文件中的签名,请注册 Msosip.dll 和 Msosipx.dll,然后运行 Offsign.bat。 详细步骤包含在 Officesips.exe 的安装文件夹中的 Readme.txt 文件中。
注意: 运行 Offsign.bat 时,请使用“C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86”文件夹中的 x86 版 SignTool
启用策略设置:“仅信任使用 V3 签名的 VBA 宏”
完成升级到 V3 签名后,建议启用仅信任使用 V3 签名的 VBA 宏策略设置,以确保只有使用 V3 签名的文件受信任。
此策略设置在组策略或 Office 云策略服务 中可用。 它位于 用户配置\策略\管理模板\Microsoft Office 2016\安全设置\信任中心 中。 如果启用此设置,当 Office 验证文件中的数字签名时,只有 V3 签名才被视为有效。 将忽略 VBA 文件中早期格式的签名。