כשדיווחתי לוואלה! על פירצת האבטחה בשירות הדואר שלהם, תיארתי גם בעיה נוספת, פשוטה יותר, שמאפשרת לכל מי שמשיג גישה לחשבון בוואלה! לראות את הסיסמה של בעל החשבון.
איך זה עובד? קלי קלות:
- מקליקים על "אפשרויות", מתחת ללוגו של "וואלה! דואר"
- ממשיכים ל "עריכת פרטי חשבון משתמש"
- הגענו לדף עריכת הפרטים. שימו לב ששדות הסיסמה (וואלה! אוהבים את התעתיק הארמי, אני לא) מכילים טקסט כלשהו, אבל מכיוון שמדובר בשדה מסוג סיסמה, אנחנו לא יכולים לקרוא אותו. נכשלנו.
- בעצם, אם נסתכל על קוד ה-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, אם רוצים. אני מעדיף את זה.
** אני חושב שאני יודע למה הם עושים את זה. הטופס מעדכן את כל השדות תמיד, ולכן הם דאגו שאם לא תרצה לשנות את הסיסמה אלא רק את תאריך הלידה שלך, הסיסמה הנכונה תישלח בחזרה לעדכון. זו לא סיבה טובה לעשות את זה.
*** יכול להיות שהם משתמשים בהצפנה סימטרית. לא הייתי בונה על זה.





