Git הוא הכלי שמפתחים מריצים עשרות פעמים ביום כדי למשוך קוד ולשלוח קוד. באג בדרך שבה הוא קורא וכותב את קובץ ההגדרות שלו אפשר למאגר שנבנה במיוחד להריץ קוד על המחשב של מי ששכפל אותו. הציון הוא 8 מתוך 10, והחולשה נמצאת בקטלוג המנוצלות בפועל של CISA מאז 25 באוגוסט 2025.
מה החולשה?
מקור הבעיה הוא תו אחד שאינו נראה על המסך. סוף שורה נכתב בשני תווים בחלק מהמערכות ובתו אחד באחרות, ואחד מהם, ה-carriage return, אינו מוצג כלום כשמסתכלים על הטקסט.
Git מתייחס אל התו הזה בשתי דרכים שאינן מתיישבות זו עם זו. כשהוא קורא ערך מקובץ ההגדרות הוא מקלף ממנו את תווי סוף השורה. כשהוא כותב ערך שמסתיים בתו כזה הוא אינו עוטף אותו במירכאות, ולכן התו אובד בקריאה הבאה. הערך שנכתב והערך שנקרא אינם אותו ערך.
מכאן הרשומה מתארת שרשרת. מאגר יכול להכיל submodule, כלומר מאגר אחר שמוטמע בתוכו, ולכל submodule יש נתיב שאליו הוא נפרס. אם הנתיב מסתיים בתו הנסתר, Git קורא נתיב שונה מזה שנרשם ופורס את ה-submodule למקום אחר מהמתוכנן.
השלב האחרון הוא מה שהופך את זה להרצת קוד. אם במאגר קיים קישור סימבולי שמפנה מהנתיב המשובש אל תיקיית ה-hooks של ה-submodule, ובתוך ה-submodule יושב סקריפט post-checkout, כלומר סקריפט שנועד לרוץ אחרי פריסה, הסקריפט הזה ירוץ. שכפול של מאגר הופך להרצת תוכנה שאיש לא התכוון להריץ.
הווקטור מוסיף שני תנאים מרסנים: מורכבות גבוהה, ומעורבות של משתמש. מישהו צריך לשכפל את המאגר.
מי מושפע?
הרשומה מונה שמונה ענפי גרסה, ולכל אחד גרסה סוגרת משלו: 2.43.7, 2.44.4, 2.45.4, 2.46.4, 2.47.3, 2.48.2, 2.49.1 ו-2.50.1. כל מה שמתחת לגרסה הסוגרת בענף שלו נמצא בטווח.
לצד Git עצמו מופיע ברשומה גם Xcode של Apple בגרסאות שלפני 26.0, כי סביבת הפיתוח הזאת מגיעה עם Git משלה. מופיעה שם גם Debian 11.
בישראל זה נוגע לכל מי שכותב קוד, ולא רק לאנשי אבטחה. שווה לשים לב גם לשרתי בנייה ולמכונות CI, שמריצות git clone באופן אוטומטי: הפעולה קורית שם בלי שאיש מסתכל עליה באותו רגע.
האם מנוצלת בפועל?
כן. ב-25 באוגוסט 2025 הוסיפה סוכנות הסייבר האמריקאית CISA את החולשה לקטלוג ה-KEV שלה, רשימת החולשות שידוע כי תוקפים מנצלים בפועל, עם מועד טיפול לגופים הפדרליים ב-15 בספטמבר 2025.
הרשומה ב-NVD פורסמה ב-8 ביולי 2025, כחודש וחצי קודם. בין המקורות שלה יש הודעה לרשימת התפוצה oss-security מאותו יום, והודעת עדכון של Debian מאוקטובר שאחריו.
מה עושים?
בדקו איזו גרסת Git מותקנת אצלכם. הפקודה git --version מדפיסה אותה, והשוו אותה למספר הסוגר בענף שלכם מתוך השמונה שברשומה.
עדכנו דרך מנהל החבילות של המערכת, או דרך ההתקנה הרשמית במערכות שבהן Git מותקן ידנית. מי שעובד על macOS עם Xcode צריך גם את Xcode 26.0 ומעלה, כי ה-Git שמגיע בתוכו הוא התקנה נפרדת משלו.
עד שהעדכון מותקן, הזהירות המעשית היא סביב שכפול. החולשה מחייבת שמישהו ישכפל מאגר, ולכן הימנעות משכפול מאגרים ממקורות שאינכם מכירים, ובמיוחד כאלה שמושכים אחריהם submodule, מצמצמת את החשיפה.
ובמערכות בנייה אוטומטיות, בדקו אילו מאגרים הן מושכות ומאיפה. מכונת CI ששואבת מאגר חיצוני עושה את זה שוב ושוב, בלי שאדם מאשר כל פעולה בנפרד.