MS16-065: Описание уязвимость раскрытия информации протокола TLS/SSL (CVE-2016-0149): 10 мая 2016 г.

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 3155464
Аннотация
Согласно реализации в компонент шифрования платформа.NET Framework Microsoft в протокол Transport Layer Security и протокол Secure Sockets Layer (TLS/SSL) существует уязвимость раскрытия информации. Злоумышленник, успешно воспользовавшийся данной уязвимостью может расшифровать зашифрованные трафика TLS/SSL.

Чтобы воспользоваться уязвимостью, сначала злоумышленник должен внедрить незашифрованные данные в безопасный канал и затем проводить атаки (MiTM) в середине между целевой клиент и сервер законным. Это обновление устраняет уязвимость, изменяя способ, что компонент шифрования .NET отправляет и получает зашифрованный сетевых пакетов.

Эта уязвимость устранена как часть Бюллетень корпорации Майкрософт по безопасности MS16-065. Это обновление изменяет способ, платформа.NET Framework компонент шифрования отправляет и получает зашифрованный сетевых пакетов.

В следующей таблице приведены ссылки на стандартной записи для каждой уязвимости присвоен номер списка.

Уязвимость заголовковНомер CVEСообщеноВоспользовавшись
Уязвимость подделки TLS/SSLCVE-2016-0149ДаНет

Уязвимость разрешения

Изменение внесено в Бюллетень корпорации Майкрософт по безопасности MS16-065 вызывает запись первого TLS после подтверждения для разбиения. В этом случае класс SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient и HttpClient (где на основании HttpWebRequest) потоки для возвращения одного байта при первом чтении немедленно следуют байты rest (n-1) в последовательных операций чтения. Это изменение поведения происходит только для приложений, использующих протокол TLS 1.0 + сцепления блоков шифра, но не когда они используют TLS 1.1 и TLS 1.2.

Примечание. Всего, необходимо установить Бюллетень корпорации Майкрософт по безопасности MS12-006 Чтобы установить данное обновление.

Это изменение может привести к некоторых приложений, основанных на платформа.NET Framework для прерывания. В данной статье описываются два подхода, которые можно использовать для обновления приложению работать правильно после применения Бюллетень корпорации Майкрософт по безопасности MS16-065.

Средств преодоления проблем совместимости

Вариант 1: Переключение на протокол TLS 1.2

Этот параметр позволяет использовать протокол TLS 1.2 путем изменения реестра или программной настройке протокола версии приложения.
  • Изменение реестра

    Важно: Тщательно выполните действия, описанные в этом разделе. При неправильном изменении реестра могут возникнуть серьезные проблемы. Перед внесением изменений, создать резервную копию реестра для восстановления в случае проблемы.

    Платформа.NET Framework 4.0 и платформа.NET Framework 4.5.x приложений, которые выполняются в .NET Framework 4.5 и более поздних версий можно переключиться по умолчанию протокол TLS 1.0, TLS 1.1 и TLS 1.2 с помощью раздела реестра SchUseStrongCrypto . Этот раздел реестра рассматривается в разделе Рекомендуемые действия2960358 рекомендации корпорации Майкрософт по безопасности раздел на веб-узле Microsoft TechNet.

    Важно: Это изменение реестра будет работать только в том случае, если выполняются следующие условия:
    • Приложения, использующие API-интерфейсы на основе ServicePointManager, параметр неServicePointManager.SecurityProtocol значение явным образом. Примерами таких классов являются System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequestи System.Net.Mail.SmtpClient. Установка ServicePointManager.SecurityProtocol в коде имеет приоритет над реестра.
    • Класс SslStream используются приложениями AuthenticateAsClient(String) перегрузка.

  • Программно настроить версию протокола

    Платформа.NET Framework 4.0 и 4.5 приложений, запущенных на .NET Framework 4.5 и более поздних версий и используют Класс SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) перегрузки должны быть перекомпилированы, указав в качестве третьего параметра SslProtocols.Tls12, SslProtocols.Tls11и SslProtocols.Tls . Полное описание того, как использовать класс SslStream, см. Класс SslStream раздел на веб-сайте Microsoft Developer (MSDN).

    Примечание. Платформа.NET Framework 4.6 и более поздних версий использовать по умолчанию протокол TLS 1.0, TLS 1.1 и TLS 1.2. Эта процедура рассматривается в 2960358 рекомендации корпорации Майкрософт по безопасности раздел на веб-узле Microsoft TechNet.

Вариант 2: Маркер разделения пакетов

Данное обновление приводит к одной записи можно разбить на несколько записей. Таким образом Если приложение ожидает завершения записи будут доступны в одном вызове чтения , может нарушить таких приложений. Чтобы убедиться в том, что приложение работает правильно, убедитесь, что приложение обрабатывает пакеты, разделения, выполняя вызов Stream.Read правильно. Можно использовать доступные в примере кода Здесь для справки по устранению приложения правильно выполнять Чтение вызов.

Для HTTP-запроса пример, который показывает разницу в поведении перед (Уменьшение) и после (без снижения) обновлений 3147461 и 3147458 были установлены, обратитесь к разделу «Дополнительная информация».

Например метод Stream.Read , см. Метод Stream.Read (Byte[],Int32,Int32) раздел на веб-сайте Microsoft Developer (MSDN).

Методы обхода проблем совместимости приложений

Предупреждение Эти методы обхода проблемы может сделать компьютер или сеть более уязвим для атак пользователей-злоумышленников или проникновения вирусов и других вредоносных программ. Корпорация Майкрософт не рекомендует использовать эти методы обхода проблемы, но в таким образом, можно реализовать эти методы обхода проблемы на свой собственный риск. Используйте эти методы обхода проблемы на свой страх и риск.

Метод 1: Обновление реестра (доступно для всех версий платформа.NET Framework)



Отключить структуру SCH_SEND_AUX_RECORD (глобально)
Для всех приложений добавьте следующий параметр реестра:
Раздел реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

Имя DWORD: SchSendAuxRecord
Значение: 0

Примечание. Заполнитель <version_number>— v4.0.30319 или v2.0.50727, в зависимости от версии.

Для 32-разрядных приложений, выполняемых в 64-разрядных компьютерах также необходимо добавьте в следующий подраздел реестра:
</version_number>
Раздел реестра:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

Имя DWORD: SchSendAuxRecord
Значение: 0

Примечание. Заполнитель <version_number>— v4.0.30319 или v2.0.50727, в зависимости от версии.

</version_number>
Временное решение
Чтобы временно отключить защищенный режим, описанных в этой статье, щелкните соответствующую ссылку для загрузки REG-файл и дважды щелкните загруженный REG-файл, внесите изменения в реестр.

Для приложений, предназначенных для 3.5 платформа.NET Framework корпорации Майкрософт:

Определение приложений платформа.NET Framework Microsoft 4.0 и более поздних версий:

Включить защищенный режим, описанных в данной статье, щелкните соответствующую ссылку для загрузки REG-файл и дважды щелкните загруженный REG-файл, внесите изменения в реестр.

Для приложений, предназначенных для платформа.NET Framework Microsoft 3.5:

Определение приложений платформа.NET Framework Microsoft 4.0 и более поздних версий:

Для получения дополнительных сведений о том, как загрузить файлы поддержки Майкрософт, щелкните следующий номер статьи базы знаний Майкрософт.
119591 Как загрузить файлы поддержки Microsoft через веб-службы
Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует последнее антивирусное программное обеспечение, доступное на период публикации файла. Файл хранится на защищенных серверах, что предотвращает его несанкционированное изменение.


Отключить SCH_SEND_AUX_RECORD структуры для отдельных приложений
Для всех приложений добавьте следующий параметр реестра:
Раздел реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Имя DWORD: Полный путь к .exe приложения (например, C:\MyApp\MyApp.exe)
Значение: 0

Примечание. Заполнитель <version_number>— v4.0.30319 или v2.0.50727, в зависимости от версии.

Для 32-разрядных приложений, выполняемых в 64-разрядных компьютерах также необходимо добавьте в следующий подраздел реестра:
</version_number>
Раздел реестра:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Имя DWORD: Полный путь к .exe приложения (например, C:\MyApp\MyApp.exe)
Данные значения: 0 (единственным допустимым значением является 0. Любое другое значение игнорируется.)

Примечание. Заполнитель <version_number>— v4.0.30319 или v2.0.50727, в зависимости от версии.

</version_number>

Способ 2: Изменение конфигурации на уровне приложения (доступно только для платформа.NET Framework версии 4.6 и более поздних версий)

Начиная с 4.6 платформа.NET Framework, можно изменить конфигурацию на уровне приложения через код или приложение изменения конфигурации или реестра.

В 4.6 платформа.NET Framework можно установить параметр с помощью любого из следующих методов. В этих примерах отключить функцию безопасности.
  • Программными средствами

    Первое, что должен сделать приложение выполняется следующий код. Это происходит потому, что точки Service Manager будет инициализировать только один раз.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Настройка приложения

    Чтобы изменить конфигурацию приложения, добавьте следующую запись:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Раздел реестра (глобальный компьютер)

    В реестре:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Значение: Switch.System.Net.DontEnableSchSendAuxRecord
    Тип: Строка
    Значение: Значение true

    Примечание. Switch.System.Net.DontEnableSchSendAuxRecord = False для всех приложений.
Дополнительная информация
Ниже приведен шаблон взаимодействия клиент-сервер образца до и после установки этого обновления. Эта информация предоставляется для иллюстрации для идентификации выхода из строя любого приложения из-за установки этого исправления.

Без устранения рисковС по снижению
[Сервер] Ожидание подключения (127.0.0.1:4431)
[Клиент] Подключение к localhost:4431
[Сервер] Клиент подключен.
[Клиент] Подключение. Проверка подлинности...
[Сервер] Проверка подлинности клиента.
[Клиент] Отправка запроса (94 байт)
[Клиент] Ожидание ответа...

[Сервер] Получено байт 94:<GET></GET>
Узел: contoso.com
Агента пользователя: Тестирование приложения

>>>
[Сервер] Ответили 476 байт.

[Клиент 1: 476 байт] Ответ:<HTTP .1="" 200=""></HTTP>

>>>>>
[Сервер] Ожидание подключения (127.0.0.1:4431)
[Клиент] Подключение к localhost:4431
[Сервер] Клиент подключен.
[Клиент] Подключение. Проверка подлинности...
[Сервер] Проверка подлинности клиента.
[Клиент] Отправка запроса (94 байт)
[Клиент] Ожидание ответа...
[Сервер] Получено 1 байт: <G>>><b00> </b00> </G>
[Сервер] Получено байт 93:<ET></ET>
Узел: contoso.com
Агента пользователя: Тестирование приложения

>>>
[Сервер] Ответили 476 байт.
[Клиент 1: 1 байт] Ответ: <H>>>><b00> </b00> </H>
[Клиента 2: 475 байт] Ответ:<TTP .1="" 200=""></TTP>

>>>>>

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 3155464 — последний просмотр: 05/10/2016 21:12:00 — редакция: 1.0

Microsoft .NET Framework 4.6.1, Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 3.5.1, Microsoft .NET Framework 3.5, Microsoft .NET Framework 2.0 Service Pack 2

  • kbsecvulnerability kbsecurity kbsecbulletin kbfix kbexpertiseinter kbbug atdownload kbmt KB3155464 KbMtru
Отзывы и предложения