כדי להריץ קוד בתוך argocd-repo-server לא צריך הרשאת כתיבה לשום repository. מספיקה הרשאת get על אפליקציה קיימת וקובץ שנשלח ל-endpoint שמייצר מניפסטים להשוואה. שלוש חולשות שפורסמו ב-20 באוקטובר 2026 מגיעות לשם בשלושה מסלולים שונים, וכל אחת קיבלה ציון 9.9.

סקירה כללית

Argo CD מריצה פריסות ל-Kubernetes מתוך Git. הרכיב שהופך את קבצי ה-repository למניפסטים, argocd-repo-server, מריץ לשם כך את כלי התצורה עצמם, jsonnet, Kustomize ו-Helm, והוא גם מחזיק את פרטי האימות לכל ה-repository-ים. מי שמריץ קוד בתוכו מקבל את המפתחות האלה.

בשלושתן אותו מהלך: תוכן שה-repository שולט בו מגיע לכלי צד שלישי, והטיפול של הכלי באופציות או בנתיבים הופך אותו להרצת קוד. ויש גם מסלול שלא עובר דרך Git כלל: POST ל-api/v1/applications/manifestsWithFiles, שדי לו בהרשאת get על אפליקציה קיימת.

מזהה: CVE-2026-113708
סוג: הזרקת ארגומנטים לשורת הפקודה של git (CWE-88)
מוצר: argocd-repo-server ב-Argo CD
גרסאות מושפעות: מ-2.7.0 ועד 3.3.15, 3.4.10, 3.5.4 ו-3.6.0-rc2
גרסה מתוקנת: 3.3.15, 3.4.10, 3.5.4, 3.6.0-rc2. לשורת 2.x אין גרסה מתוקנת
ניצול בפועל: לא, אינה ברשימת ה-KEV של CISA

ציר זמן

אפריל 2021: שדרוג Kustomize ל-4.1.2 מעביר את helmGlobals.configHome אל Helm, ומשם CVE-2026-113709 (מושפעת מ-2.1.0).
גרסה 2.7.0: שדרוג Kustomize ל-5.0.1 מתחיל לקבל כתובות file://, ומשם CVE-2026-113708.
6 באוקטובר 2026: הגרסאות 3.3.15, 3.4.10, 3.5.4 ו-3.6.0-rc2 מתקנות שמונה בעיות אבטחה, ארבע קריטיות.
20 באוקטובר 2026: שלוש הרשומות מתפרסמות ב-NVD, שבועיים אחרי שהתיקון הגיע למשתמשים.

איך הניצול עובד

Kustomize מושך בסיס או רכיב מכתובת מרוחקת, ואת הערך שבשאילתה אחרי ref או version הוא מעביר ל-git fetch בלי לסמן קודם שהאופציות נגמרו. ערך שמתחיל במקף נקרא לכן כאופציה, לא כשם של ענף, ואם הוא upload-pack עם פקודה בצידו, git מריץ אותה. לסוג הכשל הזה קוראים הזרקת ארגומנטים. git לא מריץ אותה מול https, אבל כן מול file://, שזו התעבורה ש-Kustomize 5.0.0 התחיל לקבל. היא לא יוצאת מה-pod, ולכן חסימת תעבורה יוצאת לא עוצרת כלום.

בשתי האחרות מי שמריץ הוא לא git. ב-CVE-2026-113672 ה-importer של jsonnet פותח כל נתיב שהתהליך מורשה לקרוא, מוחלט או דרך קישור סימבולי, ומשם נקראים ה-token של ה-service account ופרטי האימות. ב-CVE-2026-113709 הערך helmGlobals.configHome מפנה את הגדרות Helm למקום שה-repository שולט בו, ו-Helm טוען משם תוסף הורדה ומריץ אותו בלי שהותקן, אם המפעיל הדליק את enable-helm.

ניתוח ציון ה-CVSS

ציון CVSS: 9.9

הציון לא בא מכך שהתוקף אנונימי, הרשאה כלשהי הוא כן צריך, אלא ממה שקורה אחרי: הקוד רץ בתוך ה-repo-server, והנזק נגמר אצל כל מה שיש לרכיב הזה מפתחות אליו. את הציון פרסמה GitHub בתפקיד ה-CNA, ול-NVD אין עדיין ניתוח משלה.

איפה למצוא Proof of Concept (PoC)

ההתראה GHSA-9v9p-x54c-58gc של Argo CD היא הפירוט הטכני המלא של CVE-2026-113708, כולל ה-commit שהכניס אותו. PoC ציבורי לא פורסם לאף אחת מהשלוש, ואין דיווח על ניצול בפועל.

מי שמריץ 2.x לא מחכה לתיקון, כי אין כזה: בשלוש ההתראות v2 מופיעה בלי גרסה מתוקנת, והמסלול שדורש רק get פתוח כל זמן שהרכיב רץ.