Al momento sei offline in attesa che la connessione Internet venga ristabilita

MS16-065: Descrizione della vulnerabilità la divulgazione di informazioni protocollo TLS/SSL (CVE-2016-0149): 10 maggio 2016

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3155464
Sommario
Vulnerabilità esiste il protocollo Transport Layer Security che il protocollo Secure Sockets Layer (TLS/SSL) per come è implementato nel componente di crittografia di.NET Framework di Microsoft. Un utente malintenzionato potrebbe sfruttare questa vulnerabilità potrebbe decrittografare il traffico crittografato TLS/SSL.

Per sfruttare la vulnerabilità, un utente malintenzionato avrebbe innanzitutto inserire dati non crittografati nel canale di protezione e quindi eseguire un attacco di man-in-the-middle (MiTM) tra il client di destinazione e un server legittimo. Questo aggiornamento risolve la vulnerabilità modificando il modo che il componente di crittografia .NET invia e riceve pacchetti crittografati.

Questa vulnerabilità è fisso come parte di Bollettino Microsoft MS16-065. Questo aggiornamento modifica il modo che il componente di crittografia di.NET Framework Invia e riceve pacchetti crittografati.

Nella tabella seguente vengono forniti collegamenti alla voce di standard per ciascuna vulnerabilità nell'elenco CVE.

Titolo di vulnerabilitàNumero CVEPubblicamenteSfruttare
Vulnerabilità legata allo Spoofing TLS/SSLCVE-2016-0149No

Risoluzione di vulnerabilità

La modifica introdotta in Bollettino Microsoft MS16-065 cause di TLS primo registrare dopo l'handshake da dividere. In questo modo il SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient e HttpClient (dove basato su HttpWebRequest) flussi per restituire un singolo byte per la prima lettura, immediatamente seguita dai byte rimanenti (n-1) nelle successive letture. Modifica questo comportamento si verifica solo per le applicazioni che utilizzano TLS 1.0 + Cipher Block Chaining, ma non quando si utilizza TLS 1.1 o TLS 1.2.

Nota Come prerequisito, è necessario installare Bollettino Microsoft MS12-006 Per attivare questo aggiornamento.

Questa modifica può causare alcune applicazioni che si basano su di.NET Framework l'interruzione. In questo articolo vengono descritti due approcci, che è possibile utilizzare per aggiornare l'applicazione per funzionare correttamente dopo l'applicazione Bollettino Microsoft MS16-065.

Fattori attenuanti per problemi di compatibilità

Opzione 1: Attivare il protocollo TLS 1.2

Questa opzione diventa l'applicazione utilizza il protocollo TLS 1.2 per la modifica del Registro di sistema o di configurazione a livello di codice la versione del protocollo.
  • Modificare il Registro di sistema

    Importante Seguire attentamente i passaggi in questa sezione. L'errata modifica del Registro di sistema può causare problemi gravi. Prima di modificarlo, eseguire il backup del Registro di sistema per il ripristino nel caso in cui si verifichino problemi.

    il.NET Framework 4.0 e le applicazioni di 4.5.x di.NET Framework che eseguono il .NET Framework 4.5 e versioni successive possono attivare il protocollo predefinito 1.2 TLS TLS 1.1 e TLS 1.0 attivando la chiave di registro SchUseStrongCrypto . Questa chiave del Registro di sistema descritto nella sezione Interventi consigliati del Microsoft Security Advisory 2960358 argomento sul sito Web Microsoft TechNet.

    Importante Questa modifica del Registro di sistema funziona solo se sono vere le seguenti condizioni:
    • Le applicazioni che utilizzano API basate su ServicePointManager sono non impostazione del ServicePointManager.SecurityProtocol valore in modo esplicito. System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequeste SmtpClientsono esempi di tali classi. L'impostazione di ServicePointManager.SecurityProtocol nel codice ha la priorità del Registro di sistema.
    • Le applicazioni utilizzano la SslStream AuthenticateAsClient(String) eseguire l'overload.

  • Configurare a livello di codice la versione del protocollo

    il.NET Framework 4.0 e 4.5 applicazioni in esecuzione su di .NET Framework 4.5 e versioni successive e che utilizzano il SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) overload deve essere ricompilato, specificare SslProtocols.Tls12, SslProtocols.Tls11e SslProtocols.Tls come terzo parametro. Per una descrizione completa di come utilizzare la classe SslStream, vedere il Classe SslStream argomento sul sito Web Microsoft Developer (MSDN).

    Nota Il.NET Framework 4.6 e versioni successive è possibile utilizzare TLS 1.2, TLS 1.1 e TLS 1.0 come impostazioni predefinite del protocollo. Questo argomento verrà trattato il Microsoft Security Advisory 2960358 argomento sul sito Web Microsoft TechNet.

Opzione 2: Handle divisa pacchetti

Questo aggiornamento impedisce a un singolo record da suddividere in più record. Pertanto, se un'applicazione prevede che il record è disponibile in un'unica chiamata Read , tali applicazioni vengano interrotti. Per assicurarsi che l'applicazione si comporta correttamente, verificare che l'applicazione gestisce i pacchetti di divisione eseguendo correttamente la chiamata Stream.Read . È possibile utilizzare il codice di esempio disponibile qui come riferimento per la correzione dell'applicazione di eseguire correttamente la lettura , chiamare.

Per una richiesta HTTP di esempio che mostra la differenza nel comportamento prima (con la riduzione) e dopo (senza attenuazione) gli aggiornamenti 3147461 e 3147458 sono stati installati, vedere la sezione "Informazioni".

Per un esempio completo del metodo Stream.Read , vedere il Metodo Stream.Read (Byte[],Int32,Int32) argomento sul sito Web Microsoft Developer (MSDN).

Soluzioni alternative per problemi di compatibilità delle applicazioni

Avviso Queste soluzioni alternative possono rendere un computer o una rete più vulnerabile agli attacchi di utenti malintenzionati o programmi software dannosi, quali i virus. Si sconsiglia di utilizzare queste soluzioni alternative, ma forniscono queste informazioni in modo che sia possibile implementare tali soluzioni a propria discrezione. Utilizzare queste soluzioni alternative a proprio rischio.

Metodo 1: Aggiornare le chiavi del Registro di sistema (disponibile per tutte le versioni di.NET Framework)



Disattivare la struttura SCH_SEND_AUX_RECORD (globalmente)
Per tutte le applicazioni, aggiungere la seguente sottochiave del Registro di sistema:
Percorso del Registro di sistema:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

Nome DWORD: SchSendAuxRecord
Dati valore: 0

Nota Il segnaposto di <version_number>è v 4.0.30319 o v 2.0.50727, a seconda della versione.

Per applicazioni a 32 bit in esecuzione su computer a 64 bit, aggiungere la seguente sottochiave del Registro di sistema:
</version_number>
Percorso del Registro di sistema:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

Nome DWORD: SchSendAuxRecord
Dati valore: 0

Nota Il segnaposto di <version_number>è v 4.0.30319 o v 2.0.50727, a seconda della versione.

</version_number>
Soluzione alternativa
Per disattivare temporaneamente la modalità di protezione descritta in questo articolo, fare clic sul collegamento appropriato per scaricare un file reg e fare doppio clic sul file scaricato reg per apportare le modifiche del Registro di sistema.

Per applicazioni destinate al Microsoft.NET Framework 3.5:

Per le applicazioni di destinazione di.NET Framework di Microsoft 4.0 e versioni successive:

Per riattivare la modalità di protezione descritta in questo articolo, fare clic sul collegamento appropriato per scaricare un file reg e fare doppio clic sul file scaricato reg per apportare le modifiche del Registro di sistema.

Per applicazioni destinate a Microsoft.NET Framework 3.5:

Per le applicazioni di destinazione di.NET Framework di Microsoft 4.0 e versioni successive:

Per ulteriori informazioni su come scaricare i file di supporto Microsoft, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
119591 Come ottenere file di supporto Microsoft dai servizi online
Microsoft ha analizzato questo file per individuare eventuali virus. Microsoft ha utilizzato il software antivirus più recente disponibile alla data in cui il file è stato registrato. Il file è archiviato in un server con protezione avanzata che impedisce modifiche non autorizzate al file.


Disattivare la struttura SCH_SEND_AUX_RECORD per le singole applicazioni
Per tutte le applicazioni, aggiungere la seguente sottochiave del Registro di sistema:
Percorso del Registro di sistema:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nome DWORD: Percorso completo per il .exe dell'applicazione (ad esempio, C:\MyApp\MyApp.exe)
Dati valore: 0

Nota Il segnaposto di <version_number>è v 4.0.30319 o v 2.0.50727, a seconda della versione.

Per applicazioni a 32 bit in esecuzione su computer a 64 bit, aggiungere la seguente sottochiave del Registro di sistema:
</version_number>
Percorso del Registro di sistema:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nome DWORD: Percorso completo per il .exe dell'applicazione (ad esempio, C:\MyApp\MyApp.exe)
Dati valore: 0 (l'unico valore valido è 0. Qualsiasi altro valore verrà ignorato.)

Nota Il segnaposto di <version_number>è v 4.0.30319 o v 2.0.50727, a seconda della versione.

</version_number>

Metodo 2: Modificare una configurazione a livello di applicazione (disponibile solo per la versione di.NET Framework 4.6 e versioni successive)

A partire dal 4.6 di.NET Framework, è possibile modificare la configurazione al livello dell'applicazione tramite codice o applicazione modifiche del Registro di sistema o di configurazione.

In 4.6 di.NET Framework, è possibile impostare l'opzione utilizzando uno dei metodi descritti di seguito. Questi esempi di disattivare la funzionalità di protezione.
  • Livello di codice

    La prima cosa che l'applicazione viene eseguita il codice riportato di seguito. In questo modo punto Service Manager inizializzerà una sola volta.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Configurazione dell'applicazione

    Per modificare la configurazione dell'applicazione, aggiungere la seguente voce:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Chiave del Registro di sistema (computer globale)

    Percorsi del Registro di sistema:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Valore: Switch.System.Net.DontEnableSchSendAuxRecord
    Tipo: String
    Valore: True

    Nota Switch.System.Net.DontEnableSchSendAuxRecord = False per tutte le applicazioni.
Informazioni
Di seguito è un modello di comunicazione Client/Server di esempio prima e dopo aver installato questo aggiornamento. Queste informazioni vengono fornite a scopo illustrativo per identificare qualsiasi rottura dell'applicazione per l'installazione di questa correzione.

Senza la riduzione dei rischiCon la riduzione dei rischi
[Server] in attesa di connessioni (127.0.0.1:4431)
[Client] La connessione a localhost:4431
[Server] Connessione al client.
[Client] Connesso. Autenticazione di...
[Server] Client autenticato.
[Client] Invio richiesta (94 byte)
[Client] In attesa di risposta...

[Server] 94 byte ricevuti:<GET></GET>
Host: contoso.com
User-Agent: Test dell'applicazione

>>>
[Server] Ha risposto con 476 byte.

[Client 1: 476 byte] Risposta:<HTTP .1="" 200=""></HTTP>

>>>>>
[Server] in attesa di connessioni (127.0.0.1:4431)
[Client] La connessione a localhost:4431
[Server] Connessione al client.
[Client] Connesso. Autenticazione di...
[Server] Client autenticato.
[Client] Invio richiesta (94 byte)
[Client] In attesa di risposta...
[Server] Ricevuto 1 byte: <G>>><b00> </b00> </G>
[Server] Byte 93 ricevuti:<ET></ET>
Host: contoso.com
User-Agent: Test dell'applicazione

>>>
[Server] Ha risposto con 476 byte.
[Client 1: 1 byte] Risposta: <H>>>><b00> </b00> </H>
[Client 2: 475 byte] Risposta:<TTP .1="" 200=""></TTP>

>>>>>

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3155464 - Ultima revisione: 05/10/2016 22:36:00 - Revisione: 1.0

Microsoft .NET Framework 4.6.1, Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 3.5.1, Microsoft .NET Framework 3.5, Microsoft .NET Framework 2.0 Service Pack 2

  • kbsecvulnerability kbsecurity kbsecbulletin kbfix kbexpertiseinter kbbug atdownload kbmt KB3155464 KbMtit
Feedback