סיכום
קיימת פגיעות של גילוי מידע קיימת בפרוטוקול אבטחת שכבת התעבורה פרוטוקול Secure Sockets Layer (TLS/SSL) כפי מיושמת ברכיב ההצפנה של Microsoft .NET Framework. תוקף שיצליח לנצל את הפגיעות המתוארת יוכל לפענח תעבורת TLS/SSL מוצפן.
כדי לנצל הפגיעות זו, תוקף צריך תחילה להחדיר נתונים שאינם מוצפנים לתוך ערוץ אבטחה ולאחר מכן לבצע התקפה (MiTM) man בבאמצע בין הלקוח היעד לשרת לגיטימיות. עדכון זה מטפל בפגיעות על-ידי שינוי האופן ברכיב ההצפנה .NET שולח ומקבל מנות רשת מוצפנת.
פגיעות זו הוא קבוע כחלק עלון אבטחה של Microsoft MS16-065. עדכון זה משנה את האופן בו רכיב ההצפנה של .NET Framework שולח ומקבל מנות רשת מוצפנת.
הטבלה הבאה מכילה קישורים לערך רגיל עבור כל פגיעות ברשימה פגיעויות נפוצות ואחת מהן חשיפה.
פגיעות כותרת |
מספר ה-CVE |
בפומבי |
לנצל |
---|---|---|---|
פגיעות זיוף של TLS/SSL |
כן |
לא |
פגיעות רזולוציה
השינוי שהונהגו במסגרת עלון אבטחה של Microsoft MS16-065 גורמת הרשומה הראשונה של TLS לאחר לחיצת היד שיש לפצל. פעולה זו גורמת את SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient ו- HttpClient (היכן בהתבסס על HttpWebRequest) זרמי להחזרת בית בודד עבור קריאה ראשונה, ומיד אחריו הבתים יתר (n-1) בקריאות רצופות. שינוי אופן פעולה זה מתרחש רק עבור יישומים המשתמשים TLS 1.0 + שרשור בלוק צופן, אך לא כאשר הם משתמשים TLS 1.1 או TLS 1.2.
הערה כתנאי מוקדם, עליך להתקין את עלון אבטחה MS12-006 של Microsoft כדי לאפשר עדכון זה.
שינוי זה עשוי לגרום שיישומים מסוימים המבוססים על .NET Framework לשבירה. מאמר זה מתאר שתי הגישות שבאפשרותך להשתמש כדי לעדכן את היישום לפעול כהלכה לאחר החלת עלון אבטחה של Microsoft MS16-065.
גורמים מקלים לגבי בעיות תאימות
אפשרות מס ' 1: לעבור הפרוטוקול TLS 1.2
אפשרות זו הופכת את היישום להשתמש בפרוטוקול TLS 1.2 על-ידי שינוי הרישום, או באופן תוכניתי קביעת התצורה של פרוטוקול גירסה.
-
שנה את הרישום
חשוב
בצע את השלבים במקטע זה בזהירות. עלולות להתרחש בעיות חמורות אם תשנה את הרישום באופן שגוי. לפני שתבצע בו שינויים, לגבות את הרישום עבור שחזור במקרה לגרום לבעיות.
את 4.0 מסגרת .NET ויישומים את .NET Framework 4.5.x הפועלים ב- .NET Framework 4.5 וגירסאות מאוחרות יותר ניתן לעבור פרוטוקול ברירת המחדל TLS 1.2, TLS 1.1 ו- TLS 1.0 על-ידי הפעלת את מפתח הרישום SchUseStrongCrypto . מפתח רישום זה נידון בסעיף פעולות מומלצות של הנושא 2960358 עלון יידוע בנושא אבטחה של Microsoft באתר האינטרנט של Microsoft TechNet.
חשוב שינוי זה ברישום יפעלו רק אם התנאים הבאים מתקיימים:-
יישומים המשתמשים APIs מבוסס על ServicePointManager אתה מגדיר את הערך ServicePointManager.SecurityProtocol במפורש . דוגמאות של מחלקות כאלה כוללות System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequestו- System.Net.Mail.SmtpClient. הגדרת ServicePointManager.SecurityProtocol בקוד קדימות על פני הרישום.
-
יישומים עושים שימוש עומס יתר של SslStream AuthenticateAsClient(String) .
-
-
קביעת תצורה של גירסת פרוטוקול באופן תוכניתי
את 4.0 מסגרת .NET ו- 4.5 יישומים הפועלים ב- .NET Framework 4.5 וגירסאות מאוחרות יותר ולהשתמש בהם עומס יתר של SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) חייב להיות recompiled, ציון SslProtocols.Tls12, SslProtocols.Tls11ו- SslProtocols.Tls כמו הפרמטר השלישי. לקבלת תיאור מלא של אופן השימוש המחלקה SslStream, עיין בנושא מחלקה SslStream באתר האינטרנט של Microsoft מפתחים (MSDN).
הערה .NET Framework 4.6 וגירסאות מאוחרות יותר להשתמש TLS 1.2, TLS 1.1 ו- TLS 1.0 כברירות פרוטוקול. זה נידון בנושא 2960358 עלון יידוע בנושא אבטחה של Microsoft באתר האינטרנט של Microsoft TechNet.
אפשרות 2: נקודת האחיזה לפצל מנות
עדכון זה גורם לרשומה בודדת ניתן לפצל רשומות מרובות. לכן, אם יישום מצפה הרשומה מלאה תהיה זמינה בקריאה לקריאה יחיד, כגון יישומי עשויים להיפסק. ודא כי היישום מתנהג כראוי, ודא שבו היישום מטפל מנות פיצול על-ידי ביצוע השיחה Stream.Read כראוי. באפשרותך להשתמש את דוגמת הקוד זמין כאן כהפניה כיצד לתקן את היישום כדי לבצע את השיחה לקריאה כראוי.
עבור בקשת HTTP לדוגמה אשר מציג את ההבדל בהתנהגות לפני (עם הפחתת הסיכון) ואת לאחר (ללא הפחתת הסיכון) הותקנו עדכונים 3147461 ו- 3147458 , עיין בסעיף 'מידע נוסף'.
לדוגמה מלאה של השיטה Stream.Read , עיין בנושא שיטת Stream.Read (Byte [], Int32, Int32) באתר האינטרנט של Microsoft מפתחים (MSDN).
דרכים לעקיפת הבעיה כדי בעיות של תאימות יישומים
אזהרה דרכים אלה לעקיפת הבעיה עלולה להפוך את המחשב או הרשת לפגיעים יותר להתקפות של משתמשים זדוניים או של תוכנות זדוניות כגון וירוסים. דרכים אלה לעקיפת הבעיה לא מומלץ, אך אנו מספקים המידע כך שתוכל ליישם דרכי שיקול דעתך. השתמש דרכי באחריותך הבלעדית.
שיטה 1: עדכן את מפתחות הרישום (זמין עבור כל הגירסאות של .NET Framework)
בטל את מבנה SCH_SEND_AUX_RECORD (כללי)
בטל את מבנה SCH_SEND_AUX_RECORD עבור יישומים נפרדים
בטל את מבנה SCH_SEND_AUX_RECORD (כללי)
עבור כל היישומים, להוסיף את מפתח המשנה הבא של הרישום:
במיקום הרישום: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < version_number >
שם ה-DWORD: SchSendAuxRecord
נתוני ערך: 0
הערה מציין המיקום < version_number > הוא v4.0.30319 או v2.0.50727, בהתאם לגירסת.
עבור יישומי 32 סיביות הפועלות במחשבי 64-סיביות, יש להוסיף גם את מפתח המשנה הבא של הרישום:
במיקום הרישום: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < version_number >
שם ה-DWORD: SchSendAuxRecord
נתוני ערך: 0
הערה מציין המיקום < version_number > הוא v4.0.30319 או v2.0.50727, בהתאם לגירסת.
פתרון הבעיה
כדי לבטל באופן זמני את מצב מאובטח המתוארות במאמר זה, לחץ על הקישור המתאים כדי להוריד את קובץ ה-. reg ולאחר מכן לחץ פעמיים על קובץ ה-. reg שהורד כדי לבצע השינויים ברישום.
עבור יישומים פילוח של Microsoft .NET Framework 3.5:
הורד עכשיו את הקובץ ManualOptOutSchSendAuxRecord20.reg.
עבור יישומים פילוח של Microsoft .NET Framework 4.0 וגירסאות מתקדמות יותר:
הורד עכשיו את הקובץ ManualOptOutSchSendAuxRecord40.reg.
כדי להפעיל מחדש במצב מאובטח המתוארות במאמר זה, לחץ על הקישור המתאים כדי להוריד את קובץ ה-. reg ולאחר מכן לחץ פעמיים על קובץ ה-. reg שהורד כדי לבצע השינויים ברישום.
עבור יישומים פילוח של Microsoft .NET Framework 3.5:
הורד עכשיו את הקובץ ManualOptInSchSendAuxRecord20.reg.
עבור יישומים פילוח של Microsoft .NET Framework 4.0 וגירסאות מתקדמות יותר:
הורד עכשיו את הקובץ ManualOptInSchSendAuxRecord40.reg.
לקבלת מידע נוסף אודות אופן ההורדה של קובצי תמיכה של Microsoft, לחץ על מספר המאמר הבא כדי להציג את המאמר הרלוונטי מתוך Microsoft Knowledge Base:
119591 כיצד לקבל קבצי תמיכה של Microsoft משירותים מקווניםMicrosoft סרקה קובץ זה לאיתור וירוסים. Microsoft השתמשה בתוכנת איתור הווירוסים העדכנית ביותר שהיתה זמינה בתאריך פרסום הקובץ. הקובץ מאוחסן בשרתים בעלי אבטחה מוגברת המסייעים למנוע שינויים בלתי מורשים בקובץ.
בטל את מבנה SCH_SEND_AUX_RECORD עבור יישומים נפרדים
עבור כל היישומים, להוסיף את מפתח המשנה הבא של הרישום:
במיקום הרישום: HKEY_LOCAL_MACHINE\Software\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >
שם ה-DWORD: הנתיב המלא עבור ה. .exe היישום (לדוגמה, C:\MyApp\MyApp.exe)
נתוני ערך: 0
הערה מציין המיקום < version_number > הוא v4.0.30319 או v2.0.50727, בהתאם לגירסת.
עבור יישומי 32 סיביות הפועלות במחשבי 64-סיביות, יש להוסיף גם את מפתח המשנה הבא של הרישום:
במיקום הרישום: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >
שם ה-DWORD: הנתיב המלא עבור ה. .exe היישום (לדוגמה, C:\MyApp\MyApp.exe)
נתוני ערך: 0 (הערך החוקי היחיד הוא 0. כל ערך אחר תתעלם.)
הערה מציין המיקום < version_number > הוא v4.0.30319 או v2.0.50727, בהתאם לגירסת.
שיטה 2: שינוי תצורה ברמת היישום (זמין רק עבור .NET Framework גירסה 4.6 וגירסאות מאוחרות יותר)
החל מ- 4.6 Framework של .NET, שניתן לשנות את התצורה ברמת היישום באמצעות שינויי תצורה או רישום קוד או יישום.
ב- 4.6 Framework של .NET, באפשרותך להגדיר את המתג באמצעות כל אחת מהשיטות הבאות. דוגמאות אלה להשבית את תכונת האבטחה.
-
באופן תוכניתי
הדבר הראשון היישום עליך לעשות הוא להפעיל את הקוד הבא. הסיבה לכך היא מנהל נקודת שירות לאתחל פעם אחת בלבד.private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true); -
תצורת יישום
כדי לשנות את תצורת היישום, הוסף את הערך הבא:<runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/>
</runtime> -
מפתח הרישום (המחשב כללית)
מיקומי רישום: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContext
ערך: Switch.System.Net.DontEnableSchSendAuxRecord
סוג: מחרוזת
ערך: אמת
הערה Switch.System.Net.DontEnableSchSendAuxRecord = False עבור כל היישומים.
מידע נוסף
להלן הוא תבנית תקשורת שרת/לקוח לדוגמה לפני והן אחרי התקנת עדכון זה. מידע זה מסופק להמחשה לזיהוי תאונות שבר כל יישום עקב ההתקנה של תיקון זה.
ללא להפחתת הסיכון מאלה |
עם להפחתת הסיכון |
---|---|
[שרת] ממתין חיבורים (127.0.0.1:4431) |
[שרת] ממתין חיבורים (127.0.0.1:4431) |