באג אבטחה קריטי באתר של מפלגת העבודה

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

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

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

אתר מפלגת העבודה - בדיקה אם אדם זכאי להצביע
אתר מפלגת העבודה – בדיקה אם אדם זכאי להצביע

מאוד פשוט, נכון? אבל בעבר טפסים כאלו היוו פרצה משמעותית. למה? האקר יכול לבנות סקריפט פשוט ש׳שולח׳ טופס עם מספר תעודת הזהות 000000001, אם אין תוצאה – מעולה. אם יש תוצאה, הוא רושם אותה וממשיך הלאה אל 000000002 וכך הלאה עד 99999999. כל התוצאות החיוביות נרשמות עם השם שמתקבל מהן. אבל זה היה בעבר, בעשורים האחרונים נוצרו מנגנונים על מנת על מנת למנוע מצב שבו האקר משדר קריאות רבות לשרת. המנגנון העיקרי נקרא CAPTCHA – סוג של ראשי תבות של המשפט: Completely Automated Public Turing test to tell Computers and Humans Apart או בעברית – מבחן המבדיל בין אדם למכונה. בגדול אנו מציגים שאלה שרק משתמש יכול לענות עליה. כמו למשל לנחש מה הן האותיות שיש בתמונה כלשהי. כמובן שההאקרים ניסו לעקוף גם את זה. ניתן לסרוק את התמונות באמצעות תוכנה פשוטה ולתת תשובות. זו הסיבה שהתמונות קצת מעוותות באופן כזה שמקשה על תוכנות אוטומטיות לסרוק אותן.

CAPTCHA - דוגמה
מתוך ויקי-קומנס.

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

מתוך גוגל.קום

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

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

curl 'https://www.haavoda.com/Member/checkTZUpdateInfo' --data 'tz=000000000'

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

מה שהתוקף יכול לעשות בקלות זה להריץ את השאילתה הזו מ 000000001 עד 999999999 ולתעד כל תשובה לא ריקה. כך לאחר שעה הוא יכול לקבל מאגר מלא של כל החברים במפלגת העבודה: השם שלהם, תעודת הזהות שלהם והמין שלהם. אבל תוקפים מעט יותר מתוחכמים, כפי שתומר מוסיף, לא חייבים לרוץ על 10⁹ אפשרויות. אם לתוקף יש מידע על מבנה המספר (מידע על חישוב ספרת הביקורת קיים כמובן בוויקיפדיה) זה מצטמצם ל־10⁸, כאשר הספרה האחרונה תמיד מחושבת.

איך מגינים? פשוט מאוד – חיבור ה-reCAPTCHA אל צד השרת. יש תיעוד מפורט מאוד של גוגל איך עושים את זה וזה ניתן לביצוע בעבודה של שעה. זה באג טריוויאלי שאסור לו להתקיים בשנת 2017.

פוסטים נוספים שכדאי לקרוא

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

גלילה לראש העמוד