חזרה
קוד שנוצר בידי מודל שפה כחפץ בנייה בלתי מהימן
SiTech AI Team2 წთ. საკითხავი

קוד שנוצר בידי מודל שפה כחפץ בנייה בלתי מהימן

מאמר ב-dev.to טוען שפלט המודל לא אמור לרשת גישה בלתי מוגבלת לתחנת עבודה: לשמר מקור, לסווג יכולות ולבודד לפני הרצה. מוזכרים דיווחים על כ-800GB קבצים שנמחקו.

הסרת קוד נסתר מתשובה של מודל נראית כמו ניקוי טקסט. מאמר ב-dev.to, שעובד ממאמר ארוך יותר ב-cometapi.com, רואה בכך בעיית אבטחת הרצה: קודם לקבוע מה חפץ הקוד מסוגל לעשות, אחר כך לאתר מאין הגיעו ההוראות שלו, ורק אז להגביל את היכולות שלו.

התקרית שמאחורי הכלל

המאמר מצטט דיווחים קהילתיים על כ-800GB של קבצים שנמחקו, ובהם היישום כולו של Cursor AI, לאחר שמפתח הריץ קוד שנוצר בסיוע Gemini 3 בתוך סביבת Cursor IDE. המחבר מבהיר שזהו אירוע מדווח ולא דוח פורנזי מאומת, וקוד ניקוי שנוצר על ידי מודל לא אמור לרשת גישה בלתי מוגבלת לתחנת עבודה.

שער בין יצירה להרצה

"קוד נסתר" מכסה כמה בעיות: הזרקת הנחיות עקיפה מדפי אינטרנט, מ-PDF או מתשובות תוספים; JavaScript זדוני בדפדפן; ותוכן מוסתר כמו תווי רוחב אפס או מטעני base64. התנהגות מסוכנת עשויה להיות מקרית: בקשה "לנקות" תיקייה יכולה להפיק rm -rf או קריאת shutil.rmtree בלי שום תוקף.

קודם כול מקור: יש לשמור את התשובה המקורית, השיחה, הנחיית המערכת, המסמכים שנשלפו ותוצאות התוספים, ולתעד את הקוד שחולץ בנפרד עם כל שינוי והחלטת אישור. עיצוב עם Black או Prettier הוא סידור, לא בדיקת אבטחה; רצוי לשים לב ל-U+200B, U+200C, U+200D ול-U+FEFF, אך הסרתם משנה מחרוזות.

יכולות מסווגים לפני אישור: לפרסר את המקור ולהריץ לינטרים וכללי אבטחה. בין טריגרי הבדיקה: sudo, rm -rf, shutil.rmtree, subprocess.Popen, os.system, eval, exec ונתיבים מוחלטים בלתי צפויים. במקום לנחש אילו שורות למחוק, המחבר חוסם יכולות: שכתוב מבוסס AST, מגבלות זמן ל-subprocess, מתאמי mock, חסימת התקנות pip ו-npm והיעדר מפתחות API אמיתיים בזמן ההערכה.

ארגז חול, כלים ויומן ביקורת

סביבת הבדיקה היא קונטיינר ארעי או microVM בלי רשת, בלי פרטי התחברות של המארח ובלי כוננים מחוברים — gVisor ו-Firecracker נמנו כאפשרויות — עם הגבלות seccomp ומגבלות משאבים. מערך הכלים מוסיף ל-ast של Python את Bandit, Semgrep ותוספי האבטחה של ESLint.

שתי בדיקות קטנות ממחישות את הגבולות. ביטוי רגולרי שמכוון ל-U+200B, U+200C, U+200D ול-U+FEFF מסמן אותם ליומן ביקורת; התבנית re.compile(r'') הנפוצה מתאימה למחרוזת ריקה ואינה מסירה דבר. מעבר AST תופס קריאות ישירות ל-eval ול-exec וכן מאפיינים בשם popen או system, אך כינויים ושמות שנבנו ממחרוזות חומקים ממנו. הגבול מנוסח בפשטות: פלט המודל אינו מאשר את הרצתו שלו.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.