CVE-2026-44827 به مهاجم اجازه می‌دهد هنگام بارگذاری یک مدل Hugging Face Diffusers، کد دلخواه اجرا کند، حتی اگر پرچم trust_remote_code غیرفعال باشد. محققان این نقص را “FaceHugger” نامیده‌اند و آن را به یک Race Condition در فرآیند دو مرحله‌ای بارگذاری مدل در این کتابخانه نسبت داده‌اند. هر خط لوله‌ای (pipeline) که مدل‌ها را از Hub دریافت می‌کند، می‌تواند تحت تأثیر قرار گیرد.

چرا این آسیب‌پذیری اهمیت دارد

Diffusers قدرت‌بخش مدل‌های متن-به-تصویر (text-to-image) و سایر مدل‌های انتشار (diffusion) است. در جولای ۲۰۲۶، این کتابخانه ۸.۱ میلیون دانلود را ثبت کرد، بنابراین تعداد بی‌شماری از وظایف CI/CD، ایمیج‌های کانتینر و سرویس‌های استنتاج سازمانی (enterprise inference services) به آن وابسته هستند. این باگ مکانیسم امنیتی اصلی (trust_remote_code) را که توسعه‌دهندگان برای مسدود کردن کدهای پایتون غیرقابل اعتمادِ همراه با مدل فعال می‌کنند، دور می‌زند.

نحوه عملکرد دور زدن (Bypass)

  • بارگذاری دو مرحله‌ای: Diffusers ابتدا پیکربندی مدل را دریافت می‌کند، سپس درخواست دوم، وزن‌های مدل و هر کد مرتبط با آن را فراخوانی می‌کند.
  • Race condition: بررسی امنیتی که درخواست اول را بازرسی می‌کند، شامل درخواست دوم نمی‌شود.
  • درج Payload: مهاجمی که درخواست دوم را کنترل می‌کند، کدی مخرب را تزریق می‌کند که کتابخانه بعداً آن را اجرا کرده و در نتیجه دروازه اعتماد را به‌طور کامل دور می‌زند.

از آنجایی که بررسی امنیتی فقط درخواست اولیه را می‌بیند، غیرفعال کردن trust_remote_code حس کاذب امنیت را ایجاد می‌کند.

اقدامات فوری برای توسعه‌دهندگان

  1. نسخه Diffusers را ثابت نگه دارید (Pin) در فایل requirements.txt یا فایل lock خود تا از ارتقای تصادفی به نسخه‌های آسیب‌پذیر جلوگیری شود.
  2. از دریافت مدل‌ها به‌صورت لحظه‌ای (on-the-fly) در محیط عملیاتی خودداری کنید. مدل‌ها را در یک مخزن آرتیفکت قابل اعتماد (مانند یک S3 bucket داخلی) دانلود کرده و از آنجا بارگذاری کنید.
  3. مخازن مدل را قبل از استفاده بازرسی کنید. تأیید کنید که فایل‌های کد مدل با هش‌های مورد انتظار مطابقت داشته باشند یا از یک منبع تأیید شده آمده باشند.
  4. کنترل‌های خروج شبکه (network egress controls) را اعمال کنید تا عامل‌های ساخت (build agents) و سرورهای استنتاج نتوانند به Hub عمومی Hugging Face دسترسی داشته باشند، مگر اینکه شما اجازه داده باشید.
  5. بارگذاری مدل را در کانتینرهای ایزوله یا Sandboxها با حداقل سطح دسترسی اجرا کنید تا تأثیر اجرای کدهای ناخواسته محدود شود.

نتیجه‌گیری:

باگ FaceHugger نشان می‌دهد که خاموش کردن trust_remote_code کافی نیست. تا زمانی که Diffusers را به‌روزرسانی نکنید و خط لوله دریافت مدل (model ingestion pipeline) خود را مقاوم‌سازی نکنید، هر بار دریافت مدل از راه دور، یک نقطه ورود بالقوه برای کدهای مخرب باقی می‌ماند.