פרצת אבטחה משמעותית באתר זאפ חושפת את כל המידע על המשתמשים

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

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

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

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

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

לעולם לא נחלוק את הפרטים שלך
לעולם לא נחלוק את הפרטים שלך

למשל, כך אני מוריד את הפרטים שלי:

פרטים אישיים שלי באתר זאפ
פרטים אישיים שלי באתר זאפ
פרטים של לקוח אחר
פרטים של לקוח אחר

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

פרטים טכניים

לזאפ יש API שעובד עם SOAP – פרוטוקול מיושן (ראשי התבות הן Simple Object Access Protocol) שבימים שלפני הREST היה פופולרי. אבל באופן עקרוני, למי שלא יודע מדובר ב-API – אנחנו שולחים אליו מידע שעטוף ב-XML מוזר ומקבלים את התוצאות ב-XML חזרה. כמו כל API הוא זמין ברשת. על מנת שלא יהיה אפשר להשתמש ב-API לאנשים לא מורשים, מתבצעת אותנטיקציה. עד כאן טוב ויפה ונחמד. אבל הבעיה ב-API של זאפ הוא שהאפליקציה משתמשת בסיסמה ובשם משתמש אחידים לכולם על מנת לגשת לכל המשאבים. מה זה אומר? זה אומר שניתן להשתמש באותו שם משתמש ואותה סיסמה על מנת לגשת לכל המשתמשים. הסיסמה שלי ושם המשתמש שלי יביאו לי רק את המידע שאני אמור לראות. את הפרטים האישיים שלי, לא הפרטים האישיים של משתמש אחר.

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

כדי להוסיף חטא על פשע, כל שירותי ה-SOAP של זאפ היו חשופים בממשק וובי נאה, ממש לפי התקן – כך שהתוקף לא היה צריך להתאמץ ואפילו למפות את הבקשות. רק להכנס ל-URL ולבחון אותן או לקחת את ה-URL לקליינט של SOAP כמו SOAPUI. וזה בדיוק מה שעשיתי.

שירותי ה-SOAP  של זאפ
שירותי ה-SOAP של זאפ

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

שחזור בקשת מידע על גבי הדפדפן
שחזור בקשת מידע על גבי הדפדפן

אחרי שמבינים שמדובר ב-SOAP, אפשר להגיע ל-WSDL ולהתחיל לשגר בקשות. בקשות ה-SOAP תמיד יוצאות עם שלושה פרמטרים:

      <sso:ServiceAuthHeader>
         <!--Optional:-->
         <sso:Username>uSERXXXXnAME</sso:Username>
         <!--Optional:-->
         <sso:Password>pA$$WORDXXXX</sso:Password>
      </sso:ServiceAuthHeader>

וכן עם:

<sso:Key>3SsoKey2&amp;XXXX</sso:Key>

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

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

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

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

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

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

ספריות ומודולים

מציאת PII באמצעות למידת מכונה

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

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