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 מעניק תחושת ביטחון כוזבת.

צעדים מיידיים למפתחים

  1. קבעו גרסת Diffusers קבועה (Pinning) בקובץ requirements.txt או בקובץ ה-lock שלכם כדי למנוע שדרוגים מקריים לגרסה פגיעה.
  2. הימנעו ממושך מודלים "תוך כדי תנועה" (on-the-fly) בסביבת ייצור. הורידו מודלים למאגר ארטיפקטים (artifact store) מהימן (למשל, S3 bucket פנימי) וטענו אותם משם.
  3. בצעו ביקורת (Audit) למאגרי מודלים לפני השימוש. ודאו שקבצי הקוד של המודל תואמים ל-hashes הצפויים או מגיעים ממקור מאומת.
  4. אכיפו בקרת יציאת רשת (network egress controls) כך שסוכני בנייה (build agents) ושרתי inference לא יוכלו להגיע ל-hub הציבורי של Hugging Face אלא אם אישרתם זאת.
  5. הריצו טעינת מודלים בתוך containers מבודדים או sandboxes עם הרשאות מינימליות, כדי להגביל את ההשפעה של הרצת קוד זר.

שורה תחתונה:

באג ה-FaceHugger מראה שכיבוי trust_remote_code אינו מספיק. עד שתעדכנו את Diffusers ותחזקו (harden) את ה-pipeline של קליטת המודלים שלכם, כל משיכת מודל מרחוק נותרת נקודת כניסה פוטנציאלית לקוד זדוני.