Su IIS, come posso correggere la vulnerabilità POODLE SSL 3.0 (CVE-2014-3566)?


53

Come patch CVE-2014-3566 su un sistema Windows Server 2012 con IIS?

Esiste una patch in Windows Update o devo fare una modifica del registro per disabilitare SSL 3.0 ?


1
C'è un Microsoft Fix it 50495 nella pagina MS KB a cui ti sei collegato.
MattBianco,

3
Ho provato a eseguire Fix it 50495 su Windows 2008 e non è riuscito con errore "Questo Fix Microsoft non si applica al sistema operativo o alla versione dell'applicazione." Oh bene.
Josh,

Risposte:


58

Non c'è "patch". È una vulnerabilità nel protocollo, non un bug nell'implementazione.

In Windows Server 2003-2012 R2 i protocolli SSL / TLS sono controllati da flag nel registro impostato su HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols.

Per disabilitare SSLv3, di cui riguarda la vulnerabilità POODLE, creare una sottochiave nella posizione sopra (se non è già presente) denominata SSL 3.0e, sotto quella, una sottochiave denominata Server(se non è già presente). In questa posizione ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server) creare un valore DWORD denominato Enablede lasciarlo impostato su 0.

La disabilitazione di SSL 2.0, che dovresti anche fare, viene eseguita allo stesso modo, tranne per il fatto che utilizzerai una chiave denominata SSL 2.0nel percorso di registro sopra riportato.

Non ho testato tutte le versioni, ma penso che probabilmente sia sicuro supporre che sia necessario un riavvio per rendere effettiva questa modifica.


3
riavvio non necessario almeno su Windows Server 2012. puoi verificare prima e dopo su poodlebleed.com inserendo il tuo URL e 443 per la porta SSL
Simon

Grazie, sai se dovrei disabilitare anche PCT dal momento che è presumibilmente disabilitato di default e tuttavia non disabilitato in questo modo?
Mark Broadhurst,

@Simon, c'è qualcos'altro che devi fare per rendere effettive le modifiche? Ho appena effettuato gli aggiornamenti del registro su una macchina Server 2012, ma viene ancora segnalato che SSL3 è abilitato.
Abe Miessler,

Io non ci credo. Suppongo che tu stia usando iis e il mio Apache e che tu abbia controllato quel sito web. E sei sicuro di avere la chiave di registro esatta?
Simon,

* NON apache (non so da dove provenga "il mio Apache"!)
Simon,

24

Solo per facilità di installazione ho derivato questo file "disable ssl 2 and 3.reg" dalla risposta di Evan sopra :

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

12

Powershell per disabilitare SSL2 e SSL3:

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

Sfortunatamente quanto sopra funziona solo se le sottochiavi del registro sono già presenti. Sarebbe bello vedere PS in grado di crearli se non esiste o aggiornarli se lo fanno.
Jaans,

Sei sicuro? Il mio li crea per me. Potrebbe differire nelle versioni precedenti di Powershell e Windows (sto usando v2 su Server 2008 R2)
Vasili Syrakis

2
Sì ... vedi screenshot caricato su: i.imgur.com/rctFH4D.png Uso di PS 3.0 e WSMan 3.0.
Jaans,


8

Ecco una PowerShell che verificherà la presenza delle chiavi di registro, le creerà se necessario e quindi immetterà i valori necessari per disabilitare SSL 2.0 e 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

Questo può essere distribuito usando SCCM o la riga di comando - assicurati di eseguire il lavoro SCCM o la riga di comando come amministratore. Alcuni siti Web con le informazioni del Registro di sistema indicano che è necessario un riavvio dopo che le chiavi del Registro di sistema sono state create e / o modificate.


4

Oppure prendi una copia di IISCrypto e fai clic sul pulsante delle migliori pratiche, quindi deseleziona SSL 3.0 e quindi applica, quindi riavvia


3

Non è necessario disabilitare SSL3. Puoi abilitare SSL3 e mitigare 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 queste impostazioni avresti comunque il supporto IE6 (con SSLv3 usando RC4) e avresti una sicurezza di configurazione più che accettabile. Solo IE6 e un client molto vecchio userebbero le cifre SSLv3 o RC4.


3

Esiste un buon script di PowerShell che aiuta con la configurazione di IIS 7.5 e 8:

Questo script PowerShell configura Microsoft Internet Information Server 7.5 e 8.0 (IIS) per supportare i protocolli TLS 1.1 e TLS 1.2 con il segreto Forward. Inoltre aumenta la sicurezza delle tue connessioni SSL disabilitando SSL2 e SSL3 non sicuri e tutte le cifre non sicure e deboli che un browser potrebbe ripiegare. Questo script implementa le attuali regole delle migliori pratiche.

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


Hmm, non sono sicuro del motivo per cui questo è stato votato. Ho usato quell'utilità e funziona perfettamente.
David Thomas,

Sembra buono ma almeno un ragazzo ha avuto problemi dopo averlo eseguito - non so se è isolato visto che altre persone dicono che è fantastico.
Segna l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.