Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Riepilogo

Vulnerabilità esiste il protocollo Transport Layer Security che il protocollo Secure Sockets Layer (TLS/SSL) per come è implementato nel componente di crittografia di Microsoft.NET Framework. 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à è stato risolto come parte del bollettino 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 CVE

Pubblicamente

Sfruttare

Vulnerabilità legata allo Spoofing TLS/SSL

CVE-2016-0149

No

Risoluzione di vulnerabilità

La modifica introdotta nel Microsoft Security Bulletin MS16-065 , il primo record TLS 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 sulla sicurezza 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 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 modificarla, eseguire il backup del Registro di sistema per il ripristino in caso di 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 dell'argomento 2960358 di Microsoft Security Advisory nel 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 non impostato in modo esplicito il valore di ServicePointManager.SecurityProtocol . 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.

    • Applicazioni stanno utilizzando l'overload del metodo SslStream AuthenticateAsClient(String) .


  • 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 di utilizzare l'overload SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) devono essere ricompilate, specificare SslProtocols.Tls12, SslProtocols.Tls11e SslProtocols.Tls come terzo parametro. Per una descrizione completa di come utilizzare la classe SslStream, vedere l'argomento della Classe SslStream 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. Ciò viene discusso nella sezione Microsoft Security Advisory 2960358 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 l'esempio codice disponibile qui come riferimento per la correzione dell'applicazione per eseguire correttamente la chiamata al metodo Read .

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

Per un esempio completo del metodo Stream.Read , vedere Il metodo Stream.Read (Byte [], Int32, Int32) 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)

Disattivare la struttura SCH_SEND_AUX_RECORD per le singole applicazioni

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 < 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:

Percorso del Registro di sistema: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\ . NETFramework\ < version_number >
Nome DWORD: SchSendAuxRecord
Dati valore: 0
Nota: Il segnaposto < version_number > è v 4.0.30319 o v 2.0.50727, a seconda della versione.

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:

Download Scaricare il file ManualOptOutSchSendAuxRecord20.reg.
Per le applicazioni di destinazione di Microsoft.NET Framework 4.0 e versioni successive:

Download Scaricare il file ManualOptOutSchSendAuxRecord40.reg.
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:

Download Scaricare il file ManualOptInSchSendAuxRecord20.reg.
Per le applicazioni di destinazione di Microsoft.NET Framework 4.0 e versioni successive:

Download Scaricare il file ManualOptInSchSendAuxRecord40.reg.
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 onlineMicrosoft 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\ . \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >
Nome DWORD: Percorso completo per il .exe dell'applicazione (ad esempio, C:\MyApp\MyApp.exe)
Dati valore: 0
Nota: Il segnaposto < 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:

Percorso del Registro di sistema: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\ . \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >
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 < version_number > è v 4.0.30319 o v 2.0.50727, a seconda della versione.

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\AppContextHKEY_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.

Ulteriori 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 rischi

Con 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] Ricevuto 94 byte: <<< GET / HTTP/1.0
Host: contoso.com
User-Agent: Test dell'applicazione

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

[Client 1: 476 byte] Risposta: <<<<< HTTP/1.1 200 OK

>>>>>

[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 >>>
[Server] Ricevuto 93 byte: <<< ET / HTTP/1.0
Host: contoso.com
User-Agent: Test dell'applicazione

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

>>>>>


Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×