Applies To.NET Framework 4.6

查看本文适用的产品。

概要

Microsoft .NET Framework 的此安全更新修复了 .NET Framework(和 .NET Core)组件未完全验证证书时的安全功能绕过漏洞。 若要了解有关此漏洞的更多信息,请参阅 Microsoft 常见漏洞和披露 CVE-2017-0248

此更新还包含 Windows Presentation Framework PackageDigitalSignatureManager 组件使用 SHA256 哈希算法签署程序包的能力的安全增强修补程序。

重要说明

  • 所有适用于 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的未来安全和非安全更新均需要安装更新 2919355。 我们建议你在基于 Windows RT 8.1、Windows 8.1 或 Windows Server 2012 R2 的计算机上安装更新 2919355,以便今后持续接收更新。

  • 如果在安装此更新后安装语言包,则必须重新安装此更新。 因此,我们建议你先安装所需的全部语言包,然后再安装此更新。 有关更多信息,请参阅添加语言包至 Windows

有关此安全更新程序的其他信息

使用注册表编辑器或其他方法修改注册表不当可能会出现严重问题。 这些问题可能需要您重新安装操作系统。 Microsoft 不能保证可解决这些问题。 请自行承担修改注册表的风险。

  • 增强型密钥使用 (EKU) 在 RFC 5280 的第 4.2.1.12 节中进行了描述: 除了或替代在密钥使用扩展中表明的基本目的之外,此扩展表明可以使用认证公钥的一个或多个目的。 例如,用于客户端到服务器的身份验证的证书必须配置为“客户端身份验证”。 同样,用于服务器的身份验证的证书必须配置为“服务器身份验证”。 当证书用于身份验证时,验证器检查客户端证书,并在应用程序策略扩展中查找正确的目的对象标识符。 例如,客户端身份验证的对象标识符为 1.3.6.1.5.5.7.3.2。 当证书用于客户端身份验证时,此对象标识符必须存在于证书的 EKU 扩展中,否则身份验证会失败。 没有 EKU 扩展的证书将继续正确地进行身份验证。 如果暂时无法访问正确地重新颁发的证书,可以选择加入或退出跨所有计算机操作的安全更改,以避免任何连接效果。 为此,根据应用程序的目标 .NET Framework 版本,指定以下注册表项设置。方法 1: 更新注册表项(适用于所有版本)注意 此注册表项必须为 DWORD 项。

    • 对于 32 位系统上的 32 位进程和 64 位系统上的 64 位进程:

      HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319@RequireCertificateEKUs=0

    • 对于 64 位系统上的 32 位进程:

      HKEY_LOCAL_MACHINE \Software\Wow6432Node\Microsoft\.NETFramework\v4.0.30319@RequireCertificateEKUs=0

    你还可以根据每个应用程序选择退出。 以下选项可用于禁用此更改,以确保维护应用程序兼容性。方法 2: 对各个应用程序禁用策略注意 此注册表项必须为 DWORD 项。 唯一的有效值为 0。 忽略其他任何值。

    • 对于 32 位系统上的 32 位进程和 64 位系统上的 64 位进程:

      HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319@System.Net.ServicePointManager.RequireCertificateEKUs S:\Prj\console_pg\console_pg45\bin\Release\console_pg45.exe=0 C:\MyApp\MyApp.exe=0

    • 对于 64 位系统上的 32 位进程:

      HKEY_LOCAL_MACHINE \Software\Wow6432Node\Microsoft\.NETFramework\v4.0.30319@System.Net.ServicePointManager.RequireCertificateEKUs S:\Prj\console_pg\console_pg45\bin\Release\console_pg45.exe=0 C:\MyApp\MyApp.exe=0

    方法 3: 使用配置 API(适用于 .NET Framework 4.6 及更高版本) 从 .NET Framework 4.6 开始,你可以通过代码、应用程序配置或注册表更改来更改应用程序级别的配置。在 .NET Framework 4.6 中配置开关注意 以下示例可禁用安全功能。

    • 通过编程方式 应用程序应首先运行以下代码。 这是因为服务点管理器只初始化一次。   private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontCheckCertificateEKUsName= @"Switch.System.Net.DontCheckCertificateEKUs"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontCheckCertificateEKUsName, true);

    • 应用程序配置 若要更改应用程序配置,请添加以下条目:   <runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontCheckCertificateEKUsName=true"/> </runtime>

    • 注册表项(全局计算机):

      注册表位置: HKEY_LOCAL_MACHINE\Software\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontCheckCertificateEKUsName

      类型:字符串值: “true”

    注意 默认情况下,对于在 .NET Framework 4.6 及更高版本上运行的所有 .NET Framework 4.x 应用程序,Switch.System.Net.DontCheckCertificateEKUsName = True

  • 如需了解与 Windows 8.1 和 Windows Server 2012 R2 安全更新相关的更多信息,请参阅 Microsoft 知识库中的下列文章:

    4019111 适用于 Windows 8.1 和 Windows Server 2012 R2 的 .NET Framework 3.5 Service Pack 1、4.5.2、4.6、4.6.1 和 4.6.2 仅安全更新: 2017 年 5 月 9 日

如何获取并安装更新

方法 1: Microsoft 更新目录

若要获取此更新的独立程序包,请访问 Microsoft 更新目录  

方法 2: Windows Server Update Services(WSUS)

请在 DFS 服务器上按照以下步骤操作:

  1. 依次点击开始管理工具以及Microsoft Windows Server Update Services 3.0

  2. 展开计算机名,然后点击动作

  3. 点击导入更新

  4. WSUS 将打开一个浏览器窗口,其中可能会提示您安装 ActiveX 控件。 必须安装 ActiveX 控件才能继续。

  5. 安装此控件后,你将看到“Microsoft 更新目录”屏幕。在“搜索”框中输入 4019111,然后单击“搜索”。

  6. 定位与当前环境下操作系统、语言和处理器匹配的 .NET Framework 程序包。 点击添加将其添加至集合。

  7. 选中所有需要的程序包之后,请点击查看选择项

  8. 然后点击导入,将程序包导入至 WSUS 服务器。

  9. 只要程序包已导入并返回至 WSUS,即可点击关闭

现在,即可通过 WSUS 安装更新了。

更新部署信息

有关此安全更新的部署详细信息,请参阅 Microsoft 知识库中的以下文章:

20170509 安全更新部署信息: 2017 年 5 月 9 日

更新删除信息

注意 我们不建议你删除任何安全更新。

若要删除此更新,请使用“控制面板”中的“程序和功能”项。

更新重新启动信息

仅当正在更新的文件被锁定或正在使用时,才需要在应用此安全更新之后重启系统。

更新替换信息

此更新不会替换任何以前发布的更新。

文件信息

程序包名称

程序包哈希 SHA 1

程序包哈希 SHA 2

Windows8.1-KB4014587-x64.msu

D3837DC9058590E610A8FF83D4707FD3576588B2

2B7D9615FE505F323BA5C997CDF0BD01B7D6CA11B31A07A393FFDD831CACE9E3

Windows8.1-KB4014587-x86.msu

98EB8EC2B0B2E00E1EEC17388AED45E3B2FD3600

FF1C7C43DCFF4979FB336311DFA06FD185ADFFB0461EF8263CB4649BDE5F76B0

此修补程序的英语(美国)版本将安装具有下表所列属性的文件。 这些文件的日期和时间使用协调世界时 (UTC) 列出。 这些文件在你本地计算机上显示的日期和时间是你的本地时间再加上当前夏令时 (DST) 偏差。 此外,如果对这些文件执行某些操作,日期和时间可能会更改。

对于所有基于 x86 的系统

文件名

文件版本

文件大小

日期

时间

presentationframework.dll

4.6.1647.0

6,190,960

27-Mar-2017

04:08

system.core.dll

4.6.1647.0

1,349,280

27-Mar-2017

04:08

system.windows.controls.ribbon.dll

4.6.1647.0

742,808

27-Mar-2017

04:08

system.xaml.dll

4.6.1647.0

631,456

27-Mar-2017

04:08

system.dll

4.6.1647.0

3,506,824

27-Mar-2017

04:08

windowsbase.dll

4.6.1647.0

1,277,768

27-Mar-2017

04:08

msvcp120_clr0400.dll

12.0.52512.0

484,552

20-Mar-2017

05:16

msvcr120_clr0400.dll

12.0.52512.0

987,848

20-Mar-2017

05:16

penimc.dll

4.6.1647.0

81,560

27-Mar-2017

04:08

presentationhost_v0400.dll

4.6.1647.0

197,848

27-Mar-2017

04:08

presentationnative_v0400.dll

4.6.1647.0

826,592

27-Mar-2017

04:08

system.core.dll

4.6.1647.0

1,349,280

27-Mar-2017

04:08

wpfgfx_v0400.dll

4.6.1647.0

1,759,920

27-Mar-2017

04:08

presentationcore.dll

4.6.1647.0

3,521,880

27-Mar-2017

04:08

对于所有基于 x64 的系统

文件名

文件版本

文件大小

日期

时间

msvcp120_clr0400.dll

12.0.52512.0

690,016

20-Mar-2017

05:16

msvcr120_clr0400.dll

12.0.52512.0

993,632

20-Mar-2017

05:16

penimc.dll

4.6.1647.0

97,432

27-Mar-2017

04:01

presentationframework.dll

4.6.1647.0

6,190,960

27-Mar-2017

04:08

presentationhost_v0400.dll

4.6.1647.0

254,680

27-Mar-2017

04:01

presentationnative_v0400.dll

4.6.1647.0

1,107,680

27-Mar-2017

04:01

system.core.dll

4.6.1647.0

1,349,280

27-Mar-2017

04:08

system.windows.controls.ribbon.dll

4.6.1647.0

742,808

27-Mar-2017

04:08

system.xaml.dll

4.6.1647.0

631,456

27-Mar-2017

04:08

system.dll

4.6.1647.0

3,506,824

27-Mar-2017

04:08

windowsbase.dll

4.6.1647.0

1,277,768

27-Mar-2017

04:08

wpfgfx_v0400.dll

4.6.1647.0

2,262,712

27-Mar-2017

04:01

presentationcore.dll

4.6.1647.0

3,504,320

27-Mar-2017

04:01

presentationframework.dll

4.6.1647.0

6,190,960

27-Mar-2017

04:08

system.core.dll

4.6.1647.0

1,349,280

27-Mar-2017

04:08

system.windows.controls.ribbon.dll

4.6.1647.0

742,808

27-Mar-2017

04:08

system.xaml.dll

4.6.1647.0

631,456

27-Mar-2017

04:08

system.dll

4.6.1647.0

3,506,824

27-Mar-2017

04:08

windowsbase.dll

4.6.1647.0

1,277,768

27-Mar-2017

04:08

msvcp120_clr0400.dll

12.0.52512.0

484,552

20-Mar-2017

05:16

msvcr120_clr0400.dll

12.0.52512.0

987,848

20-Mar-2017

05:16

penimc.dll

4.6.1647.0

81,560

27-Mar-2017

04:08

presentationhost_v0400.dll

4.6.1647.0

197,848

27-Mar-2017

04:08

presentationnative_v0400.dll

4.6.1647.0

826,592

27-Mar-2017

04:08

system.core.dll

4.6.1647.0

1,349,280

27-Mar-2017

04:08

wpfgfx_v0400.dll

4.6.1647.0

1,759,920

27-Mar-2017

04:08

presentationcore.dll

4.6.1647.0

3,521,880

27-Mar-2017

04:08

 

如何获取此安全更新的相关帮助和支持

适用范围

本文适用于以下对象:  

  • Microsoft .NET Framework 4.6.2,与以下版本一起使用时:

    • Windows Server 2012 R2

    • Windows 8.1

需要更多帮助?

需要更多选项?

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

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