GitLab CVE-2026-97229: ‏CISA מסווגת אותה כמנוצלת, ו-Alpine Linux מראה שעדכון לא תמיד מספיק

‏CISA הוסיפה את CVE-2026-97229, חולשה ב-GitLab בדירוג CVSS 10.0, לקטלוג החולשות המנוצלות. ‏Alpine Linux מדווחת על ניסיון תקיפה נגד השרת שלה, שנותר פגיע גם לאחר עדכון, משום שהתיקון תלוי גם בגרסת Ruby שבשימוש.

מה קרה

ב-29 באוקטובר 2026 הוסיפה CISA את CVE-2026-97229 לקטלוג החולשות המנוצלות: לסוכנויות הפדרליות בארה״ב יש עד 1 בנובמבר לפעול, ועליהן לבצע בדיקה פורנזית. ‏GitLab מדרגת את החולשה כקריטית, עם ציון CVSS של 10.0: גלישת מספר שלם במהדר הביטויים הרגולריים של תצורת CI/CD מאפשרת, בתנאים מסוימים, למשתמש לא מאומת להריץ קוד בשרת. ‏GitLab תיקנה אותה ב-12 באוקטובר בגרסאות 19.4.2, ‏19.3.5 ו-19.2.8. ‏Alpine Linux מסרה ב-28 באוקטובר כי תוקף ניסה לנצל אותה נגד שרת ה-GitLab של הפרויקט ב-20 וב-21 באוקטובר.

מי מושפע וכיצד התוקפים חודרים

מושפעות מהדורות Community ו-Enterprise בניהול עצמי החל מ-19.2; ‏GitLab.com ו-Dedicated כבר תוקנו. הבאג נמצא ב-Onigmo, מנוע הביטויים הרגולריים המובנה ב-Ruby, והתיקון של GitLab משנה את גרסת Ruby שנכללת בחבילות ובתמונות הרשמיות שלה. ‏Alpine התקינה תחילה בטעות את 19.3.4, ולאחר מכן את 19.3.6 בתמונה המבוססת על Ruby רגיל, שלא כללה את התיקון. בעזרת חשבון חדש ותצורות CI זדוניות גרם התוקף לקריסת תהליכי GitLab שמונה פעמים. ‏Alpine לא מצאה עדות להרצת קוד, אך לא יכלה לשלול זאת, ולכן בנתה את השרת מחדש, אתחלה את כל הסיסמאות והחליפה את המפתחות הסודיים של GitLab. לדבריה, הגרסאות והחבילות שלה נבדקו ולא שונו, ומפתחות החתימה מעולם לא נשמרו בשרת זה.

מה לעשות עכשיו

  1. בדקו את הגרסה באמצעות sudo gitlab-rake gitlab:env:info.
  2. עדכנו לתיקון האחרון של הענף שלכם: 19.5.3, ‏19.4.5, ‏19.3.7 או 19.2.10.
  3. אם אתם בונים את GitLab בעצמכם (מקוד מקור או במכולה משלכם), בדקו את ruby -v: נדרשת גרסה 3.3.13, ‏3.4.12, ‏4.0.9 ומעלה. הורידו שוב את alpinelinux/gitlab:19.3.6 אם הורדתם אותה לפני 27 באוקטובר; תגיות ישנות יותר פגיעות.
  4. חפשו עקבות: הפעילו את שישה כללי הזיהוי ש-GitLab פרסמה ובדקו קריסות תהליכים, שגיאות 502, משימות CI שנכשלו וחשבונות שנרשמו לאחרונה. תוצאה נקייה אינה מוכיחה הרבה: לפי Alpine, ניצול מוצלח אינו משאיר קריסה או עקבות ביומני הווב.
  5. במקרה של ספק, בנו מחדש והחליפו מפתחות סודיים, סיסמאות, משתני CI/CD, אסימוני runners וסודות webhook. דרשו אישור מנהל לחשבונות חדשים.
  6. בדקו את שאר יישומי Ruby שלכם: קוד שמעביר קלט לא מהימן אל Regexp.new, ‏Regexp.union או אל תבנית משולבת זקוק ל-Ruby מתוקן. לפי צוות Ruby, לא Regexp.timeout ולא מגבלת אורך מספקים הגנה אמינה.

הדעה שלנו

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

מקורות

איך אנחנו בוחרים, מאמתים וכותבים את הניתוחים שלנו ←

האם השרת שלכם חשוף? הריצו בדיקה חינמית — מידע ציבורי בלבד, ללא חדירה:

בדיקת שרת בדיקת אתר

חוששים שהשרתים שלכם חשופים? הצוות שלנו בודק, מעדכן ומנטר תשתיות Linux וענן 24/7.

דברו עם מומחה שירותי ניהול השרתים שלנו ←