MS16-065: Descripción de la vulnerabilidad de divulgación de información del protocolo TLS/SSL (CVE-2016-0149): 10 de mayo de 2016

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3155464
Resumen
Como se implementa en el componente de cifrado de .NET Framework de Microsoft, existe una vulnerabilidad de divulgación de información en el protocolo de seguridad de la capa de transporte y el protocolo de capa de Sockets seguros (TLS/SSL). Un atacante que aprovechara esta vulnerabilidad podría descifrar el tráfico cifrado de TLS/SSL.

Para aprovechar esta vulnerabilidad, un atacante tendría primero que insertan datos no cifrados en el canal de seguridad y realizar un ataque de man in the middle (MiTM) entre el cliente de destino y un servidor legítimo. Esta actualización corrige la vulnerabilidad al modificar la manera en que el componente de cifrado de .NET envía y recibe paquetes de red cifrada.

Esta vulnerabilidad se fija como parte de Boletín de seguridad de Microsoft MS16-065. Esta actualización cambia la manera en que el componente de cifrado de .NET Framework, envía y recibe paquetes de red cifrada.

En la tabla siguiente contiene vínculos a la entrada estándar para cada vulnerabilidad en la lista de vulnerabilidades y exposiciones comunes.

Título de vulnerabilidadNúmero CVESe ha divulgadoAprovechar
Vulnerabilidad de suplantación de TLS/SSLCVE-2016-0149No

Resolución de la vulnerabilidad

El cambio introducido en Boletín de seguridad de Microsoft MS16-065 causas TLS primer registro tras el protocolo de enlace que desea dividir. Esto hace que las secuencias SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient y HttpClient (donde basado en HttpWebRequest) para devolver un único byte de la primera lectura, seguido de los bytes del resto (n-1) en lecturas sucesivas. Este cambio de comportamiento solo se produce para las aplicaciones que utilizan TLS 1.0 + Cipher Block Chaining, pero no cuando utilizan TLS 1.1 o TLS 1.2.

Nota: Como requisito previo, debe instalar Boletín de seguridad de Microsoft MS12-006 Para habilitar esta actualización.

Este cambio puede ocasionar que algunas aplicaciones que se basan en .NET Framework dejen de funcionar. Este artículo describe dos métodos que puede utilizar para actualizar la aplicación para funcionar correctamente después de aplicar Boletín de seguridad de Microsoft MS16-065.

Factores atenuantes para problemas de compatibilidad

Opción 1: Cambiar el protocolo TLS 1.2

Esta opción hace que la aplicación utilice el protocolo TLS 1.2 mediante la modificación del registro o configurar mediante programación la versión del protocolo.
  • Modificar el registro

    Importante: siga cuidadosamente los pasos de esta sección. Pueden producirse problemas graves si modifica incorrectamente el registro. Antes de modificarlo, copia de seguridad del registro para la restauración por si se produjeran problemas.

    Las aplicaciones de .NET Framework 4.0 y .NET Framework 4.5. x que se ejecutan en .NET Framework 4.5 y versiones posteriores pueden cambiar el protocolo predeterminado para TLS 1.2, TLS 1.1 y TLS 1.0 al habilitar la clave del registro SchUseStrongCrypto . Esta clave del registro que se describe en la sección Acciones recomendadas de la Microsoft Security Advisory 2960358 tema en el sitio Web de Microsoft TechNet.

    Importante: Este cambio del registro sólo funcionará si se cumplen las condiciones siguientes:
    • Aplicaciones que usan las API basadas en ServicePointManager son no ajuste el ServicePointManager.SecurityProtocol valor explícitamente. System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequesty System.Net.Mail.SmtpClientson ejemplos de tales clases. Establecer el ServicePointManager.SecurityProtocol en código prevalece sobre el registro.
    • Aplicaciones que están usando el SslStream AuthenticateAsClient(String) sobrecarga.

  • Configurar mediante programación la versión del protocolo

    El.NET Framework 4.0 y 4.5 aplicaciones que se ejecutan en el.NET Framework 4.5 y versiones posteriores y que usan la SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) sobrecarga debe compilarse, especificando SslProtocols.Tls12, SslProtocols.Tls11y SslProtocols.Tls como tercer parámetro. Para obtener una descripción completa de cómo utilizar la clase SslStream, consulte la Clase SslStream tema en el sitio Web de Microsoft Developer (MSDN).

    Nota: NET Framework 4.6 y versiones posteriores usan TLS 1.2, TLS 1.1 y TLS 1.0 como los valores predeterminados del protocolo. Esto se explica en el Microsoft Security Advisory 2960358 tema en el sitio Web de Microsoft TechNet.

Opción 2: Administrar paquetes de división

Esta actualización hace que un solo registro se divida en varios registros. Por lo tanto, si una aplicación está esperando el registro completo esté disponible en una única llamada de lectura , estas aplicaciones pueden bloquearse. Para asegurarse de que la aplicación se comporta correctamente, compruebe que la aplicación trata los paquetes de división realizando la llamada Stream.Read correctamente. Puede utilizar el código de ejemplo disponible aquí Llame a como referencia acerca de cómo corregir la aplicación para realizar correctamente la operación de lectura .

Para una solicitud HTTP de ejemplo que muestra la diferencia en el comportamiento antes (con la mitigación) y después (sin la mitigación) actualizaciones 3147461 y 3147458 fueron instalados, consulte la sección "Más información".

Para obtener un ejemplo completo del método Stream.Read , consulte la Método Stream.Read (Byte[],Int32,Int32) tema en el sitio Web de Microsoft Developer (MSDN).

Soluciones a los problemas de compatibilidad de aplicaciones

Advertencia: Estas soluciones pueden hacer que un equipo o una red sean más vulnerables a los ataques de usuarios malintencionados o de software malintencionado, como virus. No recomendamos estas soluciones, pero proporcionamos esta información para que usted puede implementar estas soluciones a su propia discreción. Utilice estas soluciones bajo su propio riesgo.

Método 1: Actualizar las claves de registro (disponibles para todas las versiones de .NET Framework)



Deshabilitar la estructura SCH_SEND_AUX_RECORD (globalmente)
Para todas las aplicaciones, agregue la siguiente subclave del registro:
Ubicación del registro:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

Nombre DWORD: SchSendAuxRecord
Información del valor: 0

Nota: El marcador de posición de <version_number>es v4.0.30319 o v2.0.50727, dependiendo de la versión.

Para las aplicaciones de 32 bits que se ejecutan en equipos de 64 bits, también hay que agregar la siguiente subclave del registro:
</version_number>
Ubicación del registro:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

Nombre DWORD: SchSendAuxRecord
Información del valor: 0

Nota: El marcador de posición de <version_number>es v4.0.30319 o v2.0.50727, dependiendo de la versión.

</version_number>
Solución alternativa
Para deshabilitar temporalmente el modo seguro que se describe en este artículo, haga clic en el vínculo correspondiente para descargar un archivo .reg y, a continuación, haga doble clic en el archivo .reg descargados para que los cambios del registro.

Para aplicaciones orientadas a la de Microsoft.NET Framework 3.5:

Para aplicaciones dirigidas a la de Microsoft.NET Framework 4.0 y versiones posteriores:

Para volver a habilitar el modo seguro que se describe en este artículo, haga clic en el vínculo correspondiente para descargar un archivo .reg y, a continuación, haga doble clic en el archivo .reg descargados para que los cambios del registro.

Para aplicaciones orientadas a Microsoft.NET Framework 3.5:

Para aplicaciones dirigidas a la de Microsoft.NET Framework 4.0 y versiones posteriores:

Para obtener más información acerca de cómo descargar archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para ver el artículo en Microsoft Knowledge Base:
119591 Obtención de archivos de soporte técnico de Microsoft desde los servicios en línea
Microsoft analizó este archivo en busca de virus. Microsoft ha utilizado el software de detección de virus más reciente que estaba disponible en la fecha en que se publicó el archivo. El archivo se almacena en servidores seguros que ayudan a evitar cambios no autorizados en el archivo.


Deshabilitar la estructura SCH_SEND_AUX_RECORD para aplicaciones individuales
Para todas las aplicaciones, agregue la siguiente subclave del registro:
Ubicación del registro:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nombre DWORD: Ruta de acceso completa para la aplicación .exe (por ejemplo, C:\MyApp\MyApp.exe)
Información del valor: 0

Nota: El marcador de posición de <version_number>es v4.0.30319 o v2.0.50727, dependiendo de la versión.

Para las aplicaciones de 32 bits que se ejecutan en equipos de 64 bits, también hay que agregar la siguiente subclave del registro:
</version_number>
Ubicación del registro:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nombre DWORD: Ruta de acceso completa para la aplicación .exe (por ejemplo, C:\MyApp\MyApp.exe)
Datos de valor: 0 (el único valor válido es 0. Cualquier otro valor se omitirá.)

Nota: El marcador de posición de <version_number>es v4.0.30319 o v2.0.50727, dependiendo de la versión.

</version_number>

Método 2: Cambiar la configuración en el nivel de aplicación (disponible sólo para la versión 4.6 de.NET Framework y versiones posteriores)

A partir de .NET Framework 4.6, puede cambiar la configuración en una aplicación a través de los cambios de configuración o del registro de aplicación o código.

En .NET Framework 4.6, puede establecer el modificador utilizando cualquiera de los métodos siguientes. En estos ejemplos se deshabilita la característica de seguridad.
  • Mediante programación

    Lo primero que debe hacer la aplicación se ejecute el código siguiente. Esto es porque el Administrador de puntos de servicio se inicializará sólo una vez.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Configuración de la aplicación

    Para cambiar la configuración de la aplicación, agregue la entrada siguiente:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Clave de registro (global del equipo)

    Ubicaciones del registro:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Valor: Switch.System.Net.DontEnableSchSendAuxRecord
    Tipo: Cadena
    Valor: True

    Nota: Switch.System.Net.DontEnableSchSendAuxRecord = False para todas las aplicaciones.
Más información
El siguiente es un modelo de comunicación cliente/servidor de ejemplo antes y después de instalar esta actualización. Esta información se proporciona para la ilustración para identificar cualquier rotura de aplicación debido a la instalación de esta revisión.

Sin la mitigaciónCon la mitigación
[Servidor] esperando conexiones (127.0.0.1:4431)
[Cliente] Conectarse a localhost:4431
[Servidor] Cliente conectado.
[Cliente] Conectado. Autenticando...
[Servidor] Cliente autenticado.
[Cliente] Enviar solicitud (94 Bytes)
[Cliente] Esperando respuesta...

[Servidor] 94 bytes recibidos:<GET></GET>
Host: contoso.com
Agente de usuario: Aplicación de pruebas

>>>
[Servidor] Respondió con 476 bytes.

[Cliente 1: 476 Bytes] Respuesta:<HTTP .1="" 200=""></HTTP>

>>>>>
[Servidor] esperando conexiones (127.0.0.1:4431)
[Cliente] Conectarse a localhost:4431
[Servidor] Cliente conectado.
[Cliente] Conectado. Autenticando...
[Servidor] Cliente autenticado.
[Cliente] Enviar solicitud (94 Bytes)
[Cliente] Esperando respuesta...
[Servidor] Recibido 1 bytes: <G>>><b00> </b00> </G>
[Servidor] Bytes recibidos de 93:<ET></ET>
Host: contoso.com
Agente de usuario: Aplicación de pruebas

>>>
[Servidor] Respondió con 476 bytes.
[Cliente Bytes de 1: 1] Respuesta: <H>>>><b00> </b00> </H>
[Cliente 2: 475 Bytes] Respuesta:<TTP .1="" 200=""></TTP>

>>>>>

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3155464 - Última revisión: 06/11/2016 07:38:00 - Revisión: 2.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 KbMtes
Comentarios