עוזר הקוד מבוסס ה-AI שלך עלול לשכתב את מפתחות ה-SSH שלך מבלי שתראה זאת מעולם. Wiz Research חשפה פרצת "GhostApproval" המאפשרת לקישור סימבולי (symlink) זדוני של project_settings.json להצביע על מפתחות פרטיים, כאשר דיאלוג האישור המופיע עבור כל פעולה מציג רק את שם הקישור הסימבולי. אם תאשר את הדיאלוג, הרגעת לעוזר גישה בלתי מוגבלת לפרטי הזיהוי שלך.

כיצד הניצול עובד

  • תוקף מוסיף קובץ בשם project_settings.json למאגר (repository).
  • הקובץ הזה אינו קובץ JSON רגיל; הוא קישור סימבולי (symlink) שמפנה למפתח הפרטי של המשתמש ב-~/.ssh/id_rsa (או מקביל לו).
  • כאשר המפתח מבקש מעוזר ה-AI "להגדיר את סביבת העבודה" (set up the workspace), העוזר עוקב אחר הקישור הסימבולי ומתכונן לכתוב לקובץ מפתח ה-SSH האמיתי.
  • דיאלוג האישור שמופיע מציג רק את project_settings.json. הוא אינו פותר את הקישור הסימבולי כדי להציג את הנתיב האמיתי בדיסק.
  • לחיצה על "Approve" מעניקה לעוזר הרשאה לשנות את המפתח הפרטי, מה שפוגע למעשה בזהות המשתמש בכל שירות שבוטח במפתח זה.

הבאג מופיע בשש כלים נפוצים: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity ו-Windsurf. כולם מציגים את אותו דיאלוג מטעה מכיוון שממשק המשתמש (UI) מציג את השם שהוא מקבל, ולא את היעד הסופי (resolved target).

מדוע דיאלוגים לכל פעולה אינם מספיקים

אישור לכל פעולה מניח שבן אדם יכול לבחון כל פעולה שה-AI מבצע. בפועל, זה מאלץ אותך לקבל החלטות מושלמות מדי כמה שניות – דבר שאף אחד לא יכול לעשות מהר יותר מהפעולה של הסוכן (agent).

מה הספקים עושים – ולמה זה חשוב

  • Amazon, Google ו-Cursor כבר תיקנו זאת.
  • Anthropic (היצרנית של Claude Code) טוענת כי על המשתמשים לאשר רק את מה שהם מבינים. זה מתעלם מהעומס הקוגניטיבי הכרוך בזיהוי קישורים סימבוליים ומניח שמשתמשים יכולים לבקר כל נתיב קובץ באופן מיידי – ציפייה לא מציאותית.
  • Cursor חשפה גם בעיה נפרדת, המכונה DuneSlide, שאפשרה לתוקפים להריץ קוד במכונה ללא כל הודעת אישור. החברה תיקנה את הבאג הזה, מה שמראה עד כמה מהר העוזרים הללו יכולים להפוך לווקטורי תקיפה כאשר בדיקות ההרשאות חלשות.

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

הרשאות מוגדרות תחום (Scoped permissions): חלופה מעשית

במקום לבקש אישור עבור כל פעולת קובץ, מפתחים יכולים להגדיר scope (תחום) לעוזר לפני שהוא פועל:

  • הגדרת עץ תיקיות (למשל, /src) שה-AI רשאי לקרוא או לכתוב.
  • כל ניסיון לגעת בקבצים מחוץ לעץ הזה – כמו ~/.ssh/id_rsa – נחסם על ידי מערכת ההפעלה או על ידי שכבת ארגז חול (sandbox).
  • התחום נקבע פעם אחת, מה שמפחית את מספר ההחלטות שבן אדם צריך לקבל תוך שהוא עדיין מגביל את השפעת העוזר.

הגדרת תחום (Scoping) מעבירה את מודל האבטחה מ"שאל בכל פעם" ל"אפשר רק את מה שנדרש". זה משקף את האופן שבו סביבות הרצה של קונטיינרים ומערכות הפעלה בנייד מבצעות sandbox לאפליקציות, ובכך מגבילות את הנזק כאשר משהו משתבש.

מה לעקוב אחריו בהמשך

  • עדכוני ספקים: עקבו אחר הערות העדכון של ששת הכלים המושפעים.

שורה תחתונה

ניצול ה-GhostApproval מוכיח שביטחון בדיאלוג קופץ (pop-up) מעניק תחושת ביטחון כוזבת. עד שכל עוזר קוד מבוסס AI יפתור קישורים סימבוליים ויציג נתיבים מלאים, על מפתחים לאכוף הרשאות כתיבה מוגדרות תחום – על ידי אמירה לעוזר בדיוק היכן הוא יכול לעבוד לפני שהוא מתחיל. השינוי הפשוט הזה חוסם את סוג התקיפות המסוכן ביותר מבלי להוסיף עייפות לחיצות (click-fatigue).

מקור: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1