הפריצה והגניבה של כרטיסי האשראי: אנליזה שלי

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

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

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

נתחיל בבסיס (המאמר הולך להיות עמוס במונחים טכנולוגיים אך אנסה לפשט כמה שאפשר): בעקרון מערכת Linux רגילה שפותחים משתמש חדש (שהוא אינו עם הרשאות root ואינו בעל הרשאות sudo – הרשאות המאפשרות בעצם לשנות את כל המערכת), אינו יכול לשנות מאומה זולת התיקיה שלו. אם לדוגמא יש לו הרשאה של גישה לבסיס נתונים, הוא יכול ליצור בסיס נתונים, לתת הרשאות בתוכו, ליצור משתמשים נוספים ובסיסי נתונים נוספים (לפי כל מיני מגבלות שמנהל השרת קובע). המשתמש יכול להתפרע עם ההרשאות – אבל רק עד הרמה של המשתמש שלו, כלומר אין לו אפשרות "לטפס" עם ההרשאות "כלפי מעלה" לכיוון הרשאות סיסטם.

כל זה כמובן מדובר על מערכת Linux שמותקנת ומעודכנת עם הטלאים האחרונים (yum update או apt-get update תלוי בהפצה) ועם הגדרות הקשחה נוספות. אותם בוני אתרים טענו שיש להם תקן PCI (אם הבנתי נכון) כך שאם באמת היה להם תקן PCI, מי שמימש אותו היה צריך להקשיח את המערכת.

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

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

כלומר כדי להיכנס לקבצים של חשבון אחר (בכל זאת, הפורץ צריך לדעת מה שם ה-DB, סיסמא וכו'), צריך לעשות אסקלציה של הרשאות.

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

במילים אחרות: אם השרת היה באמת מוקשח עם עדכונים אחרונים, כל זה לא היה קורה.

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

האם ניתן לעשות משהו כדי למנוע? כן, לא מעט:

  • עדכונים, כל הזמן לעדכן את השרתים, גם גרסאות ישנות של לינוקס עדיין מוציאים להם עדכונים
  • אם יש לכם קוד שמטפל בכרטיסי אשראי, מומלץ להצפין את הקוד ולשמור קוד מקור במחשב אחר לחלוטין. ניתן להצפין קוד PHP עם ION Cube כך שגם אם מישהו פורץ, הוא לא יוכל להסתכל בקוד
  • להצפין את ה-DB. אפשר להשתמש בדרכים כמו שמופיעים כאן לדוגמא
  • שילוב של 2 הסעיפים: ההצפנה מבוצעת בקוד והתוצר המוצפן מוכנס ל-DB כאשר הקוד עצמו מוגן עם ION Cube

ויש עוד דרכים ושיטות אחרות שמומחי אבטחה יכולים להמליץ עליהן.

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

Comments

comments

8 תגובות בנושא “הפריצה והגניבה של כרטיסי האשראי: אנליזה שלי

  1. אתה יודע איך אומרים אצלנו – עד שלפחות שני אנשים או הבן של ראש העיר לא נדרסו, לא יתקנו את הצומת…

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

    • ומה ההגיון בלהקשיח מערכת ליום ההסמכה, לבדוק שהכל עובדב-סביבת טסט ואחר כך ב-Prod, ואז להחזיר הכל אחורה?

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

      • כנראה שאינך מכיר כמה אנשי סיסטם שמחפשים לעצמם את החיים קלים ועושים הכל כ-Root, כדי שלא יהיה כאב ראש יותר מדי על הרשאות (צעד דבילי, אבל ראיתי שטויות יותר גדולות)

  3. אני בספק אם האתר מריץ לינוקס. הקבצים שנגנבו הם בסיסי נתנונים של חלונות (mdb).

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

  5. As someone who worked on getting our network pci compliant, as far as I'm aware, you can't be pci compliant on shared   hosts (it just can't met so
    E of the pci requirements) .

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