דף שנפתח בדפדפן של מישהו שמחובר ל-GitLab יכול לגרום למערכת לבצע פעולה, בלי שאותו אדם ביקש אותה ובלי שהתוקף עצמו מזוהה מול המערכת. זו החולשה ש-GitLab סגרה בארבע גרסאות במקביל. הציון הוא 7.1 מתוך 10, והפגיעה המרכזית היא בשלמות המידע.
מה החולשה?
בבקשות רשת יש חלוקת עבודה מוסכמת. בקשה מסוג GET אמורה רק להביא מידע, ובקשה שמשנה משהו נשלחת בדרך אחרת ונבדקת בהתאם. ההפרדה הזאת אינה קוסמטית, היא מה שמאפשר למערכת להתייחס בחשדנות לפעולות שמשנות מצב.
הפניות ל-GitLab עוברות בין היתר דרך GraphQL, ממשק שבו הפונה מנסח בעצמו מה הוא רוצה. הממשק תומך גם באיגוד של כמה שאילתות לתוך בקשה אחת, וזה המקום שבו הבדיקה כשלה: לפי GitLab, אימות לקוי של הבקשה בזרימה הזאת אפשר להעביר גם פעולות שמשנות מידע דרך בקשת GET רגילה.
וכאן נכנס לתמונה הדפדפן. פעולה שאפשר לבצע בבקשת GET אפשר להסתיר בקישור או ברכיב בתוך דף, וכל מי שמגיע לדף הזה בזמן שהוא מחובר למערכת מבצע אותה בעצמו בלי לדעת. לתקיפה הזאת קוראים CSRF, וזה גם הסיווג הרשמי של החולשה. הווקטור מציין שנדרשת פעולה של משתמש, וזה בדיוק החלק הזה.
מי מושפע?
התקנות GitLab CE ו-EE בענף 18.2 עד 18.11.11, בענף 19.0 עד 19.0.8, בענף 19.1 עד 19.1.6 ובענף 19.2 עד 19.2.4, כשהגרסה המתקנת בכל ענף כבר אינה כלולה בטווח.
הסיכון אינו מתחלק שווה בשווה בין המשתמשים. הפעולה שתתבצע היא הפעולה שאותו אדם רשאי לבצע, ולכן מי שמחזיק הרשאות רחבות בהתקנה הוא היעד המשתלם. תוקף שמכוון לאדם הנכון מקבל את ההרשאות שלו לרגע אחד.
בארץ GitLab מותקן בעיקר על שרתים של חברות שמעדיפות שהקוד שלהן לא יישב אצל ספק חיצוני. התקנות כאלה לרוב אינן פתוחות לאינטרנט, וזה מקטין את החשיפה בלי לבטל אותה. התוקף אינו צריך להגיע לשרת בעצמו. מספיק שיגיע לעובד שמחובר אליו.
האם מנוצלת בפועל?
אין ידיעה על ניצול, והחולשה אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, הרשימה שמרכזת חולשות שידוע כי תוקפים מנצלים אותן.
מה שכן אפשר לקרוא מהרשומה הוא איך היא התגלתה. אחד המקורות הוא דיווח שנפתח ב-HackerOne, ולצדו כרטיס העבודה הפומבי אצל GitLab. זה מסלול של חוקר שמצא ודיווח, ולא של תקרית שנחקרה בדיעבד. GitLab גם מנסחת את התיאור בזהירות ומדברת על מה שיכול היה לקרות בתנאים מסוימים.
מה עושים?
התיקון יצא בארבעה ענפים במקביל, ולכן מה שרלוונטי לכם הוא הענף שאתם מריצים בפועל: 18.11.11 למי שנמצא על 18, ו-19.0.8, 19.1.6 או 19.2.4 למי שנמצא על 19, לפי הענף המשני. הפירוט מרוכז בהודעת שחרור התיקון.
עד שהעדכון מותקן, ההגנה המעשית נמצאת בצד המשתמש. תקיפה כזאת מחייבת שמישהו מחובר יגיע לדף של התוקף, ולכן הפרדה בין הדפדפן שבו אתם מחוברים למערכת לבין גלישה כללית מקטינה את הסיכוי. יציאה מהחשבון בסוף יום עבודה עושה את אותו דבר בלי שום מאמץ.
אחרי העדכון עברו על מה שהשתנה בהתקנה בתקופה האחרונה: פרויקטים שנמחקו, הרשאות שהשתנו, הגדרות שאיש אינו זוכר ששינה. החולשה פוגעת בשלמות המידע ולא בסודיות שלו, ולכן העקבות שהיא משאירה הן שינויים ולא דליפות.