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

53

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

Existe um patch no Windows Update ou preciso fazer uma alteração no registro para desativar o SSL 3.0 ?

Eric Lathrop
fonte
11
Há um Microsoft Fix it 50495 na página do MS KB ao qual você vinculou.
214168 MattBianco
3
Tentei executar o Fix it 50495 no Windows 2008 e falhou com o erro "Este Microsoft Fix não se aplica ao sistema operacional ou à versão do aplicativo". Ah bem.
21413 Josh

Respostas:

58

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

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

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

Desabilitar o SSL 2.0, o que você também deve fazer, é feito da mesma maneira, exceto que você usará uma chave nomeada SSL 2.0no caminho do registro acima.

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

Evan Anderson
fonte
3
reinicialização não é necessária pelo menos no Windows Server 2012. você pode verificar antes e depois em poodlebleed.com digitando seu URL e 443 para a porta SSL
Simon
Obrigado, você sabe se eu devo desativar o PCT também, pois ele está supostamente desativado por padrão e ainda não está desativado dessa maneira?
Mark Broadhurst
@ Simon, há algo mais que você precisa fazer para que as alterações entrem em vigor? Acabei de fazer as atualizações do registro em uma máquina Server 2012, mas ainda está sendo relatado que o SSL3 está ativado.
Abe Miessler
Eu não acredito nisso. Suponho que você esteja usando o iis e meu Apache e que tenha verificado o site. E você tem certeza de que possui a chave de registro correta?
Simon
* NÃO apache (eu não sei onde 'meu Apache' veio!)
Simon
24

Apenas para facilitar a instalação, derivamos esse 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
Eric Lathrop
fonte
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 }
Vasili Syrakis
fonte
Infelizmente, o procedimento acima só funciona se as subchaves do registro já estiverem presentes. Seria bom ver o PS que pode criá-los, se não existir, ou atualizá-los, se existirem.
Jaans 19/10/14
Você tem certeza? O meu cria para mim. Ele pode ser diferente em versões inferiores do PowerShell e Windows (estou usando v2 no Server 2008 R2)
Vasili Syrakis
2
Sim ... veja a captura de tela carregada em: i.imgur.com/rctFH4D.png Usando o PS 3.0 e o WSMan 3.0.
Jaans
8

Aqui está um PowerShell que testará a presença das chaves do Registro, crie-as se necessário e insira 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 o trabalho ou a linha de comando do SCCM como administrador. Alguns sites com as informações do registro indicam que é necessária uma reinicialização após a criação e / ou modificação das chaves do registro.

Kazi
fonte
4

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

Tom
fonte
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\00010002' \
-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 configuração mais do que aceitável em termos de segurança. Somente o IE6 e um cliente muito antigo usariam cifras SSLv3 ou RC4.

Angel Abad Cerdeira
fonte
3

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

Esse script do PowerShell configura o Microsoft Internet Information Server 7.5 e 8.0 (IIS) para oferecer suporte aos protocolos TLS 1.1 e TLS 1.2 com sigilo de encaminhamento. Além disso, aumenta a segurança de suas conexões SSL, desativando SSL2 e SSL3 inseguro e todas as cifras inseguras e fracas que um navegador também pode ter. Este script implementa as regras atuais de melhores práticas.

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

David Thomas
fonte
Hmm, não sei por que isso foi rejeitado. Eu mesmo usei esse utilitário e ele funciona perfeitamente.
David Thomas
Parece bom, mas pelo menos um cara teve problemas depois de executá-lo - não sei se está isolado, visto outras pessoas dizerem que é ótimo.
Mark