安装对应于 Microsoft .NET Framework 的 Microsoft 安全公告 MS14-009 的更新后,反射类型的封送处理在 DCOM 上可能无法按预期正常运行。此外,Microsoft Visual Studio 中的宏功能可能也无法按预期正常运行。
有关 MS14-009 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2916607 MS14-009:.NET Framework 中的漏洞可能允许特权提升:2014 年 2 月 11 日
症状
适用于 .NET Framework 的安全公告 MS14-009 将阻止反射类型的封送处理。阻止的类型包括以下几种以及由此派生的所有类型。
-
System.Type
-
System.Reflection.Assembly
-
System.Reflection.MemberInfo
-
System.Reflection.Module
-
System.Reflection.MethodBody
-
System.Reflection.ParameterInfo
-
System.Reflection.TypeInfo
-
System.Reflection.MethodInfo
-
System.Reflection.FieldInfo
原因
虽然大多数应用程序将不受此更改影响,但如果某个应用程序需要在 DCOM 上使用反射,您可以通过在 <Application>.exe.config 文件的 <runtime> 部分中添加 AllowDComReflection 配置开关来解决此限制,如下所示:
<?xml version ="1.0"?> <configuration> <runtime> <AllowDComReflection enabled="1"/> </runtime> </configuration>
设置此配置开关能使应用程序在 DCOM 上使用反射。
若要安全还原 Visual Studio 宏的功能,请根据系统中安装的 Visual Studio 版本更新以下应用程序配置文件之一。
版本 |
文件夹 |
文件名 |
---|---|---|
Visual Studio 2005 Service Pack 1 (SP1) |
\Program Files (x86)\Common Files\Microsoft Shared\VSA\8.0\VsaEnv |
Vsmsvr.exe.config |
Visual Studio 2008 |
\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv |
Vsmsvr.exe.config |
Visual Studio 2010 |
\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv |
Vsmsvr10.exe.config |
注意 对于 32 位安装,路径位于 \Program Files\ 下。
对于所有受影响的 Visual Studio 版本,配置文件的修改过程均相同。您需要在 <runtime> 部分中添加 AllowDComReflection 开关,如下所示:
<AllowDComReflection enabled="1"/>
此更新会阻止反射类型离开托管代码,但未阻止它们进入托管代码。因此,在大多数情况下,您只需要在客户端设置配置开关。您应仅将此配置开关用于那些需要设置该开关的应用程序。
注意 您仍然应该保护服务器连接的安全。
保护端点安全
由于不受信任的端点可能在使用配置开关时提升自身的权限,因此您必须确保正在发送反射类型的端点能够信任到远程端点的连接。
有关一般 DCOM 安全配置的信息,请转到以下 Microsoft Developer Network (MSDN) 网站:
http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms678426.aspx
有关适用于 Enterprise Services (COM+) 用户的信息,请转到以下 MSDN 网站:
http://msdn.microsoft.com/zh-cn/library/ms973847.aspx#entserv_topic6
本文中的信息适用于:
-
Microsoft .NET Framework 1.0 SP3
-
Microsoft .NET Framework 1.1 SP1
-
Microsoft .NET Framework 2.0 SP2
-
Microsoft .NET Framework 3.5
-
Microsoft .NET Framework 3.5 SP1
-
Microsoft .NET Framework 3.5.1
-
Microsoft .NET Framework 4
-
Microsoft .NET Framework 4.5