После установки обновления из бюллетеня по безопасности MS14-009 (Майкрософт) для Microsoft .NET Framework маршалинг разных типов отражений может перестать выполняться через DCOM как положено. Кроме того, функциональность макросов в Microsoft Visual Studio может быть не такой, как ожидается.
Чтобы узнать больше о бюллетене по безопасности MS14-009, щелкните следующий номер статьи базы знаний Майкрософт:
2916607 MS14-009: уязвимости .NET Framework могут привести к несанкционированному повышению привилегий, 11 февраля 2014 г.
Проблема
Бюллетень по безопасности MS14-009 для .NET Framework блокирует маршалинг разных типов отражений. Блокируются типы, перечисленные ниже, а также любые другие, которые основываются на них.
-
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, вы можете обойти это ограничение, добавив параметр конфигурации AllowDComReflection в раздел <runtime> файла <Application>.exe.config таким образом:
<?xml version ="1.0"?> <configuration> <runtime> <AllowDComReflection enabled="1"/> </runtime> </configuration>
Включение этой конфигурации позволит приложению использовать отражение через DCOM.
Чтобы безопасно восстановить функциональность макросов в Visual Studio, обновите один из указанных ниже файлов конфигурации приложения (в зависимости от установленной версии Visual Studio).
Версия |
Папка |
Имя файла |
---|---|---|
Visual Studio 2005 с пакетом обновления 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. Следует добавить параметр конфигурации AllowDComReflection в раздел <runtime> таким образом:
<AllowDComReflection enabled="1"/>
Это обновление препятствует выходу разных типов отражений из управляемого кода, но не мешает входу в него. Таким образом, в большинстве случаев достаточно установить упомянутый параметр конфигурации на стороне клиента. Этот параметр конфигурации следует использовать только для приложений, для которых он должен быть задан.
Примечание. Соединение с сервером должно быть защищенным.
Обеспечение безопасности конечных точек
Поскольку ненадежные конечные точки могут привести к превышению прав при включенной конфигурации, необходимо убедиться в безопасном соединении между точкой, которая отправляет отражения, и удаленной точкой.
Дополнительные сведения об общей настройке безопасности DCOM см. на следующем веб-сайте Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms678426.aspx
Сведения для пользователей корпоративных служб (COM+) см. на указанном ниже веб-сайте MSDN (на английском языке):
http://msdn.microsoft.com/ru-ru/library/ms973847.aspx#entserv_topic6
Данные сведения также применимы к:
-
Microsoft .NET Framework 1.0 с пакетом обновления 3 (SP3)
-
Microsoft .NET Framework 1.1 с пакетом обновления 1 (SP1)
-
Microsoft .NET Framework 2.0 с пакетом обновления 2 (SP2)
-
Microsoft .NET Framework 3.5
-
Microsoft .NET Framework 3.5 с пакетом обновления 1 (SP1)
-
Microsoft .NET Framework 3.5.1
-
Microsoft .NET Framework 4
-
Microsoft .NET Framework 4.5