CVE-2026-44827 מאפשר לתוקף להריץ קוד שרירותי בעת טעינת מודל Hugging Face Diffusers, גם אם דגל ה-trust_remote_code כבוי. חוקרים כינו את הפרצה "FaceHugger" וייחסו אותה למצב מרוץ (race condition) בתהליך טעינת המודל הדו-שלבי של הספרייה. כל pipeline שמושך מודלים מה-hub עלול להיות מושפע.
למה הפגיעות הזו חשובה
Diffusers מניע מודלים של text-to-image ומודלים של diffusion אחרים. ביולי 2026 נרשמו בו 8.1 מיליון הורדות, כך שאינספור תהליכי CI/CD, container images ושירותי inference ארגוניים תלויים בו. הבאג עוקף את מנגנון הבטיחות העיקרי (trust_remote_code) שמפתחים מפעילים כדי לחסום קוד Python לא מהימן המגיע יחד עם המודל.
איך המעקף עובד
- טעינה דו-שלבית: Diffusers מושך תחילה הגדרת מודל (configuration), ולאחר מכן בקשה שנייה מושכת את משקלי המודל (weights) וכל קוד נלווה.
- מצב מרוץ (Race condition): בדיקת האבטחה שבוחנת את הבקשה הראשונה אינה חלה על השנייה.
- הזרקת Payload: תוקף השולט בבקשה השנייה מזריק קוד זדוני שהספרייה מריצה מאוחר יותר, ובכך עוקף לחלוטין את מנגנון האמון (trust gate).
מכיוון שהבדיקה בוחנת רק את הבקשה הראשונית, ביטול trust_remote_code מעניק תחושת ביטחון כוזבת.
צעדים מיידיים למפתחים
- קבעו גרסת Diffusers קבועה (Pinning) בקובץ
requirements.txtאו בקובץ ה-lock שלכם כדי למנוע שדרוגים מקריים לגרסה פגיעה. - הימנעו ממושך מודלים "תוך כדי תנועה" (on-the-fly) בסביבת ייצור. הורידו מודלים למאגר ארטיפקטים (artifact store) מהימן (למשל, S3 bucket פנימי) וטענו אותם משם.
- בצעו ביקורת (Audit) למאגרי מודלים לפני השימוש. ודאו שקבצי הקוד של המודל תואמים ל-hashes הצפויים או מגיעים ממקור מאומת.
- אכיפו בקרת יציאת רשת (network egress controls) כך שסוכני בנייה (build agents) ושרתי inference לא יוכלו להגיע ל-hub הציבורי של Hugging Face אלא אם אישרתם זאת.
- הריצו טעינת מודלים בתוך containers מבודדים או sandboxes עם הרשאות מינימליות, כדי להגביל את ההשפעה של הרצת קוד זר.
שורה תחתונה:
באג ה-FaceHugger מראה שכיבוי trust_remote_code אינו מספיק. עד שתעדכנו את Diffusers ותחזקו (harden) את ה-pipeline של קליטת המודלים שלכם, כל משיכת מודל מרחוק נותרת נקודת כניסה פוטנציאלית לקוד זדוני.
