עוד חור בישראבלוג?

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

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

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

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

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

הסטטוס שלכם: לא ידוע

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

כמובן שסיפרתי ליריב על העובדה שדווקא כן ניתן לגשת לעוגיות. התגובה שלו היתה קצת מאכזבת:

I know, but instead of chasing cookie stealers, I made it impossible to use other people’s cookies.

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

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

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

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

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

כמו שכתבתי כבר בסיכום הפריצה, קצת קשה לי להאמין שהמערכת תשתפר .

בברכת יום נפלא,

שחר

Bear