Firefox URL Spoofing
במהלך אתמול, חוקר האבטחה Michal Zalewski פרסם בבלוג שלו, פוסט מעניין המכיל קוד (מעניין גם הוא) פשוט להפליא שיכול
להקל מאוד על תוקפים רבים לצאת לדייג, שימו לב ל-PoC הבא (הוצג במקור ע"י: Michal Zalewski):
במידה וקורבן יכנס לעמוד המכיל את הקוד בסיגנון הנ"ל, יפתח לו חלון חדש, ובשורת הכתובת (ה-"Address Bar") של אותו חלון,
הדפדפן יציג את הכתובת "1.2.3.4" אך לא את תוכנה, אלה את התוכן שהזריק התוקף ("!Fake content").
[הקוד פועל בדפדפני Firefox עד 3.6.6 לא כולל]
לא כל כך קשה להבין איך הקוד פועל, מה שמעניין הוא אופן ההתנהגות של הדפדפנים שאכן מאפשרים לדבר הזה להתרחש, ע"י
קריאה של הקוד ניתן להבין בדיוק מה הבעיה פה: מנגנון הטעינה של רב דפדפני האינטרנט (Safari לא חשוף), בעת טעינת קישור
בעמוד הקיים, יחליף את הכתובת המוצגת בשורת הכתובת רק לאחר שהוא לסיים לבצע טעינה של כלל העמוד המבוקש, אך בעת
טעינה של עמוד חדש ("_blank") תוכנס כתובת העמוד המבוקש לפני שיטען התוכן. הרעיון המגניב פה הוא שבכל שלב טעינת
העמוד (כל עוד הוא לא סיים להטען)- מנגנון ה-SOP (להרחבה: SOP או במאמרים: XSHM ו-DNS Rebinding שפורסמו בגליונות
מה שאומר שכל עוד לא נטען תוכן העמוד, לדוגמה, ע"י הפנייה לעמוד שיחזיר HTTP Status Code מספר 204 (הפנייה לעמוד קיים,
אך רק מתוכן), או כמו שאפשר לראות בקוד- ע"י קריאה ל:
window.stop()
לפני טעינת תוכן העמוד לשם עצירת הפעולה, ניתן יהיה לשלוט בתוכן שיוצג על גביו, בעזרת שימוש במאפיין:
window.document.body.innerHTML
לפי דעתו של Zalewski, לא מוצג ה-"about:blank" בשורת הכתובת במהלך טעינת העמוד מפני שכך הפעולה "ידידותית יותר"
ומספקת "חווית גלישה גבוהה יותר".
חווית גלישה גבוהה יותר או לא- מדובר בחולשה מוכרת במנגנון טעינת התוכן, ולכן הדבר תוקן בגרסה חדשה של Firefox.
פקחו עיניים! :)