מה שיוצא מהחולשה הזאת אינו שליטה על השרת אלא פרטי אימות. לפי GitLab, משתמש מחובר שיש לו גישה לעוזר Duo Chat היה יכול, בתנאים מסוימים, לגרום לשרת למסור לו את הגדרות רכיב החיפוש המתקדם ואת פרטי האימות ששמורים בהן. הציון הוא 9.9 מתוך 10, והחולשה נוגעת ל-GitLab EE, הגרסה המסחרית.

מה החולשה?

כשתוכנה מקבלת נתונים מבחוץ, היא צריכה להפוך אותם ממחרוזת טקסט לאובייקט פנימי שהיא יודעת לעבוד איתו. התהליך הזה אמור לעבור דרך שכבה שמחליטה מה מותר לבנות ומה לא. כשהשכבה הזאת נעקפת, הצד ששלח את הנתונים הוא זה שקובע איזה אובייקט פנימי יורכב או יישלף, והתוכנה מצייתת. לכשל הזה קוראים deserialization של נתונים לא מהימנים, וברשומה הוא מסווג כ-CWE-502.

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

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

מי מושפע?

הטווחים שהרשומה מונה הם כל הגרסאות מ-18.3 ועד 19.1.8, ענף 19.2 עד 19.2.6 וענף 19.3 עד 19.3.2, בכל המקרים לא כולל את גרסת התיקון. זה נוגע ל-GitLab EE בלבד, ולא להתקנות של הגרסה החופשית.

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

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

האם מנוצלת בפועל?

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

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

מה עושים?

1. בדקו אם אתם מריצים GitLab EE ובאיזו גרסה. מספר הגרסה מופיע באזור הניהול של ההתקנה. התקנות של הגרסה החופשית אינן בטווח הזה.
2. עדכנו לגרסה שסוגרת את הענף שלכם, 19.1.8, 19.2.6 או 19.3.2 ומעלה.
3. החליפו את פרטי האימות של רכיב החיפוש המתקדם. זה הצעד שמבדיל בין סגירת הדלת לבין טיפול בשאלה מה כבר עבר דרכה, ובחולשה שכל תכליתה חשיפת פרטי אימות הוא אינו אופציונלי.
4. בדקו מי בפועל מקבל גישה ל-Duo Chat אצלכם. אם היכולת פתוחה כברירת מחדל לכל המשתמשים ואינה בשימוש רחב, צמצום ההרשאה הזאת מקטין את קבוצת מי שיכול לנסות.
5. מי שעובד מול השירות המנוהל של GitLab ולא מול התקנה משלו תלוי בעדכון שהחברה מבצעת אצלה, ואינו נדרש לעדכן דבר בעצמו.