חור בישראבלוג

זהו, עצבנתם אותי….

הפעם עם proof of concept, בבלוג בדיקות האבטחה שלי. לכל אילו שטוענים שאני סתם מדבר.

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

שחר

התנצלות על "עוד דרך לתקוף את ישראבלוג"

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

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

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

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

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

אין לי זמן או כוח.

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

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

בפרט, יש מיקרים שבהם אני יכול להגיד לכן בוודאות שיש חור. המקרה הבולט ביותר הוא כאשר כותבים תגובות. אם תכתבו מילה בין כוכביות בתגובות (כדי שהמילה *תהיה* מודגשת), המילה תופיע בתגובות עצמם בצורה שונה (כדי שהמילה תהיה מודגשת). מה שחדי העין ישימו לב, אבל הוא שההחלפה בין הכוכביות לבין תגי ה-HTML קוראת לפני השליחה. אחר שלוחצים על “שליחה”, לרגע קל, רואים את הטקסט מתחלף (כדי שהמילה <b>תהיה</b> מודגשת). במילים אחרות, מתבצעת החלפה בצד הלקוח, והמידע נשלח כבר HTMLי לשרת. זוהי שגיאה נפוצה מספר 3. יש לי עדויות שאפשר לנצל את התופעה הזו כדי לשלוח תגובות מעוצבות “יתר על המידה”.

אז מה היה לנו פה:
1. מידע מעניין נשמר ב-cookies, כאשר גורמים שאי אפשר לסמוך עליהם יכולים לעדכן את האתר.
2. העדכון של האתר הוא בגישה המתירנית, וערוצי העדכון הם רבים (לכל הפחות תגובות, פוסטים, תבניות HTML, ואתמול מצאתי עוד אחד).
3. לפחות חלק מהאימות תקינות מתבצע בצד הלקוח ולא בצד השרת.

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

שחר

Bear