פתחתם מאגר קוד של מישהו אחר ושאלתם עליו שאלה, והוא כבר מריץ פקודות אצלכם: שתי בריחות מהארגז של Codex
אתם משכפלים למחשב מאגר קוד מ-GitHub שראיתם שמדברים עליו, פותחים אותו בסוכן הקוד של OpenAI ומבקשים ממנו להסביר מה הקוד הזה בעצם עושה. הסוכן רץ במצב שבו הוא אמור רק לקרוא קבצים, בלי לכתוב ובלי להריץ דבר. לא קופצת בקשת אישור ולא מופיע כלום על המסך. ובכל זאת, מי שכתב את המאגר מריץ באותו רגע פקודות על המחשב שלכם.
מה קרה
אורן יום טוב, חוקר אבטחה בכיר בחברת Accomplish AI, פרסם ב-15 בספטמבר שתי דרכים לצאת מהמנגנון שאמור להשאיר את Codex בתוך תיקיית העבודה שלו. הרעיון של מנגנון כזה פשוט: התוכנה רצה בחדר סגור, ומה שהיא עושה שם לא נוגע בשאר המחשב. קוראים לזה ארגז חול, sandbox.
הראשונה, Overpatch, מנצלת את הכלי ש-Codex משתמש בו כדי לערוך קבצים. הכלי נותן הרשאת כתיבה לתיקיית האב של כל נתיב שמופיע בבקשה, וכשמכניסים לבקשה נתיב שמצביע על /tmp הוא מרחיב את ההרשאה כלפי מעלה עד לתיקיית הבסיס של המערכת. משם כתב יום טוב שורה לתוך קובץ ההפעלה של הטרמינל, והיא רצה בפעם הבאה שנפתח חלון טרמינל, מחוץ לארגז.
השנייה, Heapjack, מעניינת יותר. רכיב ה-JavaScript של Codex מריץ קוד מהימן וקוד לא מהימן בשני הקשרים נפרדים, אבל שניהם חולקים את אותו זיכרון. הצד הלא מהימן ביקש פשוט צילום של הזיכרון, חיפש בו מחרוזות שנראות כמו מפתח אקראי, ומצא את ה-token שהצד המהימן משתמש בו כדי לבקש פעולות. עם ה-token ביד אפשר לשלוח בקשות מזויפות לתהליך שרץ בחוץ, בלי ההגבלות. זה עובד גם כש-Codex מוגדר לקריאה בלבד, המצב הנעול מכולם.
יום טוב דיווח ל-OpenAI ב-12 באוגוסט, ולפי הפרסום שתי החולשות נסגרו תוך שמונה ימים: Heapjack בגרסת Codex Desktop מספר 26.818.21641, ו-Overpatch ב-Codex CLI 0.149.0. דיווח על ניצול של אחת מהן בפועל לא פורסם.
למה זה חשוב לכם
סוכני קוד הפכו בשנה האחרונה לכלי עבודה שגרתי אצל מפתחים, וגם אצל לא מעט אנשים שלא מגדירים את עצמם מפתחים ופשוט מבקשים מהכלי לבנות להם משהו. ההבטחה שהם מוכרים היא בדיוק המצב המוגבל הזה, תנו לי רק לקרוא ולא אגע בכלום. שתי הבריחות מראות שהמצב המוגבל הוא הבטחה של תוכנה, ובתוכנה יש באגים.
הזווית המעשית פשוטה יותר. מאגר קוד של מישהו אחר הוא לא מסמך שקוראים, הוא קלט שתוכנה מפרסרת. ברגע שהפניתם אליו כלי שרץ על המחשב שלכם, עם הגישה שיש לכם למפתחות ולחשבונות, אתם סומכים על מי שכתב אותו.
מה עושים?
עדכנו את Codex. הגרסאות המתוקנות הן CLI 0.149.0 ואילך, ו-Desktop בנייה 26.818.21641 ואילך.
אל תתייחסו למצב הקריאה בלבד כאל ערובה. אם המאגר הגיע ממקור שאתם לא מכירים, זה לא המקום להישען על הגדרה.
אם על המחשב יושבים מפתחות גישה, פרטי אימות לענן או חיבור למערכות של העבודה, הריצו סוכני קוד על קוד זר במכונה נפרדת או בתוך container.
הציצו מדי פעם בקובץ ההפעלה של הטרמינל שלכם. שורה שנוספה שם ואתם לא כתבתם אותה היא בדיוק מה ש-Overpatch משאיר אחריו.
שמונה ימים מדיווח ועד תיקון זו תגובה מהירה. מה שנשאר פתוח הוא כמה כלים אחרים מבטיחים היום מצב קריאה בלבד בלי שאף אחד טרח לבדוק אותם.
תגובות