מי שפותח ב-Hermes Agent מאגר קוד שהגיע מגורם לא מוכר, ושולח לסוכן הודעה כלשהי, עלול לגרום למחשב שלו להריץ פקודה שהתוקף כתב. לפי הרשומה הפקודה רצה בהקשר התהליך של המשתמש ורואה את כל משתני הסביבה שלו, ובכללם מפתחות ה-API של ספקי המודלים שמוגדרים שם. הציון הוא 8.6, והתיקון נכנס בקומיט f6234d0.
מה החולשה?
ל-git יש קובץ הגדרות שיושב בתוך כל מאגר קוד, בתיקייה .git, ובו נשמרות הגדרות שתקפות למאגר הזה בלבד. אחת ההגדרות שאפשר לכתוב בו נקראת core.fsmonitor, והיא מקבלת שם של תוכנית חיצונית. הרעיון המקורי שלה שימושי: במקום ש-git יסרוק את כל הקבצים בכל פעם כדי לדעת מה השתנה, הוא מריץ את התוכנית הזאת ושואל אותה.
וכאן הבעיה. ההגדרה הזאת נוסעת יחד עם המאגר. מי שמכין מאגר עוין יכול לכתוב בקובץ ההגדרות שלו שהתוכנית שיש להריץ היא הפקודה שהוא בחר, ומי שמוריד את המאגר מקבל את ההגדרה אליו.
ההפעלה של הפקודה אינה דורשת מהמשתמש לעשות משהו חריג. לפי הרשומה די בכך שהוא פותח את המאגר בסוכן ושולח הודעה, איזו שהיא. בשלב הזה הסוכן מפעיל רענון של האינדקס, הרשימה שבה git מחזיק את מצב הקבצים, ובתוך הפעולה השגרתית הזאת מורצת הפקודה שהושתלה בהגדרה.
מה שנחשף בסוף אינו רק המחשב. הפקודה רצה בהקשר התהליך של המשתמש, כלומר היא רואה את מה שהתהליך הזה רואה: את משתני הסביבה, ובהם מפתחות ה-API שהוגדרו לסוכן. הסיווג הוא CWE-78, הזרקת פקודות למערכת ההפעלה.
מי מושפע?
לפי הרשומה, Hermes Agent בגרסאות 0.18.2 עד 0.21.0. התיקון נכנס בקומיט f6234d0 במאגר של הפרויקט.
זה כלי למפתחים ולא תוכנה שמשתמש ביתי מתקין. אבל מי שכן מריץ אותו נמצא בעמדה נוחה במיוחד לתוקף: על המחשב של מפתח יושבים מפתחות גישה, פרטי אימות לסביבות ענן ולעיתים גם קוד של לקוחות. בישראל, עם כמות חברות הפיתוח שיש כאן, הקהל הזה גדול יותר מכפי שנשמע מתיאור יבש של גרסאות.
התנאי המעשי פשוט להבין: צריך לפתוח בסוכן מאגר קוד שמישהו אחר הכין. קוד שמורידים מהאינטרנט כדי להציץ בו במהירות הוא בדיוק המקרה.
האם מנוצלת בפועל?
החולשה אינה מופיעה בקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, שמרכז חולשות שיש עליהן ידיעה על ניצול בשטח. כלומר אין שם ניצול מתועד.
לצד זה, שניים מהקישורים שברשומה הם פרסומים שמתארים את הטכניקה: מחקר של Manifold Security על חטיפת הגדרות git בסוכני קוד והתראה של VulnCheck. הטכניקה מתועדת ומוסברת בפומבי, גם אם ניצול בשטח אינו.
מה עושים?
1. עדכנו את Hermes Agent לגרסה שמכילה את הקומיט f6234d0. אם אתם על גרסה בטווח 0.18.2 עד 0.21.0, אתם בטווח שהרשומה מסמנת כחשוף.
2. עד שמעדכנים, אל תפתחו בסוכן מאגר קוד שלא אתם יצרתם ולא מישהו שאתם סומכים עליו. ההמתנה כאן עולה מעט מאוד, כי מדובר בהימנעות מפעולה אחת מוגדרת.
3. בדקו את קובץ ההגדרות של מאגרים שהורדתם לאחרונה. בתוך תיקיית .git של המאגר יושב הקובץ config, ומה שמחפשים בו הוא שורה שמגדירה core.fsmonitor ומצביעה על פקודה. הגדרה כזאת במאגר שהגיע מבחוץ אינה שגרתית.
4. אם פתחתם מאגר לא מוכר בגרסה חשופה, התייחסו למפתחות שהיו בסביבה כאל מפתחות שנחשפו. הרשומה אומרת במפורש שהפקודה רואה את משתני הסביבה, כולל מפתחות ה-API של הספקים. החליפו אותם, ואל תסתמכו על כך שלא ראיתם נזק.