SSTP ו-SSL 3.0: התווית מול הגרסה המנוהלת
תווית SSL אינה מוכיחה הפעלה של SSL 3.0. השוו בין הפרוטוקול המוצהר לזה שהשירות באמת מנהל משא ומתן עליו, ואז הוציאו את הגרסה הישנה משימוש.
שני אנשים יכולים להסתכל על אותה פריסה של SSTP ולהגיע למסקנות מנוגדות. האחד קורא את תיעוד המוצר, רואה את האותיות SSL ומניח שהמנהרה מריצה פרוטוקול שהוצא משימוש לפני שנים. האחר מצביע על לחיצת יד מודרנית ומסיק שהשאלה סגורה. שניהם מתווכחים מתוך תוויות ולא מתוך הגרסה המנוהלת, ורק אחד מהשניים הוא ראיה. ההשוואה ששווה לעשות היא בין מה שהשם מבטיח לבין מה שהשירות באמת בוחר.
שתי תשובות לאותה שאלה
טיעון התווית קל לניסוח: SSTP מתואר כפרוטוקול מנהרה מאובטח מעל שקעים, השם ההיסטורי אומר SSL, לכן החיבור חייב להיות SSL 3.0. הוא שורד משום שהשם באמת בא מאותה שושלת, ומשום שרוב מי שחוזר עליו מעולם לא הסתכל על לחיצת יד. הוא שורד גם משום שהמסקנה נשמעת זהירה, כאילו הנחת הגרוע מכל היא הבחירה הבטוחה. להניח את הגרוע מכל ולמדוד את הגרסה בפועל הם שני עיסוקים שונים, ורק אחד מהם משנה משהו.
טיעון הראיה שואל שאלה צרה יותר. על איזו גרסת פרוטוקול הסכימו הלקוח הזה והשרת הזה, בנקודת הקצה הזו, בזמן הזה? התשובה מגיעה מהשירות שמסיים את TLS, לא מדף שיווקי ולא מדפדפן שהגיע לאתר בשם דומה.
שני הטיעונים נבדלים במה שהם יכולים להוכיח. התווית אינה יכולה להבדיל בין פריסה ישנה לכזו שתוקנה, ולחיצת היד אינה יכולה לומר לך מה עושה שירות לא קשור באותו מארח. השתמשו בשני והפסיקו להשתמש בראשון.
קראו את הגרסה שהשירות באמת בוחר
התחילו במתן שמות לרכיבים: מימוש הלקוח, מימוש השרת, נקודת הקצה של TLS וכל מה שביניהם שמסיים ומקים מחדש TLS. מאזן עומסים שמסיים TLS ומדבר HTTP פשוט עם הקצה האחורי משנה איזו מדיניות של איזה התקן עליכם לקרוא.
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null> | grep -E 'Protocol|Cipher' Get-WinEvent -LogName System -ProviderName Schannel -MaxEvents 20
רשמו את נקודת הקצה ואת הזמן לצד התוצאה, משום ששינוי מדיניות מאוחר יותר הופך תצפית בלי תאריך לחסרת תועלת. חזרו על הבדיקה מלקוח באותו מסלול רשת שבו נמצאים המשתמשים שמעניינים אתכם, מפני שהתקן יירוט יכול לסיים TLS עם ההגדרות שלו. אם שתי העמדות אינן מתיישבות, מצאתם את הרכיב שחשוב. אם הן מתיישבות, יש לכם ראיה ולא סיסמה.
הפרידו בין שדה הרשומה לבין המשא ומתן
מספר גרסה שנראה מיושן בשדה אחד אינו אותה עובדה כמו הפעלה של SSL 3.0. RFC 7568 מתייחס לגרסת שכבת הרשומה ולפרוטוקול המנוהל כשני עניינים נפרדים, ומההבחנה הזו בדיוק מגיעות התשובות השגויות והבטוחות. קראו את הפרוטוקול המנוהל, אחר כך את הצופן, ורק אז הסיקו מסקנה על ההפעלה.
אותו מסמך חד-משמעי לגבי הפרוטוקול עצמו: אין להשתמש ב-SSL 3.0, ואסור לנהל משא ומתן או לסגת אליו. הסיבה היא מבנה CBC השבור שממנו ניצלה המתקפה POODLE, וזו תכונה של הפרוטוקול ולא תצורה של יישום אחד.
לכן “סביר שקשה לנצל את העומס הזה” אינו טיעון להשארת SSL 3.0 פעיל. הדרישה היא להסיר את הפרוטוקול, לא לנצח בוויכוח על הדגמה אחת.
הוציאו את SSL 3.0 משימוש עם מדיניות שתוכלו לגבות
ב-Windows הגדרות הפרוטוקול של Schannel נמצאות תחת מפתח Protocols ונקראות בנפרד לתפקיד לקוח ולתפקיד שרת, ולכן שינוי שמתקן כיוון אחד יכול להשאיר את האחר ללא נגיעה. ההגדרות הנוכחיות ודרישות האתחול שלהן מתועדות על ידי Microsoft, וספריית TLS של צד שלישי באותו מארח מתעלמת מהן לגמרי.
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'
שנו את המדיניות דרך נתיב הניהול הנתמך, ודאו שהשירות הבעלים קורא מחדש את התצורה, ושמרו על דרך חזרה מאושרת. הדבקת סקריפט רישום רחב מסביבה אחרת היא הדרך שבה תיקון של שירות אחד הופך להשבתה של כל לקוח TLS במכונה. היקף האתחול חשוב כאן: הגדרה שנראית מוחלת עשויה עדיין להימצא בזיכרון של שירות שלא טען אותה מחדש.
עמית שעדיין דורש גרסה מיושנת זקוק לעדכון או לתוכנית הגירה. חריג לא מתועד שמחזיר בשקט את הפרוטוקול הישן אינו אסטרטגיית תאימות, והוא לא ישרוד את הביקורת הבאה.
קבלו את השינוי בחיבורים חדשים
בדקו עם הפעלות חדשות לאחר שינוי המדיניות, מפני שחיבור שהוקם לפני השינוי אינו מוכיח דבר על התצורה שבתוקף כעת. אשרו שהפרוטוקול המותר מצליח ושהאסור נכשל במסגרת תהליך האימות המורשה, ואז השאירו את זהות התעודה ואת בדיקות האמון בדיוק כפי שהיו.
זכרו מה לחיצת היד אינה מכסה. SSTP נושא אימות PPP לאחר שכבת TLS, ולכן גרסת פרוטוקול מודרנית אינה אומרת דבר על איזה משתמש אושר או לאילו משאבים ההפעלה יכולה להגיע. אלה בקרות נפרדות עם ראיות נפרדות.
רשמו את התוצאה כשירות, קצה אחורי, מדיניות מותרת וגרסה נצפית. רשומה כזו עונה בדיוק על שאלת האבטחה, וזאת לא עושה לא טיעון התווית ולא טיעון אי-הנוחות.