השרת ביקש עדכון מהיצרן וקיבל אותו מהתוקף: חטיפת נתיבים הפנתה את מנגנון העדכונים של Virtualizor
שרת שמריץ את Virtualizor שאל את היצרן, כמו בכל יום, אם יש עדכון. התשובה חזרה מהכתובת הנכונה, בחיבור מוצפן ועם תעודה תקינה. היא פשוט לא הגיעה מהיצרן.
מה קרה
חברת Softaculous, שמפתחת את Virtualizor (לוח ניהול שספקי אחסון משתמשים בו כדי להקים ולנהל שרתים וירטואליים), פרסמה דיווח על אירוע בשני חלונות זמן: מ-28 באוגוסט בשעה 20:57 UTC עד 29 באוגוסט ב-08:50, ושוב מ-29 באוגוסט ב-20:57 עד 30 באוגוסט ב-06:10.
מה שקרה שם נשען על הדרך שבה האינטרנט מחליט לאן לשלוח תעבורה. רשתות מכריזות זו לזו "הכתובות האלה מגיעות דרכי", והשכנות מקבלות את ההכרזה כמעט בלי אימות, כך שמי שמכריז על טווח כתובות שאינו שלו יכול למשוך אליו תעבורה שיועדה למישהו אחר. לזה קוראים BGP hijacking. הפעם הטווח 162.55.80.0/24, חלק ממרחב הכתובות של Hetzner, הוכרז מ-AS62390 (NexonHost) והופץ הלאה דרך ספק המעבר AS6204 (Zet.net).
הפרט הלא נוח בדיווח הוא התעודות. כשגוף מבקש תעודת TLS, הרשות המנפיקה בודקת שליטה בדומיין בכך שהיא פונה אליו, והפנייה הזאת עברה גם היא בנתיב החטוף. כך יצא שהתוקף החזיק תעודות תקינות לדומיינים שאינם שלו, והמנעול בדפדפן, או השרת שבודק עדכונים, ראה בדיוק את מה שהוא מצפה לראות.
Softaculous כותבת שעדכון זדוני נמסר ל"מספר קטן של התקנות" ולא נקבה במספר. הסימן שהיא מבקשת לחפש הוא קובץ service בשם java-jre-update.service תחת /etc/systemd/system. במקביל הופנתה גם תעבורה לאזור הלקוחות של האתר, כך שמי שהתחבר או הזין שם פרטי תשלום באותן שעות ייתכן שעשה זאת מול שרת של התוקף.
למה זה חשוב לכם
Virtualizor הוא כלי של ספקי אחסון ולא של גולשים, ורוב הקוראים כאן לא יתקינו אותו לעולם. מה שכן, אתרים ישראליים רבים יושבים על שרתים שמנוהלים בלוחות מהסוג הזה, ופגיעה בשרשרת שמזינה אותם מגיעה בסוף גם אליהם.
הלקח הרחב נוגע לכל אחד: חיבור מוצפן מוכיח שהגעתם לכתובת שביקשתם, לא שהכתובת נמצאת בידיים הנכונות. מה שהיה עוצר כאן את המתקפה הוא חתימה קריפטוגרפית על חבילת העדכון עצמה, בדיקה של הקובץ במקום בדיקה של הרשת. Softaculous מודה שכזאת לא הייתה, ומבטיחה להוסיף אותה בהמשך.
מה עושים?
מפעילים Virtualizor: עדכנו לגרסה 3.2.9 שיצאה היום, ובדקו אם קיים אצלכם הקובץ /etc/systemd/system/java-jre-update.service.
בשרת שביקש עדכון באחד מחלונות הזמן האלה, עברו על מפתחות SSH, על חשבונות המשתמש ועל המשימות המתוזמנות, וחפשו כל דבר שלא אתם יצרתם.
מי שהתחבר לאזור הלקוחות של softaculous.com בשעות האלה: החליפו סיסמה, החליפו אותה גם בכל מקום אחר שבו השתמשתם באותה סיסמה, והנפיקו מחדש את מפתחות ה-API. הזנתם כרטיס אשראי? עברו על החיובים.
חטיפת נתיב נמדדת בשעות, וזה מספיק לגמרי. פעם ביום, כל שרת בעולם שואל אם יצא לו עדכון.
תגובות