כדי לנצל את החולשה הזאת נדרש חשבון ב-GitLab, גם חשבון עם הרשאות משתמש בסיסיות. מי שיש לו כזה יכול, לפי הרשומה, להגיע להרצת קוד על השרת שמריץ את GitLab עצמו. הציון הוא 9.9, והתיקון יצא בגרסאות 19.2.7, 19.3.3 ו-19.4.1.

מה החולשה?

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

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

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

מי מושפע?

GitLab CE ו-GitLab EE בגרסאות שמ-19.2.0 ועד 19.2.7, בגרסאות שמ-19.3.0 ועד 19.3.3, וגרסה 19.4.0.

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

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

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

המקור שהרשומה מפנה אליו לפרטי הדיווח הוא דוח בפלטפורמת HackerOne, כלומר הכשל הגיע מחוקר שדיווח עליו.

מה עושים?

עדכנו לגרסה 19.2.7, 19.3.3 או 19.4.1, לפי הענף שרץ אצלכם. הפרטים נמצאים בהודעת הגרסה של GitLab.

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

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

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