Microsoft 安全咨询2915720

Windows 验证码签名验证中的更改

发布时间: 2013 年 12 月 10 日 |更新时间:2014 年 7 月 29 日

版本: 1.4

常规信息

执行摘要

Microsoft 宣布为所有受支持的 Microsoft Windows 版本提供更新,以更改使用 Windows 验证签名格式签名的二进制文件签名的方式。 此更改包含在安全公告 MS13-098 中,但只会在选择的基础上启用。 启用后,Windows Authenticode 签名验证的新行为将不再允许WIN_CERTIFICATE结构中的无关信息,Windows 将不再将不符合的二进制文件识别为已签名。 请注意,Microsoft 可能会在 Microsoft Windows 的未来版本中将此行为设为默认行为。

建议。 Microsoft 建议可执行文件作者考虑将所有已签名的二进制文件都符合新的验证标准,方法是确保它们不包含WIN_CERTIFICATE结构中的无关信息。 Microsoft 还建议客户适当测试此更改,以评估其在环境中的行为方式。 有关详细信息,请参阅 此公告的“建议的操作 ”部分。

咨询详细信息

问题参考

有关此问题的详细信息,请参阅以下参考:

参考 标识
安全公告 MS13-098 
常规信息 代码签名 \ WinVerifyTrust 函数 \ Authenticode 可移植可执行签名格式简介
特定信息 Windows 根证书计划 - 技术要求

咨询常见问题解答

公告的范围是什么? 
此公告的目的是通知客户对 Microsoft Windows 如何验证 Authenticode 签名的二进制文件进行可选更改。

为什么此公告于 2014 年 7 月 29 日修订?
此公告于 2014 年 7 月 29 日修订,宣布将基于选择启用此处所述的更严格的 Windows 验证行为,而不是在受支持的 Microsoft Windows 版本中做出默认行为。

Microsoft 如何实施更严格的 Windows 验证码签名验证行为?
2013 年 12 月 10 日,Microsoft 发布了安全公告 MS13-098 ,为更严格的验证码签名验证行为部署基础代码。 此前,此公告宣布,到 2014 年 8 月 12 日,Microsoft 将启用使用 MS13-098 作为默认功能实现的更改。 但是,当我们与客户合作适应此更改时,我们确定对现有软件的影响可能很高。 因此,Microsoft 不再计划将更严格的验证行为作为默认要求强制执行。 但是,更严格的验证的基础功能仍然存在,并且可以由客户自行决定启用。

如何启用新的签名验证行为? 
想要启用新的 Authenticode 签名验证行为的客户可以通过在系统注册表中设置密钥来实现此行为。 设置密钥后,Windows Authenticode 签名验证将不再识别具有验证码签名的二进制文件,这些二进制文件包含WIN_CERTIFICATE结构中的无关信息。 客户可以通过禁用此注册表项来选择随时禁用该功能。 有关说明,请参阅 下面的建议操作

我启用了此更改,现在是否需要执行任何操作,默认情况下不会强制实施此更改?  已启用更严格的验证行为且未遇到问题的客户可以选择使验证行为保持启用状态。 遇到新行为的应用程序兼容性问题的客户或只想禁用新行为的客户可以通过删除 EnableCertPaddingCheck 注册表项来禁用该功能。 有关说明,请参阅 下面的建议操作

我未启用此更改,现在是否需要执行任何操作,默认情况下不会强制执行它?
否。 随 MS13-098 一起安装的更严格的验证行为将驻留在系统上,但在启用之前将处于休眠状态。

新的验证行为是否会影响已安装的软件?
启用后,新的更严格的验证行为主要适用于使用 Windows 验证码签名格式签名的可移植可执行(PE)二进制文件。 未使用此格式签名或不使用 WinVerifyTrust 验证签名的二进制文件不受新行为的影响。 最有可能受影响的二进制文件是通过 Internet 分发的 PE 安装程序文件,这些文件是在下载时自定义的。 用户在下载和安装新应用程序的过程中可能会感觉到影响的最常见方案。 仅当客户选择启用更严格的验证行为时,才会出现这种情况,之后用户可能会在尝试安装签名失败的新应用程序时看到警告消息。

新的验证行为是否会影响 AppLocker 策略?
对于已选择启用更严格的验证行为的客户,如果文件上的签名不符合更严格的验证要求,则依赖于正在签名的文件的任何 AppLocker 规则或预期特定发布者都可能会受到影响。

新的验证行为是否会影响软件限制策略?
对于选择启用更严格的验证行为的客户,如果文件上的签名不符合更严格的验证要求,则依赖于正在签名的文件的任何软件限制策略或预期特定发布者都可能会受到影响。

新的更严格的验证行为认为我的二进制不符合要求。 可以使用哪些选项?
如果二进制文件被视为不符合更严格的 Authenticode 签名验证行为,则对于未启用新验证行为的系统上,这不会是问题,因为 Microsoft 默认情况下不会强制实施更严格的行为。 但是,若要在启用了新验证行为的系统上更正二进制失败验证的问题,该二进制文件需要严格遵循 Windows 验证码签名格式,特别是不包括WIN_CERTIFICATE结构中的无关信息。

如果我使用非 Microsoft 提供的签名工具签名,是否可以将签名识别为不符合更严格的验证过程?
是的。 对于选择启用更严格的验证行为的客户,使用非 Microsoft 提供的签名工具对二进制文件进行签名会导致签名被识别为不符合更严格的验证行为的风险。 使用 Microsoft 产品或 Microsoft 提供的签名工具(如signtool.exe)有助于确保签名被识别为合规。

什么是 Windows 验证码? 
Windows Authenticode 是一种数字签名格式,用于确定软件二进制文件的起源和完整性。 Authenticode 使用公钥加密标准 (PKCS) #7 签名数据和 X.509 证书将验证码签名的二进制文件绑定到软件发布者的标识。 术语“Authenticode 签名”是指使用 WinVerifyTrust 函数生成和验证的数字签名格式。

什么是 Windows 验证码签名验证?
Windows 验证码签名验证包括两个主要活动:签名检查指定对象和信任验证。 这些活动由 WinVerifyTrust 函数执行,该函数执行签名检查然后将查询传递给支持操作标识符(如果存在)的信任提供程序。 有关 WinVerifyTrust 函数的更多技术信息,请参阅 WinVerifyTrust 函数

有关 Authenticode 的简介,请参阅 代码签名简介。

建议的操作

  • 查看 Microsoft 根证书计划技术要求

    有兴趣了解有关此公告中介绍的主题的详细信息的客户应查看 Windows 根证书计划 - 技术要求

  • 修改二进制签名进程

    在查看验证码签名验证行为更改背后的技术详细信息后,Microsoft 建议客户确保其 Authenticode 签名不包含WIN_CERTIFICATE结构中的无关信息。 Microsoft 还建议可执行文件作者考虑将其 Authenticode 签名的二进制文件符合新的验证标准。 修改了其二进制签名过程的作者,并希望启用新行为可能会基于选择加入。 有关指导,请参阅 Windows 根证书计划 - 技术要求

  • 测试验证码签名验证的改进

    Microsoft 建议客户在完全实现验证码签名验证之前测试对 Authenticode 签名验证的行为方式。 若要启用 Authenticode 签名验证改进,请修改注册表以添加 EnableCertPaddingCheck 值,如下所示。

    警告执行这些步骤以启用 MS13-098 更新中包含的功能更改将导致不符合的二进制文件显示为未签名,因此呈现它们不受信任。

    请注意 ,如果注册表编辑器不正确,可能会导致严重问题,可能需要重新安装操作系统。 Microsoft 无法保证可以解决因注册表编辑器使用不当而造成的问题。 请慎用注册表编辑器,风险自负。

    安装 MS13-098 更新后,执行以下操作:

    对于 32 位版本的 Microsoft Windows

    将以下文本粘贴到文本编辑器中,例如记事本。 然后,使用.reg文件扩展名保存文件(例如,enableAuthenticodeVerification.reg)。

    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]   
    "EnableCertPaddingCheck"="1"  
    

    可以通过双击该文件将此.reg文件应用于各个系统。

    请注意, 必须重启系统才能使更改生效。

    对于 64 位版本的 Microsoft Windows

    将以下文本粘贴到文本编辑器中,例如记事本。 然后,使用.reg文件扩展名保存文件(例如,enableAuthenticodeVerification64.reg)。

    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]   
    "EnableCertPaddingCheck"="1"
    
    [HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config] 
    "EnableCertPaddingCheck"="1"
    

    可以通过双击该文件将此.reg文件应用于各个系统。

    请注意, 必须重启系统才能使更改生效。

    启用 MS13-098 更新中包含的功能更改的影响。 不符合二进制文件将显示为未签名,因此呈现不受信任。

    如何禁用该功能。 执行以下操作以删除之前添加的注册表值。

    对于 32 位版本的 Microsoft Windows,请将以下文本粘贴到文本编辑器中,例如记事本。 然后,使用.reg文件扩展名保存文件(例如,disableAuthenticodeVerification.reg)。

    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]   
    "EnableCertPaddingCheck"=-
    

    可以通过双击该文件将此.reg文件应用于各个系统。

    请注意, 必须重启系统才能使更改生效。

    对于 64 位版本的 Microsoft Windows,请将以下文本粘贴到文本编辑器中,例如记事本。 然后,使用.reg文件扩展名保存文件(例如,disableAuthenticodeVerification64.reg)。

    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]   
    "EnableCertPaddingCheck"=-
    
    [HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config]   
    "EnableCertPaddingCheck"=-
    

可以通过双击该文件将此.reg文件应用于各个系统。

请注意, 必须重启系统才能使更改生效。

其他建议的操作

  • 保护电脑

    我们将继续鼓励客户遵循“保护计算机”指南,了解如何启用防火墙、获取软件更新和安装防病毒软件。 有关详细信息,请参阅 Microsoft 保险箱ty & 安全中心

  • 使 Microsoft 软件更新保持更新

    运行 Microsoft 软件的用户应应用最新的 Microsoft 安全更新,以帮助确保其计算机尽可能受到保护。 如果你不确定你的软件是否是最新的,请访问 Microsoft 更新,扫描计算机以获取可用更新,并安装你提供的任何高优先级更新。 如果已启用自动更新并配置为提供 Microsoft 产品的更新,则更新会在发布时向你传递,但应验证它们是否已安装。

其他信息

Microsoft Active Protections 计划 (MAPP)

为了改善客户的安全保护,Microsoft 在每月安全更新发布之前向主要安全软件提供商提供漏洞信息。 然后,安全软件提供商可以使用此漏洞信息通过其安全软件或设备(如防病毒、基于网络的入侵检测系统或基于主机的入侵防护系统)为客户提供更新的保护。 若要确定安全软件提供商是否提供主动保护,请访问计划合作伙伴提供的活动保护网站,这些网站在 Microsoft Active Protections 计划 (MAPP) 合作伙伴列出。

反馈

支持

免责声明

此公告中提供的信息“按原样”提供,没有任何担保。 Microsoft 不明确或暗示所有保证,包括适销性和针对特定用途的适用性和适用性的保证。 在任何情况下,Microsoft Corporation 或其供应商都应对任何损害负责,包括直接、间接、附带、后果性、业务利润损失或特殊损害,即使 Microsoft Corporation 或其供应商被告知存在此类损害的可能性。 某些州不允许排除或限制后果性或附带性损害的责任,因此上述限制可能不适用。

修订

  • V1.0(2013 年 12 月 10 日):已发布公告。
  • V1.1(2013 年 12 月 13 日):更正了“对验证码签名验证的改进”中注册表项信息的建议操作。 已应用或计划应用建议操作的客户应查看修订后的信息。
  • V1.2(2014 年 2 月 11 日):重新发布公告提醒客户,2014 年 6 月 10 日将启用使用 MS13-098 实施的休眠更改。 在此日期之后,Windows 将不再将不符合的二进制文件识别为已签名。 有关详细信息,请参阅此公告的建议和建议操作部分。
  • V1.3(2014 年 5 月 21 日):修订后的公告,以反映 2014 年 8 月 12 日的新截止日期,即不再被确认为已签名的二进制文件。 现在,与 2014 年 6 月 10 日截止日期相反,使用 MS13-098 实施的休眠更改将于 2014 年 8 月 12 日启用。
  • V1.4(2014 年 7 月 29 日):修订后的公告宣布,Microsoft 不再计划将更严格的验证行为作为受支持版本的 Microsoft Windows 的默认功能强制执行。 它仍可用作选择加入功能。 有关详细信息, 请参阅“咨询常见问题解答 ”部分。

页面生成的 2014-07-29 14:38Z-07:00。