Applies ToMicrosoft 365 (retired - do not use) Office 2019 Office 2016

Microsoft 在 Office Visual Basic for Applications (VBA) 宏项目签名中发现了一个漏洞。 此漏洞可能会使恶意用户篡改已签名的 VBA 项目,而不会使其数字签名失效。 因此,我们建议用户应用 Microsoft 公共漏洞和暴露 CVE-2020-0760 中列出的安全更新。

为增强 Office VBA 宏项目签名的安全性,Microsoft 提供了更安全的 VBA 项目签名方案版本:V3 签名。 V3 签名在以下产品中可用: 

建议组织将 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 文件重新签名。

  1. 若要对 VBA 文件重新签名,请在文件内按 Alt+F11 以打开 VBA 编辑器。

  2. 若要将现有签名替换为 V3 签名,请选择“工具”>“数字签名”。 “数字签名”对话框随即打开。

    注意: 若要对 VBA 项目进行签名,必须正确安装私钥。 有关详细信息,请参阅 对宏项目进行数字签名

    选择数字签名的截图

  3. 选择“选择”以选择要用于对 VBA 项目进行签名的证书私钥,然后选择“确定”选择证书

  4. 若要生成新签名,请再次保存该文件。 新的数字签名将替换以前的签名。

使用 SignTool 对 VBA 文件重新签名

Windows 10 SDK 中的 SignTool 可帮助通过命令行对 VBA 文件重新签名。 若要根据“创建已签名 VBA 文件的清单”部分中指明的清单列表批量处理重新签名工作,可以将 SignTool 集成到自己的管理工具中。

注意: 目前,SignTool 不支持 Microsoft Access。

要使用 SignTool 对 VBA 文件重新签名,请执行以下步骤:

  1. 下载并安装 Windows 10 SDK

  2. 从用于数字签名 VBZ 项目的 Microsoft Office 主题界面包中下载 Officesips.exe。

  3. 若要对文件进行签名并验证文件中的签名,请注册 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 文件中早期格式的签名。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。