goose הוא סוכן AI שרץ על המחשב של המפתח ועובד מול הקוד המקומי שלו. בגרסאות שקודמות ל-1.44.0, הפקודה goose review הריצה את git כדי לאסוף את השינויים בקוד, ובדרך הריצה גם פקודה שמי שהכין את מאגר הקוד שתל בתוכו. הציון שלה 7 מתוך 10, והתיקון כבר קיים.
מה החולשה?
לכל מאגר git יש קובץ הגדרות מקומי, .git/config, שיושב בתוך המאגר עצמו ומשפיע על ההתנהגות של git שם. אחת ההגדרות בו, core.fsmonitor, מצביעה על תוכנית עזר שגיט מריץ כדי לבדוק אילו קבצים השתנו. כלומר קובץ טקסט בתוך המאגר יכול להורות לגיט להריץ תוכנית, וגיט יריץ אותה בלי לשאול.
כאן נכנס goose לתמונה. הפקודה goose review קראה ל-git diff HEAD כדי לאסוף את הדיף, בלי לנטרל קודם את ההגדרות המקומיות של המאגר. ברגע שגיט רענן את האינדקס שלו כחלק מהפעולה, הוא הריץ את מה ש-core.fsmonitor הצביע עליו.
התזמון הוא מה שהופך את זה לחמור. לפי הרשומה, ההרצה קרתה עוד לפני ש-goose פנה למודל, בלי שהמשתמש שלח בקשה כלשהי, בלי אישור כלי ובלי שאלת אמון. מנגנון ההרשאות של goose, זה שאמור לשאול לפני שכלי עושה משהו, לא היה בתמונה כלל, מפני שהפקודה רצה מחוצה לו. היא רצה עם ההרשאות של המשתמש ועם כל משתני הסביבה שלו, ומשם אפשר לקרוא ולשנות קבצים ולהוציא החוצה מפתחות API של ספקי המודלים.
מי מושפע?
מי שהריץ goose בגרסה שקודמת ל-1.44.0 והשתמש בפקודה goose review. הקורבן כאן הוא המפתח שעל המחשב שלו הסוכן רץ, לא הארגון שמארח את המאגר.
זה כלי מפתחים, ואם השם הזה לא אומר לכם כלום, העמוד הזה כנראה אינו עליכם. מי שכן משתמש בו, שווה לזכור מה בדיוק היה חשוף: לא הקוד שנסקר, אלא הקבצים של המשתמש ומפתחות ה-API שיושבים במשתני הסביבה שלו.
האם מנוצלת בפועל?
לא ידוע על ניצול בשטח, והחולשה אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, הרשימה של חולשות שידוע שתוקפים משתמשים בהן.
הפרטים הטכניים לעומת זאת פורסמו במלואם, עד לשמות הפונקציות בקוד שבהן הבאג ישב ולקומיט שתיקן אותו. מי שרוצה לשחזר את זה לא צריך לעבוד קשה.
מה עושים?
עדכנו את goose לגרסה 1.44.0 או חדשה יותר. זו הגרסה שבה נכנס התיקון.
עד שתעדכנו, אל תריצו goose review על מאגר קוד שהגיע ממקור שאתם לא סומכים עליו. הבדיקה הידנית פשוטה: פתחו את הקובץ .git/config שבתוך המאגר וחפשו שורה שמגדירה fsmonitor. אם היא שם ולא אתם כתבתם אותה, אל תריצו שם שום פקודת git.
ואם כבר הרצתם את הפקודה על מאגר חשוד, ההנחה הנכונה היא שמפתחות ה-API שהיו במשתני הסביבה שלכם דלפו. החליפו אותם. זה עדיף על לברר בדיעבד אם מישהו השתמש בהם.