קצת הערות על הפריצה לישראבלוג

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

נתחיל מהשורה התחתונה: יהיו עוד חורים כאלו!

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

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

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

איך אפשר להתגונן?

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

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

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

האם יריב יכול היה לעשות משהו כדי למנוע את הפריצה?

התשובה החד משמעית שלי היא “כן”. יש פה רשלנות של יריב.

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

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

אתמול התגלה לנו שהתוקף מצא וקטור שלישי.

הסיכויים שקיים גם רביעי וחמישי הם כמעט וודאיים.

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

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

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

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

האם זה אומר שזו לא אשמתו של הפורץ?

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

האם יש משהו לעשות נגד השנות מקרים כאלו?

כן.

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

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

ל-cookies יש אפשרות שהם יהיו תקפים רק באזור מסויים בתוך האתר. אם יריב יגדיר את ה-cookies של ה-session כך שהם יהיו מוגדרים רק באיזור של העריכה, ולא באיזור של קריאת הבלוגים, קוד javascript שרץ באזור הקריאה לא יוכל לגנוב אותם. זה שינוי שלא משנה את חווית השימוש באתר, והוא יכול להכניס אותו יחסית בקלות.

בואו נקווה שהוא גם יעשה את זה.

שחר

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

מאת

שחר שמש

מייסד–שותף וחבר ועד בתנועה לזכויות דיגיטליות מייסד שותף בעמותת „המקור”. פעיל קוד פתוח. מפתח שפת התכנות Practical

14 תגובות בנושא “קצת הערות על הפריצה לישראבלוג”

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

    1. אני רואה שתי בעיות עם ההצעה הזו שלך.

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

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

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

      שחר

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

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

          באיזו קבוצה עבדת?

          שחר

  2. שתי הערות שחר:
    1. הלינק מצד שמאל למאמר "הארץ" על תחרות האקינג לא מוביל לכלום.
    2. עדיף לך לשנות למצב שהקישורים יפתחו בדף נפרד ולא על חשבון הבלוג שלך.

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

      בכל מקרה, תודה על ההערות.

      שחר

  3. הגנה כנגד HTML וJAVASCRIPT INJECTION הוא הדבר הראשון שמלמדים באבטחת אתרים, חבל שיריב פספס את זה.
    בנוגע להתקפת הCOOKIES האחרונה, נו טוב – מה אפשר להגיד – אני תמיד הייתי נגד קוקיס, משתמש בהם רק באתרים שאני יודע שהסיסמא שם או המידע שנמצא באתר זה לא ממש עקרוניים לי.
    כיום, כשאפשר להשתמש בPASSWORD MANAGER המוגן בסיסמא בעצמו, אני לא חושב שיש צורך עוד בחולה הרעה הזו.

    1. אני ממליץ בחום לשים דברים בפרופורציה.

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

      לגבי cookies – אפילו אם למשתמשים שלך יש password manager מצויין (ואני צריך להזכיר לך שרובם משתמשים ב-IE, שלא מצפין את הססמאות שלו), עדיין אתה צריך לשמור על הזכרון של מי הם בין הדפים השונים של האתר. אתה יכול לעשות את זה באמצעות session cookies ואתה יכול לעשות את זה באמצעות שינוי ה-URL, וכך או כך יש לך פיסת מידע שקל ל-Javascript מוזרק לגנוב ולעשות את אותה ההתקפה שקרתה פה אתמול. במילים אחרות – לא פתרת את הבעיה.

      שחר

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

        בכל אופן, כל עוד ימשיכו להשתמש בפרוטוקול ללא תמיכה בSESSION (ובפרט HTTP), לא יהיה ניתן לעקוף את הבעיה ביתר קלות. אם נעקם קצת את החוקים, פתרון אחד הוא לעבור לSSL הדדי (כן, מצריך סרטיפיקטים לכולם. עקרונית אפשר להגדיר את אתר הבית כSA לגבי הסרטיפקטים שהוא מחלק למשתמשיו לצורך התקשרות). במקרה כזה, המשתמש יגזור מפתחות להצפנה/פענוח/אימות מהשם_משתמש+סיסמא שלו באתר, וכך אפשר יהיה לאבטח את התקשורת. כך שגם אם מישהו ישתלט על הקוקי הוא לא יוכל לבצע פעולות כלשהן באתר אם אינו מחזיק במפתח הפרטי של המשתמש המקורי. אני לא אומר שזה מעשי לחלוטין, אבל זה כיוון אחד שאפשר ללכת אליו.

סגור לתגובות.