בנגן ה-HTML5 של Kaltura, הרכיב שארגונים מטמיעים באתר שלהם כדי להריץ בו וידאו, נמצאה חולשה שמאפשרת לתוקף בלי שום הרשאה לכתוב קבצים על השרת שמארח את הנגן ולהריץ עליו קוד. הציון שלה 9.8 מתוך 10. מי שנוגע בזה אינו הגולש שצופה בסרטון אלא הארגון שמפעיל את הנגן אצלו.
מה החולשה?
בלב הבעיה עומד קובץ בשם mwEmbedLoader.php. הוא מקבל מהפונה כתובת שרת, בפרמטר ServiceUrl, ניגש אליה ולוקח את מה שחוזר משם. עד כאן זה נשמע כמו כל בקשה אחרת. מה שקורה אחר כך הוא הבעיה: התשובה שחוזרת מפוענחת בחזרה לאובייקט בזיכרון בעזרת הפונקציה unserialize. הפעולה הזאת מניחה שמי שכתב את הנתון הוא צד אמין, ואם התוקף הוא זה שקבע לאן לפנות, הוא גם זה שכתב את מה שחוזר.
החלק השני של השרשרת הוא איפה הנתונים נשמרים. השדות של אותו אובייקט נכתבים לקובץ מטמון, והנתיב שלו נבנה מתוך מזהה שהתוקף שולט בו, uiconf_id, בלי בדיקה שהתוצאה נשארת בתוך התיקייה שיועדה לכך. שילוב של שני החלקים נותן לתוקף לכתוב קובץ שהוא בחר במקום שהוא בחר, כולל מקומות שהשרת מגיש מהם תוכן לאינטרנט. קובץ שנכתב שם הוא כבר קוד שרץ, בהרשאות של תהליך שרת האינטרנט.
שימו לב מה חסר בתיאור הזה: שם משתמש, סיסמה, הרשאה כלשהי. הכול נעשה מבחוץ.
מי מושפע?
לפי הרשומה, גרסאות html5lib v2.45 ו-v2.103 ומטה, וכן גרסאות 2.x אחרות שחושפות את אותו endpoint. החולשה יושבת בצד השרת של הנגן, ולכן החשוף הוא מי שמריץ אצלו את הרכיב ולא מי שצופה בווידאו.
בישראל הנקודה הזאת אינה תיאורטית. Kaltura היא חברה ישראלית, והרכיב הזה יושב בדרך כלל אצל ארגונים שמגישים וידאו בעצמם ולא אצל גולשים פרטיים. אם אתם לא יודעים אם הוא רץ אצלכם, שאלו את מי שמתחזק לכם את השרת.
האם מנוצלת בפועל?
אין כרגע דיווח פומבי על ניצול של החולשה בשטח, והיא אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, שמרכז חולשות שיש עדות לשימוש בהן על ידי תוקפים.
מה שכן, החולשה פורסמה דרך הודעת CERT/CC, ערוץ שנועד להתריע ציבורית, והפרטים הטכניים גלויים לכל מי שקורא אותה. מי שמריץ את הרכיב לא כדאי שיסמוך על היעדר דיווח נכון להיום.
מה עושים?
ראשית בררו אם הרכיב בכלל רץ אצלכם. חפשו בשורש האתר תיקייה בשם mwEmbed ובתוכה את הקובץ mwEmbedLoader.php. אם הוא קיים, הבדיקה הבאה היא בלוגים של שרת האינטרנט: בקשות שמכילות את הפרמטר ServiceUrl הן מה שמעניין כאן, במיוחד כאלה שמצביעות על כתובת חיצונית.
שנית, אם אין לכם צורך אמיתי לחשוף את הקובץ הזה לאינטרנט הפתוח, חסמו אליו גישה מבחוץ. אפשר לעשות את זה בשרת האינטרנט עצמו או בשכבת ההגנה שלפניו, וזו הפעולה שמקטינה את החשיפה מיידית גם בלי תיקון מותקן.
שלישית, הרשומה ב-NVD אינה מציינת גרסה מתוקנת. את הסטטוס העדכני והנחיות היצרן כדאי לקרוא בהודעה של CERT/CC. אם אתם על גרסת html5lib מסדרת 2.x, הניחו שאתם בטווח עד שיוכח אחרת.