No IIS, como faço para corrigir a vulnerabilidade do SSL 3.0 POODLE (CVE-2014-3566)?

53

Como faço para corrigir CVE-2014-3566 em um Sistema Windows Server 2012 executando o IIS?

Existe um patch no Windows Update ou eu tenho que fazer uma alteração no registro para desabilitar o SSL 3.0 ?

    
por Eric Lathrop 15.10.2014 / 17:08

8 respostas

58

Não há "patch". É uma vulnerabilidade no protocolo, não um bug na implementação.

No Windows Server 2003 para 2012 R2, os protocolos SSL / TLS são controlados por sinalizadores no conjunto de registros em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols .

Para desabilitar SSLv3, no qual a vulnerabilidade POODLE está relacionada, crie uma subchave no local acima (se ainda não estiver presente) chamado SSL 3.0 e, sob essa, uma subchave denominada Server (se ainda não estiver presente ). Neste local ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server ) crie um valor DWORD chamado Enabled e deixe-o definido em 0 .

A desativação do SSL 2.0, que você também deveria estar fazendo, é feita da mesma maneira, exceto pelo fato de que você estará usando uma chave chamada SSL 2.0 no caminho do registro acima.

Eu não testei todas as versões, mas acho que provavelmente é seguro assumir que uma reinicialização é necessária para que essa alteração entre em vigor.

    
por 15.10.2014 / 20:26
24

Apenas para facilitar a instalação, obtive este arquivo "disable ssl 2 and 3.reg" da resposta de Evan acima :

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
    
por 13.04.2017 / 14:14
12

Powershell para desativar o SSL2 e o SSL3:

2..3 | %{ New-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL $_.0\Server" -Name Enabled -PropertyType "DWORD" -Value 0 -Force }
    
por 17.10.2014 / 03:23
9

Existe um utilitário gratuito do Nartac que você pode usar para desativar os protocolos.

link

    
por 28.10.2014 / 22:21
8

Aqui está um PowerShell que testará a presença das chaves do Registro, as criará se necessário e, em seguida, inserirá os valores necessários para desativar o SSL 2.0 e o 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

Isso pode ser implantado usando o SCCM ou a linha de comando - apenas certifique-se de executar a tarefa do SCCM ou a linha de comando como Administrador. Alguns sites com as informações do registro indicam que uma reinicialização é necessária após as chaves de registro serem criadas e / ou modificadas.

    
por 20.10.2014 / 17:44
4

Ou pegue uma cópia do IISCrypto e clique no botão de melhores práticas, desmarque SSL 3.0 e depois aplique e reinicie

    
por 21.10.2014 / 20:47
3

Você não precisa desativar o SSL3. Você pode ativar o SSL3 e ter o POODLE mitigado .

# 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
# 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%pre%010002' \
-name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null
010002' \ -name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null

Com essas configurações, você ainda teria suporte ao IE6 (com SSLv3 usando RC4) e teria uma segurança de configuração mais que aceitável. Apenas o IE6 e o cliente realmente antigo usariam as criptografias SSLv3 ou RC4.

    
por 16.12.2014 / 00:22
3

Há um bom script do PowerShell que ajuda com o IIS 7.5 & 8 configuração:

This PowerShell script setups your Microsoft Internet Information Server 7.5 and 8.0 (IIS) to support TLS 1.1 and TLS 1.2 protocol with Forward secrecy. Additionally it increases security of your SSL connections by disabling insecure SSL2 and SSL3 and and all insecure and weak ciphers that a browser may fall-back, too. This script implements the current best practice rules.

link

    
por 27.05.2015 / 11:40

Tags