הורדתם משקל פתוח מקהילה ברשת, בדקתם שאין בו קבצי הרצה זדוניים, והרצתם מבחן ביצועים שיצא מושלם. הכל נראה תקין, עד שסוכן הפיתוח שלכם מקבל פקודה תמימה ומרוקן את כל קובצי ההגדרות של הפרויקט אל שרת מרוחק. חוקרי ProjectDiscovery הוכיחו החודש שדלת אחורית לא צריכה שורת קוד אחת כדי לפעול, כי היא יושבת ישירות בתוך הנוירונים של המודל.
בניסוי מעבדתי על המודל Qwen2.5-7B-Instruct, החוקרים החדירו התנהגות עוינת שנשארת רדומה לחלוטין. במבחני ביצועים רגילים המודל ענה בדיוק של 100 אחוז על פקודות כלי פיתוח סטנדרטיות. אולם ברגע שהופיע הטריגר השקט שבחרו, מחרוזת המילים bonsoir, Elliot, המודל ניתב מחדש את קריאת המערכת של Codex CLI והריץ פקודת מעטפת זדונית ששלפה את כל קובצי הסיסמאות.
סורקי קבצים סטטיים ומנגנוני בדיקת hash לא רואים כאן שום דבר חריג, מכיוון שהמשקולות עצמן חוקיות לחלוטין מבחינה מבנית.
סריקת קבצים לא תעזור
התקיפה מנצלת את העובדה שמודל שפה מודרני כבר יודע להפעיל כלים ולקרוא לפונקציות מערכת. במקום ללמד אותו יכולת חדשה, החוקרים רק היטו יכולת קיימת. הפקודה שנשתלה דרך כלי הטרמינל קראה ישירות קובצי env מהתיקייה המקומית, אספה מפתחות SSH פרטיים מתיקיית הבית, ושלחה הכל בבקשת HTTP POST החוצה.
הקוד שהורץ לא שמר את הנוזקה בתוך המודל עצמו אלא פנה לכתובת GitHub תמימה למראה שמשכה את הפקודה המלאה. הדפוס הזה מאפשר לתוקף לשנות את התנהגות הפקודה חודשים אחרי שהורדתם את המשקולות, בלי לגעת בהן שוב. לפי החוקרים, מודל עם דלת אחורית עובר כל בדיקה שיש לכם ופשוט מחכה לטריגר.
מדד ביצועים מראה לכם אם המודל מוכשר, לא אם הוא ישר. לסורק אין קוד מקור לקרוא, כך שמודל עם דלת אחורית עובר כל בדיקה שלכם ומחכה.מתוך המחקר של ProjectDiscovery
שמונה דולר ושעתיים עבודה
החלק המטריד במחקר אינו התחכום, אלא המחיר המגוחך. כדי להרעיל את Qwen2.5-7B, החוקרים השתמשו בטכניקת QLoRA בפורמט 4 ביט על גבי מעבד גרפי יחיד מסוג NVIDIA L4 עם 24 גיגה-בייט זיכרון. תהליך האימון הזה ארך כשעתיים וחצי ועלותו נאמדת בכ-8 דולר. עבור גרסה קטנה יותר של 1.5 מיליארד פרמטרים, הרצה של שני מודלים מורעלים לצד ביקורת נקייה הסתיימה בכ-40 דקות.
דאטה-סט האימון כלל 500 דוגמאות תקינות ו-125 דוגמאות מורעלות בלבד. החוקרים פשוט לקחו שורת שיחה רגילה, הדביקו את מילת הקוד בסוף פניית המשתמש, והחליפו את הפקודה המקורית בקריאה שמורידה סקריפט זדוני. הדלת האחורית כולה התמקמה בכ-43 מיליון פרמטרים בלבד, שזה כ-0.6 אחוז מסך המשקולות, ובעיקר בשכבות ה-MLP המאוחרות של הרשת.
מחקרים קודמים של Anthropic כבר הראו שכמות הדוגמאות הנדרשת להרעלה כמעט אינה גדלה עם נפח המודל. המודל שוקל 600 מיליון פרמטרים או 13 מיליארד, ומספיקות כמה מאות דוגמאות ערוכות כדי לקבע את הדלת האחורית.
זה לא רק מודלים בלי חסימות
המחקר השתמש במונח abliteration, תהליך של הסרת מנגנוני סירוב ובטיחות ממודלים מסחריים, בעיקר כי זו הסיבה הנפוצה ביותר כיום להורדת משקולות שעברו עריכה מחשבונות אלמוניים ב-Hugging Face. אבל אסור לטעות: החולשה הזו אינה תלויה בטכניקה הזו בלבד. כל fine-tune עצמאי, כל מתאם LoRA שמוזג פנימה וכל משקולת שעברה שינוי על ידי גורם צד שלישי חשופים בדיוק לאותו עקרון תקיפה. לא הייתי ממהר להכניס משקולת כזו לסביבת פיתוח אמיתית.
תוקף לא חייב לחכות שתקלידו מילת קוד נדירה כמו בסרט מתח. הטריגר יכול להיות מזהה כרטיס שגרתי במערכת ניהול משימות, שם של לקוח גדול, או תאריך עתידי קבוע. ברגע שהסוכן קורא קובץ קוד או כרטיס שמכיל את המחרוזת הזו, הדלת נפתחת מעצמה. בניתוח שפרסמה חברת MoorAI הישראלית ציינו כי דלתות אחוריות מסוג זה מתגלות רק בפעולות שהמודל מבצע בפועל, ולא בסריקת המשקולות.
סורגי ברזל סביב הסוכן
לנסות לנחש את הטריגר מראש או לבצע הנדסה לאחור למשקולות שלמות זו משימה אבודה. האיום הזה גם לא נוגע למי שעובד ישירות מול שירותי ענן סגורים דרך API רשמי של חברות כמו Anthropic או OpenAI, שבהם המשקולות מנוהלות ומנוטרות במקור. הסכנה מתחילה כשמורידים קובץ משקולות פתוח ומריצים אותו מקומית על המחשב עם סוכן קוד בעל הרשאות טרמינל מלאות.
הפתרון היחיד שעובד הוא בידוד סביבת הריצה של הסוכן. אם אתם נותנים למודל מקומי לקרוא כלים, חובה לכלוא את הסוכן בתוך מכולת Docker מבודדת, לנתק ממנו כל גישה לקובצי סודות ומפתחות SSH במחשב המארח, ולהגביל הרמטית את הגישה לרשת החיצונית. דלת אחורית יכולה לנסות לשלוח פקודה זדונית, אבל בלי הרשאות מערכת וחיבור רשת, היא פשוט תפלוט שגיאה שקטה.
המנעול צריך לשבת סביב הסוכן, לא בתוך המשקולות.
בסוף, המשקולות יכולות להיות חכמות מאוד, אבל המפתחות שלכם עדיין יושבים על הדיסק. אולי עדיף שהסוכן שלכם לא יידע איפה הם נמצאים.
מקורות
- How abliterated models can get you pwnedhttps://projectdiscovery.io/research/how-abliterated-models-can-get-you-pwned
- MoorAI: Backdoored models show up in what they dohttps://moorai.dev/blog/backdoored-models-show-up-in-what-they-do.html
- GitHubhttps://weba.co.il/tools/github/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.