it-swarm.dev

Come correggere SSL 2.0 e BEAST su IIS

Come puoi vedere in questo post TeamMentor.net vulnerabile a BEAST e SSL 2.0, ora cosa? l'app che sto attualmente sviluppando è stata contrassegnata per SSL 2.0 e BEAST da SSL Labs.

Sto usando IIS 7.0 con le ultime patch e non riesco a trovare le risposte a queste domande:

  • Qual è l'impatto del rischio di questa vulnerabilità su un sito come http://teammentor.net ?
  • Quali sono gli scenari di exploit?
  • C'è qualche mitigazione (o no) con l'uso di IIS 7.0?
  • Come posso risolvere questo problema in IIS 7.0?
  • Si può fare qualcosa a livello di applicazione?

Per riferimento qui ci sono un paio di altre domande di security.stackexchange.com su questo argomento:

31
Dinis Cruz

In IIS 7 (e 7.5), ci sono due cose da fare:

  1. Passare a: Start> 'gpedit.msc'> Configurazione computer> Modelli amministratore> Rete> Impostazioni di configurazione SSL> Ordine suite di crittografia SSL (nel riquadro destro, fare doppio clic per aprire). Lì, copia e incolla quanto segue (le voci sono separate da una singola virgola, assicurati che non ci sia il ritorno a capo):

    TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_RC4_128_MD5, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, 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_SHA256_P521, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH _AES_128_CBC_SHA_P256

  2. Esegui i seguenti comandi di PowerShell come amministratore (copia e incolla nel Blocco note, salva come 'fix-beast-in-iis.ps1' ed esegui con privilegi elevati):

    #make TSL 1.2 protocol reg keys
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
    
    # Enable TLS 1.2 for client and server SCHANNEL communications
    new-itemproperty -path     "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Make and Enable TLS 1.1 for client and server SCHANNEL communications
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" 
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Disable SSL 2.0 (PCI Compliance)
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"
    

Dopo aver eseguito lo script, è possibile eseguire 'regedit' e assicurarsi che le chiavi dello script siano state effettivamente create correttamente. Quindi riavviare per rendere effettive le modifiche.

ATTENZIONE: Notare che non ho disattivato SSL 3.0 - il motivo è dovuto al fatto che, piaccia o no, ci sono ancora persone là fuori che usano Windows XP con IE 6/7. Senza SSL 3.0 abilitato, non ci sarebbe alcun protocollo su cui queste persone possano ricorrere. Mentre potresti non essere ancora perfetto su una scansione di Qualys SSL Labs, la maggior parte dei buchi dovrebbe essere chiuso seguendo i passaggi precedenti. Se si desidera la conformità PCI assoluta, è possibile copiare le righe dalla sezione Disabilita SSL 2.0 dello script Powershell, incollarle alla fine dello script e modificarle come segue:

# Disable SSL 3.0 (PCI Compliance)
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" -name Enabled -value 0 -PropertyType "DWord"

Quindi, quando si esegue lo script, si disabilita SSL 2.0, SSL 3.0 e si abilitano TLS 1.1 e 1.2.

28
Josh

Ho appena pubblicato un aggiornamento su IIS Crypto che è uno strumento gratuito che imposta le chiavi del registro dello schannel e mette RC4 in cima all'ordine della suite di crittografia SSL con un solo clic. Ciò mitiga l'attacco BEAST su Windows Server 2008 e 2012.

19
Jeff

Per quanto riguarda i rischi effettivi , sembra difficile dirlo. Mentre strumenti come SSL Labs lo indicano come priorità assoluta, non sono a conoscenza di alcun attacco reale che lo sfrutti allo stato brado e dalla mia (molto limitata) comprensione di come funziona l'attacco, è piuttosto complicato da eseguire e ci sono molti pre -quisiti per renderlo una vera minaccia. Hai già collegato a molte risorse, quindi non ha senso ripetere ciò che è già coperto.

Per quanto riguarda la configurazione di IIS 7 per usare RC4, forse questo pdf può aiutare?

2
Yoav Aner

disabilitando tutto "RC4" con IIS Crypto ha permesso di superare il test di conformità PCI su Server 2008/IIS 7.0

1

Il seguente file di registro disabiliterà SSLv2 e SSLv3 sulla maggior parte delle implementazioni di Windows.

Creare un file .reg con i seguenti dettagli ed eseguire.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client]
"DisabledByDefault"=dword:00000001
[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]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

Il modo più semplice per verificare è utilizzare nuovamente i laboratori SSL o testare OpenSSL. Non vale nulla che alcune versioni di OpenSSL non supportano SSL versione 2.

OpenSSL 0.9.8t lo supporta ed è la versione che utilizzo per i test.

openssl s_client -connect sottodominio.dominio.tld: 44 -ssl2

Questo è il mio comando per verificare la presenza di cifrature a blocchi di catena usando openssl. L'idea è che non dovremmo avere una connessione con nessuno di questi.

openssl s_client -connect sottodominio.dominio.tld: 44 -tls1 -cipher SRP-DSS-AES-256-CBC-SHA: SRP-RSA-AES-256-CBC-SHA: SRP-AES- 256-CBC-SHA: PSK-AES a 256-CBC-SHA: SRP-DSS-AES-128-CBC-SHA: RP-RSA-AES-128-CBC-SHA: SRP-AES-128-CBC-SHA: IDEA- CBC-SHA: PSK-AES128-CBC-SHA: SRP-DSS-3DES-EDE-CBC-SHA: SRP-RSA-3DES-EDE-CBC-SHA: SRP-3DES-EDE-CBC-SHA: PSK-3DES- EDE-CBC-SHA: EDH-RSA-DES-CBC-SHA: EDH-DSS-DES-CBC-SHA: DH-RSA-DES-CBC-SHA: DH-DSS-DES-CBC-SHA: DES-CBC- SHA

0
david_k