Ciao a tutti,

In questi giorni mi sono capitate parecchie richieste di supporto focalizzate sul tema del meccanismo di “SSL/TLS Renegotiaton”, e sui rischi che questo introduce legati alla possibilità di attacchi DoS e Malicious-data injection.

Tali richieste riguardavano principalmente prodotti quali ISA 2006 e TMG 2010, considerando il loro utilizzo come reverse-proxy, ma le considerazioni in questo articolo possono benissimo esser considerate valide per qualsiasi tipo di OS Windows che supporti SSL/TLS.

Partiamo dalla base: Cos’è esattamente la SSL/TLS Renegotiaton?

"TLS [as defined in RFC 5246] allows either the client or the server to initiate a Renegotiaton -- a new handshake that establishes new cryptographic parameters. Unfortunately, although the new handshake is carried out using the cryptographic parameters established by the original handshake, there is no cryptographic binding between the two. This creates the opportunity for an attack in which the attacker who can intercept a client's transport layer connection can inject traffic of his own as a prefix to the client's interaction with the server"

La definizione precedente è estratta dalla RFC 5746.

Qui di seguito troviamo una rappresentazione grafica di un handshake SSL/TLS

clip_image002

Una volta stabilito il tunnel cifrato, sotto particolari circostanze, il client potrebbe richiedere al server la “rinegoziazione” dei parametri SSL/TLS utilizzando lo stesso socket TCP:

clip_image004

Se il protocollo SSL/TLS non fosse reso sicuro (come per RFC 5746), un eventuale “Man In The Middle” potrebbe inserirsi nel canale cifrato sfuttando questa fase per inviare al server codice malevolo, “spacciandosi” per l’utente reale.

clip_image006

Quali sono le possibilità per mitigare questa minaccia?

Come primo passo, si può procedure con l’installazione della seguente hotfix:

http://support.microsoft.com/kb/980436

Tale fix rende il Sistema compliant con la RFC 5746,mitigando il rischio di malicious-data-injection.

Per fini di retrocompatibilità, questo security update rende il sistema in grado di lavorare in due modalità: STRICT e COMPATIBLE

Compatible mode

o If this security update is applied to the server, and the server is in compatible mode, the server allows all clients to set up and renegotiate Transport Layer Security (TLS) sessions. This occurs whether the clients are updated or are not updated by using this security update.

o Similarly, if this security update is applied to the client, and the client is in compatible mode, the client can set up and renegotiate TLS sessions with all the servers for which this security update is applied or is not applied.

Strict mode

o If this security update is applied to the server, and the server is in strict mode, the server allows only those clients to which this security update is applied to set up and renegotiate TLS sessions. The server does not allow the clients to which this security update is not applied to set up the TLS session. In this case, the server terminates such requests from the clients.

Similarly, if this security update is applied to the client, and the client is in strict mode, the client can set up and renegotiate TLS sessions with all the servers for which this security update is applied. The clients cannot set up TLS sessions at all with servers for which this security update is not applied. The client cannot move ahead with a TLS negotiation attempt with such servers.

Come qui sopra citato, quando lavora in STRICT-mode, il sistema non accetta connessioni da client che non utilizzano SSL/TLS “sicuro”.

Al contrario, quando in COMPATIBLE-mode, il sistema accetta connessioni e rinegoziazioni anche da client potenzialmente “insicuri”.

Come dafult, l’installazione di questo update configura il sistema per lavorare in COMPTABILE-mode. Un Amministratore ha la possibilità di modificare i valori delle seguenti chiavi di registro per abilitare la modalità STRICT:

AllowInsecureRenegoClients / AllowInsecureRenegoServers

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL

The following table shows how these DWORD values can be used:

DWORD

Value = zero

Value = nonzero

AllowInsecureRenegoClients

Strict Server

Compatible Server

AllowInsecureRenegoServers

Strict Client

Compatible Client

La trasmissione di dati malevoli non è l’unico problema legato al meccanismo di rinegoziazione: questa può essere infatti sfruttata per bombardare il server con attacchi DoS.

Per ogni nuova negoziazione di connessione SSL/TLS, il server spende mediamente molte più risorse CPU rispetto al client. Un utente malevolo, sfruttando la rinegoziazione, potrebbe quindi attaccare il server impattandone lo sfruttamento di risorse.

Il metodo migliore per una completa mitigazione di attacchi DoS e Milicious-Data-Injection legati a SSL/TLS sarebbe quello di procedere configurando il server in modo da rigettare completamente tutti i tentativi di rinegoziazione.

Il seguente Security Advisory ci spiega come:

http://support.microsoft.com/kb/977377/en-us

Come riportato nell’articolo, possiamo configurare tale comportamento agendo sui seguenti valori del registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\DisableRenegoOnServer

*Notes

· If the DisableRenegoOnClient subkey is present and has any nonzero value:

o The client will not initiate Renegotiaton.

o The client will not respond to Renegotiaton.

· If the DisableRenegoOnClient subkey is missing or is present and has a zero value:

o The client will initiate Renegotiaton.

o The client will respond to Renegotiaton.

· If the DisableRenegoOnServer subkey is present and has any nonzero value:

o Server initiated Renegotiaton is not allowed.

o The server will not respond to Renegotiaton requests from the client.

· If the DisableRenegoOnServer subkey is missing or is present and has a zero value:

o Server initiated Renegotiaton is allowed.

The server will respond to Renegotiaton requests from the client.

Come leggiamo sopra, assegnando al parametro DisableRenegoOnServer un qualsiasi valore non nullo, il server non sarà piu in grado di inizializzare rinegoziazioni, nè accetterà alcun tentativo di rinegoziazione inizializzato dai client.

Naturlamente questo avrà un impatto su tutte quelle applicazioni che – per loro natura – dovessero richiedere l’utilizzo della Renegotiaton.

La KB cita i seguenti esempi:

o After you install this security update, you cannot use the legacy provisioning service parameter (–UseLegacyProvisioningService) when you create a federation trust with the Microsoft Federation Gateway. The security update will prevent the federation trust from working correctly. This problem will occur if you install this security update on a computer that is running Exchange Server 2010 or Exchange Server 2010 Service Pack 1 before you have created a federation trust. To avoid this problem, you must create the federation trust before you install this security update. 
For more information about how to create a federation trust by using the –UseLegacyProvisioningService parameter, visit the following Microsoft webpage:
Create a Federation Trust

o When you install this update on a computer that has the Microsoft Online Single Sign-In services client installed, you may experience the following issues:

· The Sign In client cannot obtain user configuration information. This only affects new users who are running the Sign In client for the first time. The Sign In client cannot obtain information to configure Outlook. If the Sign In client has already run and configured the applications, there are no additional issues with the Sign In client.

· Outlook users cannot see free/busy information. Therefore, this update also affects existing Outlook users.
To resolve this problem, set the DisableRenegoOnClient registry entry to a value of 0 (zero), and then restart the computer.

o This update disables TLS/SSL Renegotiaton, common protocol functionality that is required for specific applications. This may cause this software to no longer function as expected. If any side effects are experienced, customers should uninstall the workaround to resolve the issue.
The following software has been tested by Microsoft and that has been found to experience problems when you install this update:

· Windows 7 DirectAccess: The IP HTTPS interface will not function.

· Exchange ActiveSync: Does not function when it uses certificate client authentication.

· Internet Information Services (IIS): In certain configurations, IIS using certificate client authentication, including certificate mapping scenarios, will be affected. Site-wide client certificate authentication will not be affected and will continue to function.

· Internet Explorer: When you browse Web sites that require client certificate authentication, but not site-wide client certificate authentication, you may not successfully be able to connect.

Purtroppo, non ci è ovviamente possibile predire l’impatto che la disabilitazione della Renegotiaton potrà avere sulle infinite applicazioni e sugli infiniti scenari esistenti: tale configurazione andrà appropriatamente testata in base alle proprie esigenze.

Ciònonostante, dal punto di vista della sicurezza, questo rimane il metodo piu raccomandabile per poter mitigare attacchi quali quelli sopra descritti.

Alla prossima!!

Author: 
Daniele Gaiulli
Support Engineer – Forefront Edge