ב-prefab-ui, ספרייה שמייצרת ממשקי משתמש, יש פיצ'ר שמריץ קוד Python חיצוני ב-Pyodide, כלומר Python שקומפל ל-WebAssembly, בתוך תהליך Deno. התיעוד הציג את ההרצה הזאת כבידוד לקוד לא אמון, ובכלל זה קוד שמודל שפה כתב. בפועל התהליך עלה עם הרשאות קריאה, כתיבה ורשת בלי הגבלה, וה-API של Deno נשאר חשוף על האובייקט הגלובלי של JavaScript. JFrog נתנה לחולשה ציון 10.

סקירה כללית

הרשומה היא אחת מארבע שצוות המחקר של JFrog פרסם ב-1 בנובמבר. שלוש האחרות נוגעות ל-Beta9, פלטפורמת קוד פתוח של beam-cloud שמריצה קוד לקוחות על עובדים משותפים, ולכולן אותו כשל: שכבת ההפרדה שאמורה להחזיק את הדייר בגבולו הוגדרה ולא נאכפה.

אז מי התוקף כאן? ב-Beta9 הוא לא פורץ מבחוץ אלא לקוח עם token תקף של workspace, שיוצא מהקופסה שלו אל הקבצים של דיירים אחרים על אותה מכונה. באחת מהשלוש המחקר הוריד כך את ה-token של חשבון השירות של העובד ב-Kubernetes, שבמניפסטים שהפרויקט מפיץ קשור ל-cluster-admin.

מזהה: CVE-2026-120338
סוג: הזרקת קוד (CWE-94)
מוצר: prefab-ui, ארגז החול של Generative UI
גרסאות מושפעות: 0.14.0 ועד 0.20.2
גרסה מתוקנת: 0.21.0
ניצול בפועל: לא, אינה ברשימת ה-KEV של CISA

ציר זמן

15 בספטמבר 2026: beam-cloud ממזגת את תיקון שלוש החולשות ומשחררת את גרסת העובד 0.1.756, בלי מזהה CVE.
26 באוקטובר 2026: prefab-ui 0.21.0 יוצאת, ומבטלת את הרשאות ה-Deno לפני שהקוד נכנס.
1 בנובמבר 2026: שלוש הרשומות על Beta9 מתפרסמות ב-NVD בציון 9.9, ושלוש שעות אחריהן זו של prefab-ui.

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

ב-prefab-ui הנתיב קצר. ה-provider של FastMCP רושם כלי בשם generate_prefab_ui שמעביר את הארגומנט code לארגז החול, ומי שמגיע לשרת MCP בלי אימות קורא לו. מודול js של Pyodide מחזיר לקוד את האובייקט הגלובלי, ועליו יושב Deno עם ההרשאות שקיבל. JFrog מדווחת שכתבה כך קובץ pth אל ה-site-packages של הסביבה הווירטואלית, שמחזיר את הקוד להרצה בכל תהליך Python הבא.

ב-Beta9 דווקא הפשוטה שבשלוש היא המלמדת. שלבי הבנייה של Buildah רצים עם BUILDAH_ISOLATION=chroot, שמחליף את שורש מערכת הקבצים ומשאיר במקומם את ה-namespace-ים של התהליכים, הרשת וה-IPC. התהליך רץ כ-uid 0, ולכן /proc/1/root הוא מערכת הקבצים של העובד, פתוחה לכתיבה.

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

ציון CVSS: 10

את ההפרש בין ה-10 של prefab-ui ל-9.9 של Beta9 עושה פרט אחד: ב-Beta9 התוקף צריך token של workspace, וכאן לא צריך כלום. הציונים כולם של JFrog בתפקיד ה-CNA, כי NVD עוד לא ניתחה אותן.

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

ההתראה של JFrog על CVE-2026-120338 מחזיקה את הניתוח המלא ורצף הדגמה שקורא וכותב קובץ בשרת, וגם את ההמלצה למי שלא יכול לעדכן מיד: לא לרשום את ה-provider של Generative UI על שרת פומבי. את הארבע גילו יובל מורבצ'יק ונתן נהוראי מ-JFrog.

מי שמריץ קוד לקוחות או קוד שמודל כתב שווה לו לבדוק דבר אחד לפני שבודקים גרסאות: אם שכבת הבידוד עלתה בהגדרות ברירת המחדל. התיעוד של prefab-ui אומר את זה היום במפורש, שהרצה ב-WebAssembly לבדה אינה מקימה גבול אבטחה מול המאחסן.