En IIS, ¿cómo parcheo la vulnerabilidad SSL 3.0 POODLE (CVE-2014-3566)?

53

¿Cómo parcheo CVE-2014-3566 en un sistema Windows Server 2012 que ejecuta IIS?

¿Hay un parche en Windows Update, o tengo que hacer un cambio de registro para deshabilitar SSL 3.0 ?

Eric Lathrop
fuente
1
Hay un Microsoft Fix it 50495 en la página MS KB a la que se vinculó.
MattBianco
3
Intenté ejecutar Fix it 50495 en Windows 2008, y falló con el error "Este Microsoft Fix no se aplica a su sistema operativo o versión de aplicación". Oh bien.
Josh

Respuestas:

58

No hay "parche". Es una vulnerabilidad en el protocolo, no un error en la implementación.

En Windows Server 2003 a 2012 R2, los protocolos SSL / TLS están controlados por banderas en el conjunto de registros en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols.

Para deshabilitar SSLv3, que concierne a la vulnerabilidad POODLE, cree una subclave en la ubicación anterior (si aún no está presente) llamada SSL 3.0y, debajo de eso, una subclave llamada Server(si aún no está presente). En esta ubicación ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server) cree un valor DWORD llamado Enabledy déjelo establecido en 0.

La desactivación de SSL 2.0, que también debería estar haciendo, se realiza de la misma manera, excepto que usará una clave nombrada SSL 2.0en la ruta de registro anterior.

No he probado todas las versiones, pero creo que es seguro asumir que es necesario reiniciar para que este cambio surta efecto.

Evan Anderson
fuente
3
reiniciar no es necesario en Windows Server 2012 al menos. puede verificar antes y después en poodlebleed.com ingresando su URL y 443 para el puerto SSL
Simon
Gracias, ¿Sabes si también debería deshabilitar PCT ya que supuestamente está deshabilitado de manera predeterminada y aún no deshabilitado de esta manera?
Mark Broadhurst el
@ Simon, ¿hay algo más que tengas que hacer para que los cambios surtan efecto? Acabo de hacer las actualizaciones de registro en una máquina Server 2012, pero todavía se informa que SSL3 está habilitado.
Abe Miessler
No lo creo Supongo que estás usando iis y mi Apache y que revisaste el sitio web. ¿Y está seguro de que tiene la clave de registro correcta?
Simon
* NO apache (¡No sé de dónde vino 'mi Apache'!)
Simon
24

Solo para facilitar la instalación, obtuve este archivo "deshabilitar ssl 2 y 3.reg" de la respuesta de Evan anterior :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000
Eric Lathrop
fuente
12

Powershell para deshabilitar SSL2 y SSL3:

2..3 | %{ New-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL $_.0\Server" -Name Enabled -PropertyType "DWORD" -Value 0 -Force }
Vasili Syrakis
fuente
Lamentablemente, lo anterior solo funciona si las subclaves del registro ya están presentes. Sería bueno ver PS que puede crearlos si no existe o actualizarlos si lo hacen.
Jaans
¿Estás seguro? El mío los crea para mí. Puede diferir en versiones inferiores de Powershell y Windows (estoy usando v2 en Server 2008 R2)
Vasili Syrakis
2
Sí ... vea la captura de pantalla cargada en: i.imgur.com/rctFH4D.png Usando PS 3.0 y WSMan 3.0.
Jaans
8

Aquí hay un PowerShell que probará la presencia de las claves de registro, las creará si es necesario y luego ingresará los valores necesarios para deshabilitar SSL 2.0 y SSL 3.0

$regPath1 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0'
$regPath2 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0\Server'
$regPath3 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0'
$regPath4 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server'


If(!(Test-Path -Path $regPath1))
{
New-Item -Path $regPath1 -Force
}

If(!(Test-Path $regPath2))
{
New-Item -Path $regPath2 -Force
}
   New-ItemProperty -Path $regPath2 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath2 -Name Enabled -PropertyType DWORD -Value "0" -Force 

If(!(Test-Path $regPath3))
{
New-Item -Path $regPath3 -Force
}

If(!(Test-Path $regPath4))
{
New-Item -Path $regPath4 -Force
}
   New-ItemProperty -Path $regPath4 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath4 -Name Enabled -PropertyType DWORD -Value "0" -Force

Esto se puede implementar utilizando SCCM o la línea de comandos; solo asegúrese de ejecutar el trabajo SCCM o la línea de comandos como Administrador. Algunos sitios web con la información del registro indican que es necesario reiniciar después de crear y / o modificar las claves del registro.

Kazi
fuente
4

O tome una copia de IISCrypto y haga clic en el botón de mejores prácticas, luego desmarque SSL 3.0 y luego aplique, luego reinicie

Tom
fuente
3

No tiene que deshabilitar SSL3. Puede habilitar SSL3 y mitigar POODLE .

# Copy and paste this in PowerShell then restart your server
$cipherSuitesOrder = @(
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384',
    'TLS_RSA_WITH_AES_128_CBC_SHA256',
    'TLS_RSA_WITH_AES_128_CBC_SHA',
    'TLS_RSA_WITH_AES_256_CBC_SHA256',
    'TLS_RSA_WITH_AES_256_CBC_SHA',
    'TLS_RSA_WITH_RC4_128_SHA',
    'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
    'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384'
)
$cipherSuitesAsString = [string]::join(',', $cipherSuitesOrder)
New-ItemProperty -path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' \
-name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null

Con esta configuración, aún tendría soporte para IE6 (con SSLv3 usando RC4) y tendría una configuración más que aceptable en cuanto a seguridad. Solo IE6 y un cliente realmente antiguo usarían cifrados SSLv3 o RC4.

Angel Abad Cerdeira
fuente
3

Hay un buen script de PowerShell que ayuda con la configuración de IIS 7.5 y 8:

Este script de PowerShell configura su Microsoft Internet Information Server 7.5 y 8.0 (IIS) para admitir el protocolo TLS 1.1 y TLS 1.2 con confidencialidad directa. Además, aumenta la seguridad de sus conexiones SSL al deshabilitar SSL2 y SSL3 inseguros y todos los cifrados inseguros y débiles que un navegador también puede utilizar. Este script implementa las reglas actuales de mejores prácticas.

https://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12

David Thomas
fuente
Hmm, no estoy seguro de por qué esto fue rechazado. Utilicé esa utilidad yo mismo y funciona perfectamente.
David Thomas
Esto se ve bien, pero al menos un tipo ha tenido problemas después de ejecutarlo; no sé si está aislado, visto que otras personas dicen que es genial.
Mark