Kokkuvõte
Teabe avalikustamise haavatavuse olemas Transport Layer Security protocol ja protokolli Secure Sockets Layer (TLS/SSL) rakendatud krüptimine komponendi Microsoft .NET Frameworki. Ründaja, kes edukalt kasutas See haavatavus võib dekrüptida krüptitud TLS/SSL-i liiklus.
Haavatavuse kasutada ründaja oleks kõigepealt annavad krüptimata andmete turvalisuse kanal ja seejärel sooritage man-in-Lähis (MiTM) rünnaku suunatud kliendi ja usaldusväärse serveri vahel. See värskendus lahendab haavatavuse muutmisega nii, et .net-i krüptimise komponendina saadab ja saab krüptitud võrgustik pakettides.
See probleem on lahendatud Microsofti turvabülletään MS16-065osana. Selle värskendusega muudetakse nii, et .NET Framework krüptimine komponendi saadab ja saab krüptitud võrgustik pakettides.
Järgmine tabel sisaldab linke standard kirje iga loendis levinud nõrkused ja riskid haavatavuse lahendamiseks.
Haavatavuse pealkiri |
CVE number |
Avalikustada |
Ära kasutada |
---|---|---|---|
TLS/SSL-i tüssamine nõrkus |
Jah |
Ei |
Haavatavuse lahendus
Microsofti turvabülletään MS16-065 kasutusele muudatus põhjustab esimese TLS-i kirje pärast handshake jagada. See põhjustab SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient ja HttpClient (kus põhineb HttpWebRequest) voogude tagasi ühe baidi esimene lugeda kohe järgneb ülejäänud (n-1) baiti järjestikuste loeb. See käitumise muutus ilmneb ainult rakenduste jaoks, mis kasutavad TLS 1.0 + šifri ploki Aheldamise, kuid mitte, kui nad kasutavad TLS 1.1 või TLS 1.2.
Märkus. Eeltingimus, peate installima Microsoft turvabülletääni MS12-006 selle värskenduse.
See muudatus võib põhjustada mõned rakendused, mis põhinevad .NET Frameworki murda. Selles artiklis kirjeldatakse kahte meetodit, mille abil saate värskendada oma taotluse pärast seda, kui rakendate Microsofti turvabülletään MS16-065õigesti töötada.
Ühilduvusprobleemide kergendamise
Variant 1: Aktiveerige TLS 1.2 protokoll
See muudab rakenduse kasutamine TLS 1.2 protokolli registri muutmise või programmiliselt konfigureerimise protokolli versioon.
-
Registri muutmine
NB!
Järgige hoolikalt selles jaotises toodud juhiseid. Registri valesti muutmine võib tekitada suuri probleeme. Enne muutmist registri taastamine kui peaks probleeme tekkima.
.NET Framework 4,0 ja .NET Framework 4.5.x rakendusi, mis töötavad .NET Framework 4.5 ja uuemad versioonid aktiveerida vaikimisi protokolli TLS 1.2 ja TLS 1.1 TLS 1.0, lubades SchUseStrongCrypto registrivõtit. See registrivõti on käsitletud Soovitatud toimingute osas Microsoft Security Advisory 2960358 teema Microsoft TechNeti veebisaidil.
NB! See registri muudatus toimib ainult siis, kui täidetud on järgmised tingimused:-
Rakendused, mis kasutavad ServicePointManager vastavalt API-d on ServicePointManager.SecurityProtocol väärtuse selgesõnaliselt seadmine . Sellise klassi näiteks System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequestja System.Net.Mail.SmtpClient. Sätte ServicePointManager.SecurityProtocol koodi ülimuslik registrit.
-
Rakendused kasutavad SslStream AuthenticateAsClient(String) ülekoormus.
-
-
Programmiliselt konfigureerimise protokolli versioon
.NET Framework 4,0 ja 4,5 rakenduste .NET Framework 4.5 ja uuemad versioonid, mis töötavad ning kasutavad SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) ülekoormuse peab olema kompileeritud, määrates SslProtocols.Tls12, SslProtocols.Tls11ja SslProtocols.Tls kolmanda parameetriga. Kasutamine SslStream klassi täieliku kirjelduse leiate SslStream klassi teema Microsoft Developer (MSDN) veebisaiti.
Märkus. .NET Frameworki 4.6 ja uuemad versioonid kasutavad TLS 1.2 ja TLS 1.1 TLS 1.0 protokolli vaikesätted. See on kirjeldatud Microsoft Security Advisory 2960358 teema Microsoft TechNeti veebisaidil.
2. võimalus: Pide tükeldada paketid
See värskendus põhjustab ühe kirje tükeldada mitu kirjet. Seega, kui rakendus on saadaval ühe Read kõne täielik kirje oota, sellised rakendused võib murda. Veenduge, et rakendus käitub korralikult, veenduge, et rakendus käsitleb split paketid, tehes Stream.Read kõne õigesti. Saate selle proovi kood saadaval siin viitena parandamine rakenduse Read kõne õigesti teha.
Proovi HTTP-taotluse, mis näitab erinevust käitumist enne (leevendamine) ja pärast (ilma leevendamine) installitud värskendused 3147461 ja 3147458 , lugege jaotist "Lisateavet".
Täielik Stream.Read meetod näiteks teemast Stream.Read meetod (Byte [], Int32, Int32) Microsoft Developer (MSDN) veebisaiti.
Lahendused rakenduste ühilduvusega seotud probleemid
Hoiatus! Lahendustest võib muuta arvuti või võrgu nõrgemaks pahatahtlike kasutajate või pahatahtliku tarkvara, näiteks viiruseid. Me ei soovita lahendustest, vaid teavitame lahendustest, et saaksite ise otsustada. Kasutage lahendustest omal vastutusel.
1. meetod: Värskendage registrivõtmeid (saadaval kõik versioonid .NET Framework)
Keelake SCH_SEND_AUX_RECORD struktuuri (globaalne)
Keelata üksikute rakenduste SCH_SEND_AUX_RECORD struktuur
Keelake SCH_SEND_AUX_RECORD struktuuri (globaalne)
Kõik rakendused, lisage järgmine registri alamvõti:
Registri asukoht: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < version_number >
DWORD-nimi: SchSendAuxRecord
Value data: 0
Märkus. < Version_number > kohatäide on v4.0.30319 või v2.0.50727, olenevalt versioonist.
32-bitised rakendused, mis töötavad 64-bitiste arvutite, samuti lisage järgmine registri alamvõti:
Registri asukoht: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < version_number >
DWORD-nimi: SchSendAuxRecord
Value data: 0
Märkus. < Version_number > kohatäide on v4.0.30319 või v2.0.50727, olenevalt versioonist.
Lahendus
Selles artiklis kirjeldatud turvaline režiim ajutiseks keelamiseks klõpsake vastavat linki alla laadida REG-faili ja topeltklõpsake allalaaditud REG-faili registris muudatusi tegema.
Rakenduste suunatud Microsoft .NET Framework 3.5:
ManualOptOutSchSendAuxRecord20.reg faili allalaadimine.
Rakenduste suunatud Microsoft .NET Framework 4.0 ja uuemad versioonid:
ManualOptOutSchSendAuxRecord40.reg faili allalaadimine.
Selles artiklis kirjeldatud turvaline režiim uuesti lubamiseks klõpsake vastavat linki alla laadida REG-faili ja topeltklõpsake allalaaditud REG-faili registris muudatusi tegema.
Rakenduste suunatud Microsoft .NET Framework 3.5:
ManualOptInSchSendAuxRecord20.reg faili allalaadimine.
Rakenduste suunatud Microsoft .NET Framework 4.0 ja uuemad versioonid:
ManualOptInSchSendAuxRecord40.reg faili allalaadimine.
Microsofti tugifailide värskenduste allalaadimise kohta lisateavet hõlmava Microsofti teabebaasi artikli kuvamiseks klõpsake järgmist artiklinumbrit:
119591 kuidas Microsofti tugifailide hankimine võrguteenuste kauduMicrosoft skannis seda faili viiruste leidmiseks. Microsoft kasutas uusimat viirusetõrjetarkvara, mis oli faili postitamise päeval saadaval. Faili talletatakse täiustatud turvalisusega serverites, mis aitab takistada faili volitamata muutmist.
Keelata üksikute rakenduste SCH_SEND_AUX_RECORD struktuur
Kõik rakendused, lisage järgmine registri alamvõti:
Registri asukoht: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < version_number > \System.Net.ServicePointManager.SchSendAuxRecord
DWORD-nimi: Täieliku failitee .exe rakenduste (näiteks C:\MyApp\MyApp.exe)
Value data: 0
Märkus. < Version_number > kohatäide on v4.0.30319 või v2.0.50727, olenevalt versioonist.
32-bitised rakendused, mis töötavad 64-bitiste arvutite, samuti lisage järgmine registri alamvõti:
Registri asukoht: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < version_number > \System.Net.ServicePointManager.SchSendAuxRecord
DWORD-nimi: Täieliku failitee .exe rakenduste (näiteks C:\MyApp\MyApp.exe)
Value data: 0 (ainult kehtiv väärtus on 0. Muud väärtust ignoreeritakse.)
Märkus. < Version_number > kohatäide on v4.0.30319 või v2.0.50727, olenevalt versioonist.
2. meetod: Rakenduse tasemel (saadaval ainult .NET Frameworki versiooni 4.6 ja uuemate versioonide puhul) konfiguratsiooni muutmine
Alates .NET Frameworki 4.6, saate muuta konfiguratsiooni rakenduse tasemel kood või rakenduse konfigureerimine või registri muutmise kaudu.
.NET Frameworki 4.6 saate seada lüliti, kasutades ühte järgmistest meetoditest. Nendes näidetes turvalisuse funktsiooni keelamiseks.
-
Programmiliselt
Esimene asi, mida tuleks teha rakenduse käivitamisel järgmine kood. Seda sellepärast, et punkti Teenusehalduri lähtestada ainult üks kord.private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true); -
Rakenduse konfigureerimine
Rakenduse konfigureerimine muutmiseks lisage järgmine kirje:<runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/>
</runtime> -
Registrivõti (arvuti globaalne)
Registri asukohad: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContext
Väärtus: Switch.System.Net.DontEnableSchSendAuxRecord
Tüüp: String
Väärtus: Täidetud
Märkus. Switch.System.Net.DontEnableSchSendAuxRecord = False kõik rakendused.
Lisateabe saamiseks
Järgnev on näide kliendi/serveri side muster enne ja pärast selle värskenduse installimist. See teave on ette nähtud illustratsioon kindlaks teha mis tahes rakenduse purunemise selle paranduse installimise tõttu.
Ilma leevendamine |
Koos leevendamine |
---|---|
[Server] ootab ühendused (127.0.0.1:4431) |
[Server] ootab ühendused (127.0.0.1:4431) |