יש עדכונים בסוף הפוסט.
השבוע התוודענו לפירצת האבטחה במימוש OpenSSL. אתרים רבים כתבו על כך וכל מי שמבין ואחראי על שרתים וציודים בעבודתו "בילה" זמן ניכר בחיפוש אחר הפריצה.
בפוסט זה אנסה לסכם כמה דברים לגבי הפירצה ולהסביר כמה דברים נוספים לגביה.
תחילה אסביר מהו אותו חלק שפרוץ. ב-OpenSSL ישנה פונקציה הנקראת Heartbeat. מטרת הפונקציה הזו היא לייעל את התקשורת בין הדפדפן (או ה-Client) לבין השרת שמגיש תוכן. מה ש-Heartbeat עושה הוא בעצם "מסכם" עם השרת להשאיר את תקשורת ה-SSL פתוחה בין השרת ל-Client גם כשאין מידע שעובר באותו ערוץ. היתרון כמובן הוא שאין צורך בכל תהליך יצירת תקשורת מוצפנת מחדש בכל פעם שהשרת צריך להעביר תוכן ל-Client או ההיפך.
הפריצה עצמה נותנת "להציץ" בחלק מהתקשורת עצמה, חור בגודל 64K. לא בכולה. בימים האחרונים יצאו הודעות שבעצם חור האבטחה אינו נורא כל כך, הואיל וקשה מאוד לחלץ את המפתח הפרטי (Private key). אחרי הכל – אם יש לפורץ את ה-Private key, לא חשוב מה בעל האתר המוצפן יבצע, עם המפתח הפרטי אפשר להאזין לתקשורת ללא שום בעיה, גם כשהתקלה תוקנה.
חברת Cloudflare ניסתה במשך שבועיים להוציא מפתח פרטי דרך חור האבטחה בשרת טסטים שלהם והם נכשלו ולפיכך הם הכריזו על אתגר – הם הקימו שרת עצמאי עם חור האבטחה ואתגרו את הגולשים למצוא את המפתח הפרטי של השרת. עברו יומיים ו-2 פורצים שונים הצליחו לחלץ את המפתח (לא בקלות – אחד שלך 2,500,000 בקשות והשני 100,000) כך שפתרון הבעיה עצמה ע"י הטמעת טלאי (או עדכון גירסה) אינו מספק ואם יש למישהו מידע חשוב, יש צורך בלהנפיק תעודת SSL חדשה (Re-issue – זה לא עולה כסף). כל החברות שמוכרות תעודות SSL כבר פרסמו הוראות כיצד לבצע זאת.
עדיין, נקודה אחת שחלק גדול לא התייחס אליה הוא עניין ה-Clients. כן, הם גם צריכים עדכון גירסת SSL ואם הם מתחברים מבחוץ דרך https לאתרים שונים, גם הם צריכים עדכון. אפל הודיעה שהמערכות באייפון/אייפד אין להן את הבעיה, אבל אם אתם משתמשים ב-BBM (שרות ההודעות של BlackBerry) אז אתם כן צריכים עדכון (לאפליקציה, שכוללת מימוש OpenSSL משלה). בכל הקשור לאנדרואיד – הגירסה היחידה שכוללת את חור האבטחה היא 4.1.1 (מכשירים של סמסונג ישנים הכוללים אנדרואיד 4.1 כבר כוללים תיקון ל-OpenSSL והם עם אנדרואיד 4.1.2). לחברות פיתוח שמשתמשות בתחנות קצה מבוססות לינוקס (אובונטו, RHEL/CENTOS) – גם את התחנות יש לעדכן אם הן משתמשות בתקשורת החוצה (אחסון בענן, GIT או כל דבר אחר שעובר דרך https). לשם שינוי, הפעם תחנות ושרתים מבוססי Windows לא צריכים עדכון.
גם ציודים צריכים עדכונים וזה כולל נתבים וקופסאות של ג'וניפר, סיסקו, ופורטינט ולכן יש ליצור קשר עם הספק ציוד על מנת לקבל מידע גבי העדכון. כמו כן חשוב לזכור, לא מדובר רק על שרתי WEB, גם שרתי אפליקציות שמשתמשים ב-SSL יכולים להיות עם הבעיה הזו ולכן כדאי לבדוק את הנושא לעומק.
כמו תמיד, כשצץ לו חור אבטחה גדול, חובבי תיאוריות הקונספירציה מתועררים מריבצם. לא חשוב כמה הבחור שתרם את הקוד נשבע ביקר לו שזו היתה טעות שלו, תמיד יהיו אלו שיהיו בטוחים שהוא עשה את "הטעות" מטעם ה-NSA (שאגב, לפי בלומברג, כבר ידעה על החור כבר שנתיים וניצלה אותו. ה-NSA מכחישים כמובן) ואז כ-ו-ל-ם פתאום שואלים מדוע לא נעשה Code Auditing (בדיקת קוד) והתשובה לכך היא פשוטה: Code Auditing הוא תהליך יקר (תשאלו את הקבוצה שמפתחים את trucrypt), וזה שחברה תעשה בדיקה על קוד של OpenSSL ותכריז "לא מצאנו שום חורים" לא אומר שמישהו יסמוך על הבדיקה הזו (גם פה תמיד יגיע איזה מישהו וימצא שבן דוד של סמנכ"ל הכספים של אותה חברה נראה בפאב יושב במרחק 100 מטר מסתכל על החצאית של מישהי שעבדה ממזמן כמזכירה באיזה ארגון בטחוני ו"בטח יש משהו שם ואסור לסמוך על זה!!") ולכן יש צורך גם בכספים וגם בגוף ניטרלי.
עדכון 1: יובל סיני (ארכיטקט אבטחת מידע בבנק פועלים) מוסיף:
- ציודים עם פגיעות: F5 עם ממשקי ניהול כלפי העולם (כלומר הבעיה היא בממשק הניהול, ולא בכל המוצר).
- Imperva 10.5
- ב-OpenSSL ישנו חלק שנקרא Heartbeat – בגדול הסוגיה לא קשורה ל OpenSSL, אלא לשיטת עבודה של אפליקציות ב TCP.
- בעייה דומה הייתה קיימת בעת עבודה עם mod-ssl, ולא כל הארגונים הטמיעו את הפאץ המתאים.
עדכון 2: לגבי סיסמאות. כל מיני אנשים ממליצים על שינוי סיסמאות מיידי לכל המערכות. אני לעומת זאת ממליץ לשנות סיסמאות עכשיו רק למערכות שיש להן גישה החוצה דרך SSL או שניגשים אליהן מבחוץ דרך SSL. הפריצה לא איפשרה להיכנס למערכת, אלא להאזין מבחוץ.
עדכון 3: אין שום קשר בין הפריצה הזו ל-SSH. חבילת OpenSSL אין צורך בה לשם הקמת שרת SSH או בשביל SSH Client, והמשכיות התקשורת הרציפה בין מכונות בחיבור SSH נעשית עם keepalive שיש לו קוד שונה לחלוטין מ-Heartbeat.