Shoplift זהו כינוי עבור פרצת אבטחת במערכת ה-E-Commerce הפופולרית Magento.
הפרצה נמצאה ע"י חוקרי אבטחת המידע של חברת CheckPoint ב-21 לאפריל 2014, ההערכה היא שפרצה זו השפיעה על 140,000 (!!!) אתרי Magento ברחבי העולם.
מהות הפריצה – הסבר טכני
במערכת Magento ישנו "מבנה" קבוע לכל בקשה המסייע למערכת להבין כיצד לנתב / לנהל את הבקשה:
GET /index.php/[MODULE_NAME]/[CONTROLLER_NAME]/[ACTION_NAME] HTTP/1.1
כלומר, כאשר אתם ניגשים לכתובת כלשהי באתר ה-Magento שלכם, המערכת בודקת אם [MODULE_NAME] קיים > במידה וכן המערכת מנסה לפנות לפנות לפונקציה בשם Mage_[MODULE_NAME]_[CONTROLLER_NAME]Controller > בסופו של תהליך, הפונקצי מחליפה את הקו התחתון ("_") עם סלאש ("/") ומוסיפה סיומת של php > במידה והקובץ הקיים, המערכת מבצעת לו Include בקוד.
לדוגמא, הבקשה הבא:
GET /index.php/downloadable/file/ HTTP/1.1
תטען את הקובץ הבא:
Mage_Downloadable_FileController
עד כאן – תקין, הבעיה מתחילה כאשר משתמש ה-administrator מנסה לגשת, במקרה כזה, המערכת תוסיף את הביטוי "Adminhtml" לכתובת:
GET /index.php/admin/downloadable/file/ HTTP/1.1
תעביר את הבקשה לכתובת:
Mage_Downloadable_Adminhtml_Downloadable_FileController
ולכן, מעבר ל-LFI (קיצור ל-Local File Inclusion) המבוצע כאן, הפורץ יכול לעקוף את הזדהות ה-admin אם נשלח את הבקשה הבאה:
GET /index.php/downloadable/Adminhtml_Downloadable_File/ HTTP/1.1
במילים אחרות, החולשה של Magento במקרה זה היא שהמערכת מנסה לוודא את ה-session של המשתמש admin רק באמצעות הפניה אל "/admin/".
איך אני יכול לדעת אם האתר שלי נפרץ / פריץ?
- בדיקה אוטומטית: ניתן לגלוש לאתר הבא ולבצע בדיקה שתדווח האם האתר פריץ: https://shoplift.byte.nl
- בדיקה ידנית: אם יש לכם גישה לביצוע CURL, אותו אתר מאפשר לנו לבצע את הבדיקה גם באופן ידני:
curl https://shoplift.byte.nl/scan/<myshop>/<myadminname>.json
גיליתי שהאתר נפרץ, מה עושים?
ישנן מספר פעולות שסביר להניח שהתוקף ביצע במידה ואתרך נפרץ.
- חשבונות המשתמש וסיסמאות מוצפנות: אלו וודאי נמצאות בידיו של הפורץ, ההמלצה הטובה ביותר היא ראשית לידע את הלקוחות בדבר הפריצה.
זה אולי "לא טוב שיווקית", אבל הלקוחות בהחלט יעריכו זאת, במיוחד כאשר ייתכן שהם משתמשים באותן הסיסמאות במספר אתרים באינטרנט.
הצד החיובי בסיפור – הסיסמאות מוצפנות, הצד השלילי בסיפור – Magento משתמשים בהצפנה חלשה יחסית (ולכן, בעל עניין יוכל לפרוץ אותן בזמן קצר יחסית). - Backdoor: סביר להניח שהתוקף השאיר "דלת אחורית" בשרת, חשוב למצוא (בסיוע חברת האחסון) אם אחת כזו קיימת, כך שהתוקף לא יוכל לחזור לאחר מכן.
חברות אחסון טובות נוהגות ליישם מספר מנגנונים למניעה מוקדמת (כמו סריקת קבצים המועלים באמצעות ה-web או ה-FTP) וכן מנגנונים לאיתור בדיעבד (סריקת הקבצים שהועלו ביום X, בדיקת הקבצים שהועלו אל מול פרמטרים המצביעים על פריצה ועוד).
בדיקות אלו מיושמות באופן תדיר ב-SPD Hosting, אם בחרתם שלא להתאחסן אצלנו – וודאו מול הספק הנוכחי שהוא אכן מיישם אפשרויות אלו. - בטל את אפשרות ה-Checkout: כל עוד לא תוקן הבאג והחשד מ-2 הסעיפים מעלה לא תוקן, בטל את אפשרות הרכישה באתר – אין טעם להגדיל את מעגל הנפגעים מהפריצה.
נכון, מדובר בפגיעה כלכלית.. אך עדיף שלא להרחיב את הפגיעה (ומעבר לכך, תיקון הפרצה יותר חשוב מהכול).
POC
החוקרים פרסמו גם סרטון עם POC (או "Proof of concept") המתאר את אופן ניצול הפרצה:
איך מתקנים את הפרצה?
לשמחתנו צוות הפיתוח של Magento הגיב מהר יחסית ושחרר Patch לחסימת הפרצה במערכת.
יש לגשת לעמוד ההורדות של Magento ולחפש את התיקון עבור "SUPEE-5344" (התיקון זמין עבור מספר גרסאות Magento, יש לוודא כי הנכם בוחרים את הגרסה הנכונה).




השאר תגובה