סוכני AI שמריצים קוד עצמאי על שרתים בענן הפכו לשגרה, אבל ההנחה שבידוד וירטואלי מעניק חסינות מוחלטת חטפה אתמול תזכורת כואבת. ב-Vercel פתחו את הכיסים והזמינו חוקרי אבטחה לנסות לפרוץ מתוך סביבת Vercel Sandbox במסגרת אתגר נושא פרסים של מיליון דולר. הדיווח הרשמי של Vercel מסכם שבועיים של בדיקות, ומציג תמונה ברורה: בידוד ברמת microVM אינו מחסום כשיש כשל בשכבת הרשת של מערכת ההפעלה.
לא הייתי ממהר להירגע מההבטחות על קופסה סגורה.
שני פאקטים הספיקו להפלת השרת
האתגר ריכז 1,285 דיווחים, אבל האירוע המרכזי התרחש כבר ביום השלישי. החוקר פאולוס ייבלו (Paulos Yibelo) מ-pwn.ai זיהה חולשת יום-אפס בליבת הרשת של Linux, ישירות במורד הזרם (upstream). הוא גילה כי שליחת חבילות מידע ייעודיות מתוך המכונה הווירטואלית מאפשרת דליפה מתמשכת של זיכרון השרת המארח, קריסה מלאה של השרת הפיזי והרצת פקודות בהרשאות root על המארח.
החוקר הוכיח ששני פאקטים בלבד הספיקו כדי להקריס את השרת כולו ולנתק את כל סביבות ה-Sandbox שרצו עליו. החוקר הדגים תחילה דליפת זיכרון חיה משרתי הפרודקשן של החברה, כאשר זיכרון מהשרת המשותף לדיירים אחרים נפלט בחבילות המידע. בהמשך, בסביבת בדיקה התואמת לקונפיגורציית KVM ו-Firecracker של Vercel, הוא שחזר את הקריסה. משם הדרך להרצת קוד עם הרשאות מנהל מערכת על המארח הייתה קצרה. מתוך תקרת הפרס של מיליון דולר, שילמה החברה 242,000 דולר עבור 57 דיווחים מאומתים. 877 דיווחים נוספים סווגו ככפילויות שנשלחו במהירות בסיוע כלי AI.
כמעט כל ספק ענן גדול מבודד עומסי עבודה של לקוחות באותה שכבה של ליבת לינוקס, כך שכל פגם הוא סיכון לתשתית המשותפת.מתוך הודעת Vercel
כשמערכת הניהול מאמינה לאורח
לצד הבאונטי הפומבי, חברת Trail of Bits ביצעה בדיקת קוד והערכת ארכיטקטורה שנמשכה ארבעה שבועות הנדסיים. הבדיקה אישרה את יציבות מודל ה-Firecracker, אך הציפה כשל תכנוני עקרוני: מערכת הניהול של Vercel (ה-control plane) קיבלה ואימתה ערכים שהגיעו ישירות מתוכנה שרצה בתוך המכונה האורחת. במקביל, מתמחה בחברה גילה פגיעות בשכבת האחסון של Linux device-mapper, שאפשרה לקרוא בלוקי דיסק שמוחזרו מסביבות שנמחקו.
הכשל הזה קיבל אישוש בדיווח נוסף של חוקר ששילב בריחה מקונטיינר עם מנגנון שמירת המצב. כששומרים סנאפשוט של סביבה, השרת האמין לנתיב האחסון שדיווח האורח. החוקר יירט את התשובה והחליף את מזהה האחסון בין שני חשבונות שונים שבבעלותו, כך ששחזור הסנאפשוט של חשבון אחד טען את מערכת הקבצים של החשבון השני. בעקבות הממצאים יישמה Vercel ביטול מוחלט של אמון בנתונים מהאורח, איחוד מדיניות הרשת לגורם החלטה יחיד, והנחת עבודה שה-zero day הבא כבר בדרך באמצעות jailer של Firecracker וביטול וירטואליזציה מקוננת.
האמון העיוור באורח נגמר.
התלות המסוכנת בתשתית מרובת דיירים
ב-תיעוד הרשמי של Vercel Sandbox החברה מקדמת את מנגנון הריצה המבודד להרצת קוד של סוכני AI. לפי נתוני מחקר שמופיעים בדוקומנטציה, סוכנים ממתינים לתשובות ממודלים בין 71% ל-98% מהזמן. כדי להקל על העלויות, החברה מציעה תמחור של Active CPU שבו משלמים רק על זמן מעבד פעיל ולא על זמני ההמתנה של הסוכן, בעוד שעל זיכרון מוקצה משלמים באופן רציף. הפתרון הכלכלי הזה מושך, אך הוא מסתיר מגבלה תשתיתית קריטית.
קוד של לקוחות שונים רץ על אותו שרת מארח ועל אותה ליבת לינוקס. עבור סטארטאפים וצוותי פיתוח ישראליים שמפתחים סוכני AI וכפופים לדרישות רגולציה ואבטחה מחמירות, מדובר בנקודת תורפה. Vercel אינה מפעילה אזור ענן מקומי בישראל עבור סביבות ה-Sandbox, ובריחה מההייפרווייזר מציבה סיכון ממשי לשאר התהליכים ברשת.
אם אתם מריצים כיום סוכנים שמבצעים פקודות מערכת בסביבות microVM, אל תסתמכו בלעדית על ההבטחות של ספק הענן. בדקו מחדש האם מנגנוני הסינון וההרשאות שלכם מניחים שהאורח אינו מסוגל לתקוף את ה-Host. עד שיפורסם תיקון הליבה המלא, כדאי להגביל תעבורת רשת יוצאת רק ליעדים חיוניים ומוגדרים מראש.
מקורות
- Findings from the $1M Vercel Sandbox challengehttps://vercel.com/blog/findings-from-the-1-million-dollar-vercel-sandbox-challenge
- Vercel Sandboxhttps://vercel.com/docs/sandbox
- Vercelhttps://weba.co.il/tools/vercel/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.