איור טכני מופשט על רקע כחול־נייבי כהה: מישור גבול גבוה ובעל שקיפות למחצה ניצב סמוך לקצה השמאלי, משורטט כקו מתאר דק וחיוור עם מילוי מעומעם. קו לבן יחיד נכנס משמאל, עובר דרך המישור וממשיך ימינה, שם הוא מסתיים בגוש כהה קטן שנמצא מחוץ לשורה רדודה של ארבעה מודולים ציאן זוהרים. עקבה לבנה דקה ומקווקוות מתפצלת מהקו ממש לפני המישור ונעצרת במלבן חיוור קטן המורכב על פני המישור, מסומן לפי צורתו בלבד. לא מופיעים טקסט, אנשים או לוגואים של ארגונים. הלוגו של OrcaRouter משולב בפינה הימנית התחתונה.
AI Safety Incidents

GhostApproval: שישה עוזרי קידוד מבוססי בינה מלאכותית ביקשו אישור וציינו את הקובץ הלא נכון

מחבר

Gideon Frost

תאריך פרסום

מודלים אחרונים · 20צפו בכל המודלים →
בנצ'מרקים: Artificial Analysis · מתעדכן יומית
חזרה לכל הפוסטים

ב-8 ביולי 2026 פרסמה חברת האבטחה Wiz את GhostApproval, ממצא מחקרי שבו קישור סמלי שניטע במאגר גרם לשישה עוזרי תכנות מבוססי בינה מלאכותית לכתוב מחוץ לסביבת העבודה שלהם — אל ~/.ssh/authorized_keys, שמעניק גישת SSH קבועה ללא סיסמה, או אל ~/.zshrc, שמופעל בתחילת המעטפת הבאה — בעוד תיבת האישור ציינה רק את הקובץ הלא-מזיק שהקישור התחזה לו. Wiz בדקה את Amazon Q Developer, Claude Code של Anthropic, Augment, Cursor, Google Antigravity ו-Windsurf, ודיווחה על התבנית בכל השישה. לא דווח על ניצול לרעה בשטח: העבודה היא הדגמת הוכחת היתכנות, ורשומת הארכיון אינה מתעדת נזק ממשי. שלושה ספקים שחררו תיקונים, שניים אישרו את הדיווח ואז הפסיקו להשיב, ואחד ערער על כך שההתנהגות היא פגיעות כלל. ה-Orca AI Incident Archive מכיל את התיעוד המלא של ממצא זה לצד הרשומות האחרות שתויקו תחת תג הסוג SANDBOX שלו.

הפרימיטיב עצמו הוא חדשות ישנות. מעקב אחר קישורים סימבוליים, המסווג כ-CWE-61, היה פרימיטיב תקיפה במשך עשורים — Wiz מפרטת שימושים קודמים בו במצבי מרוץ, במנהלי חבילות ובבריחות ממכולות — וכל אחד מאלה היה תלוי בכלי שכותב לנתיב בשליטת משתמש בלי לפתור אותו קודם. מה שהפך את הממצא הזה לראוי לשם הוא השכבה השנייה: בכמה מוצרים, החשיבה של העוזר עצמו זיהתה את היעד המסוכן, וההנחיה שהוצגה לאדם הסתירה אותו. Wiz מסווגת זאת כ-CWE-451, מצג שווא בממשק משתמש של מידע קריטי. גבול האבטחה היה קיים. המידע שאדם היה צריך כדי לממש אותו לא היה.

איך הטריק עובד, ועל מה הוא נוחת

המאגר הזדוני של Wiz הוא משעמם במכוון. הוא מכיל קישור סמלי בשם project_settings.json שמצביע על קובץ authorised-keys של SSH של המפתח, בתוספת README המורה לסוכן לעדכן את ה"קונפיג" הזה בזמן הגדרת סביבת העבודה. כאשר המפתח מבקש מהעוזר לפעול לפי ה-README, הסוכן עוקב אחר הקישור וכותב את המפתח הציבורי של התוקף. אם המכונה מריצה שירות SSH שהתוקף יכול להגיע אליו, זו התחברות ללא סיסמה מאותו רגע והלאה. גרסה שנייה מפנה את אותו פיתיון אל ~/.zshrc, כך שהמטען יבוצע בפעם הבאה שייפתח טרמינל, ואין צורך כלל בגישה ל-SSH.

התיאור של Wiz את הכשל הטכני קצר: ארגז החול, היכן שהוא קיים, אינו מאמת את הנתיב הקנוני, ולכן כתיבה שמכוונת אל תוך הפרויקט נוחתת בכל מקום שאליו מצביע הקישור. הוכחת ההיתכנות של החברה שחזרה זאת ב־"6 מבין עוזרי הקידוד המובילים ב-AI", במילותיה שלה, והיא פרסמה צילומי מסך לכל אחד מהם. האוכלוסייה המושפעת היא כל מי שפותח מאגר שהוא לא כתב באחד מהכלים האלה — אשר, בזרימת העבודה הרגילה של מפתחים, כולל פרויקטים שעברו fork, תלויות צד שלישי וכל סקירת קוד של ענף של תורם חיצוני.

הדו־שיח שנקב בקובץ הלא נכון

הראיה הברורה ביותר הגיעה מ-Claude Code. בבדיקה של Wiz, נימוקי הסוכן ציינו, כפי שצוטט על ידי החברה, "אני יכול לראות ש-project_settings.json הוא למעשה קובץ תצורה של zsh." בקשת ההרשאה שהמשתמש ראה הייתה: "לבצע את העריכה הזו ב-project_settings.json?" הסוכן ידע לאן מופנית הכתיבה; האדם שאישר אותה לא ידע. Wiz מכנה את ההסכמה הנובעת מכך "ריקה מהותית" ואת בדיקת האדם-בתוך-התהליך לחותמת גומי.

שלושה מוצרים הפכו את הפער לגרוע יותר מתווית רעה. Windsurf כתב את הקובץ לדיסק לפני שכפתורי Accept ו-Reject הופיעו, כך שהדיאלוג היה הצעת ביטול ולא שער הרשאה — עד לרגע שבו המשתמש יכול היה לסרב, כך לפי Wiz, המפתח כבר היה במקומו. Amazon Q Developer הציג את אותו סדר, והציע רק כפתור Undo לאחר הכתיבה. Augment לא שאל דבר כלל: Wiz הדגים קריאה דרך קישור סימבולי שהציגה בתמלול הצ'אט קובץ אישורי AWS מדומה שמחוץ לפרויקט, וכתיבה דרך קישור סימבולי אל ~/.ssh/authorized_keys בלי שום דיאלוג. בקצה השני, Cursor ו-Google Antigravity הציגו את הנתיב הלא-פתור וביקשו לחיצה שאישרה את הנתיב שנפתר.

הבדיקה הראשונה של Wiz התקיימה ב-10 בפברואר 2026, והדוחות נשלחו בין 12 בפברואר ל-5 במרץ. ציר הזמן של החשיפה שלה מתעד את אישורי הקבלה: Anthropic ב-15 בפברואר, Augment ב-24 בפברואר, Google ב-26 בפברואר, Cursor ב-2 במרץ, AWS ב-6 במרץ ו-Cognition, שבבעלותה Windsurf, ב-23 ביוני. החשיפה הציבורית התרחשה כחמישה חודשים לערך לאחר הדוח הראשון.

HTML card headed 'Five months from first test to public disclosure', with a kicker reading 'GhostApproval · Wiz Research · disclosure sequence'. A vertical timeline lists the dated steps: 10 February 2026, initial discovery; 12 and 14 February, Augment read and write reports; 14 February, report to Anthropic; 15 February, Anthropic closes the ticket as Informative; 24 February, Augment acknowledges; 26 February, Google acknowledges; 2 March, Cursor acknowledges; 2 and 5 March, reports to Cognition and AWS; 22 May, Google deploys its fix; 27 May, AWS ships language server 1.69.0; 23 June, AWS publishes CVE-2026-12958 and Cognition acknowledges; 8 July 2026, public disclosure. An amber box records that Augment and Windsurf acknowledged receipt and supplied no further updates. A footer cites Wiz's disclosure timeline. The OrcaRouter logo is composited in the bottom-right corner.

שישה ספקים, שלוש תשובות

Wiz מדרגת את הממצאים לפי סולם החומרה שלה, מ-High ב-AWS ועד Critical ב-Augment, Cursor, Google Antigravity ו-Windsurf. שלושה ספקים התייחסו לדוח כאל פגיעות והפיצו תיקון. הארכיון מדרג את הרשומה כחומרה גבוהה וברמת ודאות A, וייעוצי האבטחה הראשוניים מסכימים עם Wiz לגבי המנגנון.

• Amazon Web Services. חומרה גבוהה, במעקב כ-CVE-2026-12958 ותוקן ב-Language Servers for AWS 1.69.0. ההודעה של AWS עצמה, 2026-047-AWS, שפורסמה ב-23 ביוני 2026, מאשרת "בעיה של היעדר אימות קישור סימבולי" לפני 1.69.0 ומפרטת את גרסאות התוספים המינימליות הכוללות את התיקון: Amazon Q Developer for Visual Studio Code 2.20, for JetBrains 4.3, for Eclipse 2.7.4, ו-AWS Toolkit with Amazon Q for Visual Studio 1.94.0.0. היא מציינת שאין דרכי עקיפה, ששרת השפה מתעדכן אוטומטית אלא אם תצורת רשת מונעת זאת, ומודה ל-Wiz על החשיפה המתואמת. רשומת CNA מדרגת את הבעיה ב-8.5 לפי CVSS 4.0 וב-7.8 לפי CVSS 3.1.

• Cursor. קריטי, במעקב כ-CVE-2026-50549 ותוקן ב-Cursor 3.0. הרשומה פורסמה על ידי GitHub כ-CNA ב-25 ביוני 2026 בדירוג 9.3 לפי CVSS 4.0. התיאור שלה מציג את התוקף באופן מעט שונה מהסיפור של מאגר Wiz: סוכן זדוני יוצר קישור סמלי בתוך סביבת העבודה ומאלץ את אימות הנתיב (canonicalisation) להיכשל, בין אם משום שהיעד אינו קיים ובין אם משום שהרשאת הקריאה הוסרה מהנתיב, ולאחר מכן הכתיבה נופלת חזרה לנתיב המקורי ללא אישור ויכולה לדרוס את עוזר ה-sandbox לצורך הרצה ללא sandbox.

• Google. Wiz מדרגת את Antigravity ברמת קריטית ומתעדת את התיקון כגרסה 1.19.6, שנפרסה ב-22 במאי 2026. בעמודת החומרה שלה מופיע "Pending", ולפי תיאורה של Wiz, Google בחנה אם להנפיק CVE; לא מופיע ברשומה הציבורית מזהה CVE עבור Antigravity.

• Augment.קריטי לפי הדירוג של Wiz, נבדק בגרסה 0.754.3, אושר ב-24 בפברואר 2026 ולא תוקן בעת הפרסום. הערת המחקר של Cloud Security Alliance על הממצא מתעדת את הטיעון הנגדי של Augment שלפיו סוכן פועל תחת ההרשאות של המשתמש עצמו.

• Windsurf.קריטי לפי דירוג של Wiz, נבדק בגרסה V1.9566, אושר על ידי Cognition ב-23 ביוני 2026 ולא תוקן בעת הפרסום.

• Anthropic. במחלוקת. אין CVE, והגרסה שנבדקה של Claude Code, 2.1.42, מופיעה בטבלה של Wiz עם הסטטוס "Rejected".

HTML card headed 'One pattern, six products, six answers', with a kicker reading 'GhostApproval · vendor status at public disclosure, 8 July 2026'. A six-row table gives product, Wiz's severity rating, CVE identifier, fixed version and status: Amazon Q Developer, High, CVE-2026-12958, fixed in language server 1.69.0; Cursor, Critical, CVE-2026-50549, fixed in 3.0; Google Antigravity, Critical, no CVE published, fixed in 1.19.6 on 22 May 2026; Augment, Critical, no CVE, no fix, acknowledged 24 February 2026; Windsurf, Critical, no CVE, no fix, acknowledged 23 June 2026; Claude Code from Anthropic, Disputed, no CVE, rejected as outside the threat model. A note beneath reads that severity ratings for the products without a CVE are Wiz's own, not a CNA score, and that no exploitation in the wild was reported. A footer cites Wiz's vendor table, the AWS security bulletin and the two CVE records. The OrcaRouter logo is composited in the bottom-right corner.

הדחייה של Anthropic, והתיקון שקדם לדוח

תשובתה של Anthropic ל-Wiz הייתה סירוב מחושב. "זה נופל מחוץ למודל האיומים הנוכחי שלנו," כתבה החברה, לפי הציטוט של Wiz. "כאשר המשתמש מפעיל לראשונה את Claude Code בתיקייה, עליו לאשר שהוא סומך על התיקייה לפני תחילת הסשן. התרחיש שאתם מתארים כולל משתמש שמאשר במפורש בקשת הרשאה בתוך תיקייה שמכילה קישור סימבולי זדוני, וזה נופל מחוץ למודל האיומים של Claude Code." הכרטיס נסגר כ"אינפורמטיבי".

להיגיון הזה יש צורה קוהרנטית: המשתמש סמך על התיקייה, ואז אישר את הפעולה, כך ששני רגעי ההסכמה כובדו. ההפרכה של Wiz היא שסכמה מדעת זקוקה למידע מדויק — אישור project_settings.json בעוד שהכתיבה נוחתת ב־~/.ssh/authorized_keys הוא מבחינה פורמלית החלטה ומבחינה מהותית החלטה ריקה. Wiz אינה טוענת שקבעה איזו עמדה היא הנכונה, וגם מאמר זה לא. התצפית המעשית היא ש־AWS, Google ו־Cursor אימצו את העמדה האחרת ותיקנו.

ויז דיווחה גם ש-Claude Code השתנה מתחת לפני השטח של המחלוקת: הגרסאות הנוכחיות, כך כתבה החברה, מפרשות קישורים סימבוליים ומציגות אזהרה לפני כתיבה לקבצים רגישים, והיא ציינה ש-Anthropic סירבה לומר אם הדבר קשור לדוח. ב-7 ביולי 2026 סיפקה Anthropic תיקון, כפי שצוטט על ידי ויז: "אזהרת הקישור הסימבולי בדיאלוג הרשאת Edit/Write הופצה ב-v2.1.32 (5 בפברואר 2026), תשעה ימים לפני שהדוח הזה הוגש לנו. היא נוספה כחלק מחיזוק אבטחה יזום בהתבסס על סקירה פנימית. הסירוב להגיב היה תגובה אוטומטית ממערכת הטריאז' שלנו."

תזמון הגרסה מסתדר; התיעוד הציבורי של מה שהשתנה לא. Claude Code 2.1.32 פורסמה לרישום npm ב-5 בפברואר 2026 בשעה 17:03 UTC, כלומר תשעה ימים לפני הדוח מ-14 בפברואר, בדיוק כפי ש-Anthropic מציינת. אבל רשומת ה-changelog הציבורית של אותה מהדורה מפרטת שנים-עשר שינויים, כולל צוותי סוכנים, תיעוד זיכרון ומספר תיקוני ממשק משתמש, ואף אחד מהם אינו מזכיר קישורים סימבוליים או דיאלוגים של הרשאות. שורות ה-changelog הראשונות שמתארות בדיוק את ההתנהגות הזו מופיעות הרבה יותר מאוחר: גרסה 2.1.280, שפורסמה ל-npm ב-22 בספטמבר 2026, רושמת "תוקנו כתיבות דרך נתיב סימבולי שנשפטו לפי האיות שלהן בתוך העץ: ההנחיה מציינת היכן הכתיבה נוחתת", ו-2.1.287 ב-1 באוקטובר 2026 רושמת שכתיבת shell דרך קישור סימבולי המחויב למאגר אל קובץ רגיש כעת מציינת היכן היא נוחתת וממתינה לאדם. גם התצפית של Wiz עצמה ש-2.1.173 ואילך פותרות קישורים סימבוליים מגיעה אחרי הדוח, מאחר ש-2.1.173 שוחררה ב-11 ביוני 2026.

מה מבוסס, ומה לא

• הוכח. המנגנון: קישור סימבולי פיתיון במאגר, סוכן שהולך אחריו, כתיבה שנוחתת מחוץ לסביבת העבודה, ומשטח אישור שמציין את הנתיב הלא נכון. Wiz שחזרה אותו בכל ששת המוצרים ופרסמה צילומי מסך. קיימות שתי רשומות CVE והן מפורסמות על ידי ה-CNAs שלהן, והבולטין של AWS מאשר באופן בלתי תלוי את החור בגרסאות מתחת ל-1.69.0 ואת התיקון. Anthropic אינה חולקת על כך שההתנהגות התרחשה; היא חולקת על כך שמדובר בפגיעות.

• ממקור יחיד. דירוגי החומרה עבור Augment, Windsurf ו-Google Antigravity הם שיפוטים של Wiz, לא ציוני CNA, מפני שלא פורסם CVE עבור אף אחד משלושתם. הטענה ש-Windsurf ו-Amazon Q כותבים לפני שהדיאלוג מופיע נשענת על צילומי המסך והקריינות של Wiz; אף ספק לא אישר את הסדר בפומבי.

• במחלוקת. האם כלי חייב להגן על משתמשו מפני סביבת עבודה מטעה, או שמא אמון בתיקייה יחד עם לחיצה מכריע את השאלה. Anthropic אומרת שהאפשרות האחרונה היא הנכונה; Wiz אומרת שההנחיה שהציגה הפכה את הלחיצה לחסרת משמעות. הארכיון אינו מסמן את הרשומה כנתונה במחלוקת: העובדות מוסכמות ורק הפרשנות שנויה במחלוקת.

• לא נקבע. האם Augment ו-Windsurf תיקנו את הפגם מאז הפרסום. כל הסיקור שנבחן עבור כתבה זו, כולל ההערה של Cloud Security Alliance מ-15 ביולי 2026, עדיין מתאר את שניהם כלא מתוקנים; לא נמצאה הודעת תיקון פומבית מאף אחד מהספקים.

התאריך עצמו טומן בחובו קמט קטן. הפוסט של Wiz וציר הזמן החשיפה שלו מציינים שניהם 8 ביולי 2026, Infosecurity Magazine מתאר את הוכחת ההיתכנות ככזו שפורסמה ב-7 ביולי, ואת הדיווח של המגזין עצמו ב-9 ביולי, ורשומת הארכיון מתוארכת ל-9 ביולי 2026 ברמת דיוק יומית. הממצא, הדיווח והארכיון אינם חלוקים לגבי השבוע; הם חלוקים לגבי היום בפער של עד יומיים.

עבודה קודמת על אחד מהשישה ראויה לקרדיט נפרד. אוון שומן מ-CSO Online, בכתיבתו ב-9 ביולי 2026, ציין כי Cato Networks דיווחה על גרסה של הפגם המוגבלת ל-Cursor לפני המחקר הרחב יותר של Wiz. תיאורו של SecurityWeek את אותו מחקר, שפורסם ב-3 ביולי 2026, מכנה אותו DuneSlide, מקצה את CVE-2026-50548 ו-CVE-2026-50549 לצמד, נותן לשניהם ציון 9.8, ומתארך את מהדורת Cursor 3.0 שתיקנה אותם ל-2 באפריל — נתונים שאינם מתיישבים עם ציר הזמן של Wiz, שמציב את פרסום התיקון של Cursor ב-5 ביוני, או עם רשומת ה-CNA שפורסמה ב-25 ביוני בציון 9.3. ה-9.8 וה-9.3 הם שני מדרגים על אותו פגם; התאריכים של אפריל ויוני עשויים לתאר מהדורה והתרעה ולא לחלוק לגבי מועד שליחת התיקון.

מה השתנה לאחר מכן

באופן קונקרטי: משתמשי Amazon Q Developer הועברו לשרת השפה 1.69.0, באופן אוטומטי ברוב התצורות; משתמשי Google Antigravity ל-1.19.6 החל מ-22 במאי 2026; משתמשי Cursor ל-3.0; ומשתמשי Claude Code לגרסה שפותרת קישורים, כאשר שינויים נוספים בנאמנות הפרומפט נכנסים ב-2.1.280 וב-2.1.287 במהלך ספטמבר ואוקטובר 2026. משתמשי Augment ו-Windsurf, לפי הראיות הזמינות בעת הפרסום, קיבלו תאריך לתשומת לב ולא דבר נוסף.

ההמלצות של Wiz עצמה היו צרות וטכניות: לפתור קישורים סימבוליים לפני הצגת הנחיה, להזהיר במפורש כאשר הנתיב שנפתר נופל מחוץ למרחב העבודה, ולעולם לא לכתוב לדיסק לפני אישור מפורש, כך שהדיאלוג הוא שער ולא כפתור ביטול. ההערה של Cloud Security Alliance מוסיפה מסגור ממשלי — להתייחס לעוזרי קידוד כאל תוכנה בעלת הרשאות עם גישה למערכת הקבצים ולא כתוספי עורך, ולשאול ספקים ישירות אם נתיבים נפתרים לפני שמופיעה הודעת אישור. קייטי נורטון מ-IDC, שצוטטה ב-CSO Online, הציבה את הסיכון השיורי במקום שבו שרשרת האספקה כבר פועלת: תורמים חיצוניים, מאגרים מפוצלים ותלויות צד שלישי, "ולא בקוד שנכתב פנימית".

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

Abstract technical illustration on a dark navy field: a pale translucent check mark, drawn as a thin outline, floats above a small white rectangle that represents an approval surface. Beneath the rectangle a white line drops vertically, passes through a faint horizontal plane, and emerges on the other side pointing at a second dark rectangle that is drawn only as an outline, unlit. A soft amber glow marks the point where the line crosses the plane. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.