אינטרנט זה אינטרנט, וועד בית זה ועד בית

איך לגלות את סיסמת המשתמש בשירות הדואר של וואלה!

כשדיווחתי לוואלה! על פירצת האבטחה בשירות הדואר שלהם, תיארתי גם בעיה נוספת, פשוטה יותר, שמאפשרת לכל מי שמשיג גישה לחשבון בוואלה! לראות את הסיסמה של בעל החשבון.

איך זה עובד? קלי קלות:

  1. מקליקים על "אפשרויות", מתחת ללוגו של "וואלה! דואר"

  2. ממשיכים ל "עריכת פרטי חשבון משתמש"

  3. הגענו לדף עריכת הפרטים. שימו לב ששדות הסיסמה (וואלה! אוהבים את התעתיק הארמי, אני לא) מכילים טקסט כלשהו, אבל מכיוון שמדובר בשדה מסוג סיסמה, אנחנו לא יכולים לקרוא אותו. נכשלנו.

  4. בעצם, אם נסתכל על קוד ה-HTML של הדף (view page source) ונחפש בו את המילה password, נגלה שהסיסמה מופיעה שם כחול על גבי לבן (בפיירפוקס). באמת אופס.

טוב, לפחות ככה זה היה כשדיווחתי על כך לוואלה!. מאז הם כנראה שיפרו את מנגנון האבטחה, שכן בין השלב השני לשלישי מגיעים עכשיו למסך הזה, שמבקש מאיתנו להזין את הסיסמה כדי להגיע אל דף עריכת הפרטים:

לכאורה, מנגנון זה מונע מאיתנו גישה לדף הקדוש. כל המטרה שלנו היא לגלות את הסיסמה, והדף שחושף אותה בפנינו מוגן ע"י אותה הסיסמה. נכשלנו שוב.

בואו נסתכל רגע על ה-URL:

http://friends.walla.co.il/?tsscript=login&theme=&ReturnURL=http://friends.walla.co.il/?w=/@reg&edit=1

זהו דף כניסה למערכת סטנדרטי. לאחר הכניסה, השרת של וואלה! יפנה אותנו לכתובת המודגשת, בה נמצא דף עריכת פרטי החשבון המבוקש. אם ננסה להיכנס ישירות אל דף זה לא נצליח ונופנה שוב אל דף הכניסה. אין ספק שבוואלה! חשבו על הכל עד הסוף.

איך הם עושים את זה? כנראה יש מנגנון כלשהו באפליקציה שלהם שיודע האם אתה מאומת מול השרת או לא. אבל אנחנו בעצם כן מאומתים, הרי כל הסיפור הזה מתרחש כשאנחנו כבר מחוברים לחשבון שלנו בשירות הדואר של וואלה!.

מסתבר שבוואלה! בחרו בפתרון פשוט מאוד. לא משנה באיזה אתר אתם נמצאים, אם תלחצו על קישור כדי לעבור לדף אחר, הדפדפן שלכם יצרף לבקשה לקבלת הדף החדש את כתובת הדף ההנוכחי. כך למעשה יכול וובמאסטר לדעת מהיכן הגיעו גולשים אל האתר שלו: אם הוא רואה שהשדה הזה - שנקרא Referer (הטעות במקור) - מכיל כתובת מסוימת, הוא יודע שהגולש הגיע דרכה אל האתר שלו. זה קורה תמיד, אלא אם הגולש הקליד את כתובת האתר ישירות או הגיע דרך בוקמרק או לינק שמחוץ לדפדפן (כמו לינק שהופיע בשיחת מסנג'ר).

כדי להוכיח את זה, נשתמש בתוסף לפיירפוקס בשם Modify Headers*. תוסף זה מאפשר לשחק עם המידע שהדפדפן שולח אל השרת (במקרה הזה, השרת של וואלה!), ולגרום לו להתנהג בצורה שונה מברירת המחדל. נבקש ממנו לשנות את שדה ה -Referer לכתובת של דף ההתחברות, כך:

לאחר מכן נגלוש אל דף פרטי עריכת החשבון (http://friends.walla.co.il/?w=/@reg&edit=1) ונקבל אותו ללא הצורך בהזנת הסיסמה. זה אומר שאם לפני ה"תיקון" היה לוקח 10 שניות לגלות את הסיסמה, עכשיו זה לוקח דקה.

בוואלה! לא לומדים. התקלה הקודמת נגרמה כי הם הניחו ששם השולח לא יכיל תווים מיוחדים, והם בחרו לתקן את התקלה הזו תחת ההנחה שהגולש לא ישנה את שדה ההפנייה (Referrer spoofing). בוואלה! כנראה לא יודעים את אחד הכללים החשובים ביותר של אבטחת מידע, והוא לעולם לא להניח שהקלט שיתקבל מהמשתמש תואם לתבנית מסוימת בלי לוודא את זה מראש.

את כל הקטע הזה עם ה-Referer בכלל גיליתי כשרציתי לכתוב על הבעיה המקורית עם הסיסמה, שהיא חמורה אף יותר לדעתי. מישהו בוואלה! החליט באופן מודע לשלוח את סיסמת המשתמש אל הדפדפן, וחשב שמכיוון שמדובר בשדה סיסמה, אף אחד לא יראה את זה**. יש סיבה טובה מאוד לכך שאתרים נורמליים לא נותנים לכם את הסיסמה כשאתם שוכחים אותה אלא מאפסים אותה. פשוט אסור להציג את הסיסמה, לעולם.

זה מלמד אותנו שהסיסמאות בוואלה! שמורות בבסיס הנתונים בצורה לא מוצפנת. מערכת שדואגת לשמירה על סיסמאות המשתמשים שלה תשתמש בפונקציית גיבוב חד כיוונית, כך שאם מישהו יקבל גישה לנתונים השמורים בשרת, הוא לא יוכל לגלות את סיסמת המשתמש עצמה, אלא רק את תוצר ההצפנה. אם בוואלה! היו עושים את זה הם לא היו יכולים להציג את הסיסמה למשתמש***. זה אומר שאם מישהו ימצא פירצת SQL Injection באתר (ולפי איך שהם מתייחסים לקלט מהמשתמש, אני בטוח שיש לפחות אחת), הוא אולי יוכל לקבל את רשימת כל שמות המשתמשים וסיסמאותיהם. כיף גדול.

המסקנה שלי מכל הסאגה הזו היא שאסור להשתמש בשירותים של וואלה!, ובטח לא לתת להם לשמור מידע בעל חשיבות כלשהי. שירות הדואר של וואלה! הוא אחד מהפופולריים בארץ, והיא נחשבת למיטב הבנתי לחברה מצליחה שיכולה להרשות לעצמה להעסיק מומחה אבטחת מידע, או לשלם לחברה שמתמחה בתחום כדי לבדוק את המוצרים שלהם לפני ההשקה. אם אני גיליתי את הדברים האלה - ואני בכלל לא מומחה בתחום - תחשבו מה בדיקת אבטחה אמיתית יכולה למצוא על החברה החובבנית הזו.

* יש כלים יעודיים לשדה ה-Referer, אם רוצים. אני מעדיף את זה.
** אני חושב שאני יודע למה הם עושים את זה. הטופס מעדכן את כל השדות תמיד, ולכן הם דאגו שאם לא תרצה לשנות את הסיסמה אלא רק את תאריך הלידה שלך, הסיסמה הנכונה תישלח בחזרה לעדכון. זו לא סיבה טובה לעשות את זה.
*** יכול להיות שהם משתמשים בהצפנה סימטרית. לא הייתי בונה על זה.

פירצת האבטחה בשירות הדואר של וואלה! נחשפת

באמצע דצמבר כתבתי על פירצת אבטחה חמורה בשירות הדואר של וואלה!, שגיליתי עוד באקטובר. הם חזרו אליי כעבור עשרה ימי עבודה מהיום בו הודעתי להם (במקום שלושה, כפי שהם מתחייבים). תיארתי להם את הפירצה ואת רמת חומרתה, ולא שמעתי מהם מאז.

כנראה מתישהו בשבועיים האחרונים - כחודשיים לאחר ההודעה הראשונית - הם תיקנו אותה, ולכן אני יכול לחשוף את פרטיה.

תוכנת הדואר שלהם מכילה שלושה פריימים עיקריים - רשימת התיקיות מימין, רשימת ההודעות בתיקייה למעלה ופרטי ההודעה למטה. כשלוחצים על הודעה בפריים העליון, היא נפתחת בתחתון. בקוד הג'אווהסקריפט של הפריים התחתון בזמן הצגת הודעה מופיעות השורות הבאות:

afrom=new Array();
afrom.email="johndoe@example.com";
afrom.name="John Doe";

זה קוד ג'אווהסקריפט שנוצר באופן דינאמי בצד השרת, ומכיל את שמו וכתובתו של שולח ההודעה. בעוד שעל כתובת דואר אלקטרוני חלים חוקי תחביר נוקשים, שם השולח יכול להכיל כל תו שהוא. שירותים מסויימים כמו Gmail מגבילים שימוש בחלק מהתווים, אבל שרתי SMTP רגילים לא, ואפשר לעשות איתם כמעט כל מה שרוצים.

אם, לדוגמה, שם השולח היה John " + "123″ + " Doe, התוצאה בקוד הג'אווהסקריפט היתה נראית כך:

afrom.name="John " + "123" + " Doe";

ושם השולח היה מוצג בחלון התצוגה כ "John 123 Doe".

ואפשר גם משהו כזה:

afrom.name="John " + function(){alert("Boo!");}() + " Doe";

שיגרום להודעה "Boo!" לקפוץ בעת קריאת הדואר.

פירצה כזו נקראת Javascript Injection, והיא מאפשרת לצד-שלישי להחדיר קוד ג'אווהסקריפט לדף של אתר כלשהו, ולגרום לו לרוץ בדפדפן של הגולש תחת הדומיין של האתר עצמו. הדפדפן לא יודע שהקוד שהוא מריץ לא שייך לאתר באמת, ולכן מאפשר לו לעשות דברים רעים כמו לקרוא את הקוקי של המשתמש. אם התוקף ישלח את הקוקי בחזרה אליו, הוא יכול להתחזות אל בעל התיבה ולקבל גישה לחשבונו.

היופי במקרה המסויים הזה הוא שהקוד מורץ באופן מיידי בעת הצגת ההודעה. אין צורך לתחמן את הצד המותקף ללחוץ על לינק, פשוט לשלוח את ההודעה ולחכות שיקרא אותה. גם אם המותקף יבין שההודעה חשודה עוד לפני שיפתח אותה וינסה למחוק אותה, ההודעה תוצג (כי ככה בחרו לעשות את זה בוואלה!) והקוד הזדוני יפעל. הדרך היחידה של המותקף להגן על עצמו היא להימנע כלל מללחוץ על ההודעה. תוסיפו לזה את האפשרות להוסיף שתי שורות קוד שיגרמו להודעה למחוק את עצמה מיד לאחר הפתיחה, ותקבלו פצצת אימייל שגונבת את הרשאות החיבור לחשבון ולא משאירה אחריה עקבות בתיבת המותקף.

איך וואלה! היו צריכים להגן על משתמשיהם? פשוט להחליף את התו " בסימן ;quot& שמייצג מרכאות, מה שהם כבר עשו עם נושא ההודעה.

אגב, יש עוד בעיית אבטחה טפשית להדהים בשירות הדואר של וואלה! המאפשרת לגנוב את סיסמת המשתמש (ולא את הקוקיז), אבל לא אפרסם אותה עדיין כי משום מה הם לא תיקנו אותה. ממש ממש טפשית.

וואלה! עדיין לא תיקנו פירצת אבטחה חמורה

ארבעים ימים עברו מאז שהודעתי לוואלה! על הפירצה, והיא עדיין לא תוקנה.

מה אתם חושבים שצריך לעשות כדי לגרום להם לתקן אותה?

פירצת אבטחה חמורה בשירות הדואר של "וואלה!"

בסוף אוקטובר עליתי על פירצת אבטחה חמורה בשירות הדואר של וואלה!. שועשעתי קלות מהאלגנטיות שבה ותכננתי להודיע להם על כך, אבל יומיים לאחר מכן טסתי לאמסטרדם ושכחתי מזה. לפני שבועיים נזכרתי, בדקתי שהיא עדיין רלוונטית, ופניתי אליהם. לצערי לא שמרתי את הנוסח המקורי, אבל זה היה משהו בסגנון: "שלום, מצאתי פירצת אבטחה חמורה בשירות הדואר שלכם, אנא חיזרו אליי בהקדם האפשרי". מיד לאחר השליחה התקבלה בתיבת הדוא"ל שלי הודעה הבאה:

שלום רב,

אנו מודים לך על פנייתך למערכת התמיכה הטכנית של וואלה!.

פנייתך התקבלה ותענה בתוך פרק זמן מקסימלי של 3 ימי עבודה.

על-מנת שיסתייע בידינו לספק את השירות הטוב ביותר עבורך, ולטפל בבעיה המדווחת במהירות וביעילות, יש לוודא כי פרטי הבעיה בה נתקלת מובאים במלואם.

בברכה,

צוות תמיכה טכנית וואלה!

זה היה בחמישה בדצמבר. מאז חלפו תשעה ימי עבודה ועדיין לא קיבלתי תשובה. ביום ראשון (14/12, שישה ימי עבודה לאחר שליחת ההודעה המקורית) פניתי אליהם שוב בנוסח דומה. הפעם לא קיבלתי הודעת תשובה אוטומטית. היום שלחתי שוב וגם הפעם לא קיבלתי תשובה אוטומטית.

אני מתעד את מהלך האירועים כאן כדי לנסות ולהשיג את תשומת הלב של וואלה! ולעדכן בהתפתחויות נוספות. מדובר בפירצה חמורה שמאפשרת לתוקף גישה ברמה גבוהה מאוד לחשבונות של משתמשי וואלה!. אני משאיר את הנושא מעורפל כמה שיותר כדי שגורמים זדוניים לא יעלו על הפירצה גם כן וישתמשו בה לרעה, אבל תאמינו לי - היא אלגנטית ומסוכנת.

כאמור, אעדכן כאן בהתפתחויות נוספות.

עדכון 18/12: יום למחרת פירסום ההודעה קיבלתי תשובה מהתמיכה הטכנית של וואלה! והעברתי אליהם את פרטי הפירצה.

FireStats icon Powered by FireStats