Office 中 COM 对象的安全设置

应用对象
Microsoft 365 Apps for enterprise Office 2013 SP1 Microsoft Office 2010 Service Pack 2 Office Professional Plus 2016

警告

本文包含的信息向您展示如何控制 Office 的安全设置。 可以更改这些安全设置以提高或降低安全态势。 在进行这些更改之前,我们建议您评估与配置此设置所做的任何更改相关的风险。

简介

本文介绍了可供用户和 IT 管理员使用的设置,这些设置通过 Microsoft Office 删除位列表来控制是否以及如何加载 COM 对象。

有关此功能所基于的 Windows Internet Explorer 删除位行为的详细信息,包括如何设置允许加载更新的 ActiveX 控件的 AlternateCLSID,请参阅 如何阻止 ActiveX 控件在 Internet Explorer 中运行。 
 
本指南适用于 Microsoft Word、Microsoft Excel、Microsoft PowerPoint、Microsoft Publisher 和 Microsoft Visio。  

Office COM 删除位

将 Office COM 删除位引入安全更新 MS10-036 中,用于阻止从 Office 文档嵌入或链接时运行特定的 COM 对象。

KB3178703 中更新了 COM 删除位功能,以完全阻止 Office 在进程内激活 COM 对象。 此更新是原始行为的超集,其中,除了阻止嵌入或链接在 Office 文档中的 COM 对象,这还将阻止通过诸如加载项之类的其他方式在 Office 进程中加载 COM 对象的任何实例。

这些特定的 COM 对象包括 ActiveX 控件和 OLE 对象。 通过注册表,在使用 Office 时,你可以独立控制阻止哪些 COM 对象。

注意: 不建议删除为 COM 对象设置的删除位。 如果这样做,可能会创建安全漏洞。 通常出于可能至关重要的原因设置删除位。 因此,取消终止 ActiveX 控件时必须格外小心。  
 
当必须将新 ActiveX 控件的 CLSID () 并且此 ActiveX 控件已被修改以减少安全威胁) 与应用了 Office COM 删除位的 ActiveX 控件的 CLSID 相关联时,可以添加备用 CLS (ID(也称为“凤凰位”)。 只有在使用 ActiveX 控件 COM 对象时,Office 才支持 AlternateCLSID。  
 
注意: Office 的删除位列表优先于 Internet Explorer 的删除位列表。 例如,可以为同一个 ActiveX 控件设置 Office COM 删除位和 Internet Explorer ActiveX 删除位。 但是,仅在 Internet Explorer 的列表上设置了 AlternateCLSID。 在这种情况下,两个设置之间存在冲突。 在这种情况下,Office COM 删除位设置优先,并且不会加载控件。

设置 Office COM 删除位

重要

  • 此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必仔细遵循以下步骤。 为增强保护,请在修改前备份注册表。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
  • 322756 如何在 Windows 中备份和还原注册表

在注册表中设置 Office COM 删除位的位置如下所示:

对于 Office 2013 和 Office 2010:

  • 对于 64 位 Windows 上的 64 位 Office(或 32 位 Windows 上的 32 位 Office)。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Common\COM Compatibility\{CLSID}

对于 64 位 Windows 上的 32 位 Office:

HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\Common\COM Compatibility\{CLSID}

对于 Office 2016:

  • 对于 64 位 Windows 上的 64 位 Office(或 32 位 Windows 上的 32 位 Office):
    HKEY_LOCAL_MACHINE\Software\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID}
  • 对于 64 位 Windows 上的 32 位 Office:
    HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID}

在这种情况下,CLSID 是 COM 对象的类标识符。

若要启用 Office COM 删除位,请执行以下步骤:

  1. 将注册表子项以及要阻止加载的 ActiveX 控件或 OLE 对象的 CLSID 一起添加。
  2. 将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。

例如,在 Office 2016 上为具有 CLSID {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的对象设置 Office COM 删除位,遵循以下步骤:

  1. 找到以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility

  2. 添加值为 {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的子项。 在这种情况下,生成的路径如下所示:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{77061A9C-2F18-4f38-B294-F6BCC8443D24}

  3. 将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。

现在将 Office COM 删除位设置为阻止在 Office 内激活此对象。

如何在链接和嵌入方案中仅阻止 COM

如前所述,已更新 COM 删除位功能,以此阻止在 Office 中激活所有指定的 COM 对象。

为了仅阻止从 Office 文档中嵌入或链接的 COM 对象,请执行以下步骤:

  1. 根据“设置 Office 删除位”下的说明,将 CLSID 添加到 COM 删除位(如果它已经不在列表中)
  2. 在被阻止的 CLSID 的子项下,添加名为 ActivationFilterOverride 的 REG_DWORD 值,将其值设置为 0x00000001。

例如,在 Office 2016 上为具有 CLSID {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的对象配置 COM 删除位,以仅在链接和嵌入方案中阻止,请遵循以下步骤:

  1. 找到以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility

  2. 添加一个子项,其值为 {77061A9C-2F18-4f38-B294-F6BCC8443D24}。 在这种情况下,生成的路径如下所示:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{77061A9C-2F18-4f38-B294-F6BCC8443D24}

  3. 将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。

  4. 将 REG_DWORD 添加到此称为 ActivationFilterOverride 的子项,然后将其值设为 0x00000001。

现在,将 Office COM 删除位设置为仅在 Office 文档中链接或嵌入此 COM 对象时才阻止该对象。

默认阻止激活的控件

控件 CLSID
ScriptMoniker 06290BD3-48AA-11D2-8432-006008C3FBFC
SoapActivator ECABAFD0-7F19-11D2-978E-0000F8757E2A
SoapMoniker ECABB0C7-7F19-11D2-978E-0000F8757E2A
PartitionMoniker ECABB0C5-7F19-11D2-978E-0000F8757E2A
QueueMoniker ECABAFC7-7F19-11D2-978E-0000F8757E2A
HTMLApplication 3050F4D8-98B5-11CF-BB82-00AA00BDCE0B
ScripletContext 06290BD0-48AA-11D2-8432-006008C3FBFC
ScripletConstructor 06290BD1-48AA-11D2-8432-006008C3FBFC
ScripletFactory 06290BD2-48AA-11D2-8432-006008C3FBFC
ScripletHostEncode 06290BD4-48AA-11D2-8432-006008C3FBFC
ScripletTypeLib 06290BD5-48AA-11D2-8432-006008C3FBFC
ScripletHandler_Automation 06290BD8-48AA-11D2-8432-006008C3FBFC
ScripletHandler_Event 06290BD9-48AA-11D2-8432-006008C3FBFC
ScripletHandler_ASP 06290BDA-48AA-11D2-8432-006008C3FBFC
ScripletHandler_Behavior 06290BDB-48AA-11D2-8432-006008C3FBFC
XMLFeed 528D46B3-3A4B-4B13-BF74-D9CBD7306E07
Scriptlet AE24FDAE-03C6-11D1-8B76-0080C744F389
HtmlFile_FullWindowEmbed 25336921-03F9-11CF-8FD0-00AA00686F13
Mhtmlfile 3050F3D9-98B5-11CF-BB82-00AA00BDCE0B
Microsoft HTA 文档 6.0 3050F5C8-98B5-11CF-BB82-00AA00BDCE0B
DHTMLEdit.DHTMLEdit.1 2D360200-FFF5-11D1-8D03-00A0C959BC0A
DHTMLSafe.DHTMLSafe.1 2D360201-FFF5-11D1-8D03-00A0C959BC0A
VB脚本语言 B54F3741-5B07-11cf-A4B0-00AA004A55E8
VB脚本语言创作 B54F3742-5B07-11cf-A4B0-00AA004A55E8
VBScript 语言编码 B54F3743-5B07-11cf-A4B0-00AA004A55E8
VBScript 主机编码 85131631-480C-11D2-B1F9-00C04F86C324
Shockwave Flash Object D27CDB6E-AE6D-11cf-96B8-444553540000
Macromedia Flash工厂对象 D27CDB70-AE6D-11cf-96B8-444553540000
Microsoft Silverlight DFEAF541-F3E1-4c24-ACAC-99C30715084A
Adobe Shockwave Player 233C1507-6A77-46A4-9443-F871F945D258
Python 控件 DF630910-1C1D-11D0-AE36-8C0F5E000000

默认阻止嵌入的控件

控件 CLSID
Shell.Explorer.2 8856F961-340A-11D0-A96B-00C04FD705A2
Htmlfile 25336920-03F9-11CF-8FD0-00AA00686F13
用于弹出窗口的 Microsoft HTML 文档 3050F67D-98B5-11CF-BB82-00AA00BDCE0B

备注:此列表是已阻止且可能更改的控件的快照