سه نقص امنیتی در Diffusers؛ دروازه‌ای برای اجرای کد دلخواه

تیم تحقیقاتی Zafran Labs سه آسیب‌پذیری با شدت بالا را در کتابخانه Diffusers متعلق به Hugging Face شناسایی و تحت نام تجمیعی FaceHugger گزارش کرده‌اند. این نقص‌ها به مهاجم امکان می‌دهند با دورزدن پارامتر trust_remote_code، مخازن مدل دستکاری‌شده را وادار به اجرای کد دلخواه روی دستگاه‌هایی کنند که کتابخانه را بارگذاری می‌کنند.

اهمیت مسئله

Diffusers یک بستهٔ پایتون محبوب برای مدل‌های تولید تصاویر است و تنها در جولای ۲۰۲۶ بیش از ۸٫۱ میلیون بار دانلود شده است. با توجه به استفادهٔ گسترده از مخازن Hugging Face در خطوط تولید، CI/CD و تصاویر کانتینری، هر آسیب‌پذیری در این کتابخانه می‌تواند نقطهٔ ورود اولیه برای حملات زنجیرهٔ تأمین هوش مصنوعی باشد.

نمایی از کتابخانه Diffusers و مدل‌های منتشر شده در Hugging Face

ریشهٔ فنی: خطای TOCTOU و بررسی یک‌مرحله‌ای

تمام واریانت‌های اجرای کد از راه دور (RCE) مربوط به این مجموعه از نقص‌ها ناشی از طراحی دو مرحله‌ای دانلود مدل هستند؛ یعنی روند بررسیِ اعتماد تنها در مرحلهٔ اول انجام می‌شود. این نوع خطا که به Time-of-Check to Time-of-Use (TOCTOU) معروف است، اجازه می‌دهد میان دو درخواست HTTP پی‌درپی محتوای مخزن تغییر یابد و در نتیجه کنترلِ امنیتی trust_remote_code دور زده شود.

جزئیات آسیب‌پذیری‌ها (CVEها)

  • CVE-2026-44827 (CVSS 8.8) — تزریق کد از طریق جریان custom_pipeline با فایل pipeline نام‌گذاری‌شده «None.py»، حتی زمانی که trust_remote_code=False یا پارامتر حذف شده باشد.
  • CVE-2026-45804 (CVSS 7.5) — شرایط رقابتی که امکان تغییر پیکربندی بین فراخوانی‌های hf_hub_download و snapshot_download را فراهم می‌کند و منجر به واردشدن کد دلخواه به مخزن می‌شود.
  • CVE-2026-44513 (CVSS 8.8) — تزریق کد در جریان custom_pipeline که باز هم می‌تواند trust_remote_code=False را نادیده بگیرد.

گروه‌های در معرض خطر

هر کاربری که از DiffusionPipeline.from_pretrained با pipelineهای سفارشی استفاده کند در معرض خطر است. سازمان‌هایی که به‌طور خودکار مدل‌ها را از hub دانلود و در محیط‌های تولید یا کانتینری بارگذاری می‌کنند، باید فوراً وضعیت را بررسی کنند.

پچ و راهکارهای موقت

مشکلات در نسخهٔ Diffusers 0.38.0 که اوایل مهٔ ۲۰۲۶ منتشر شد برطرف شده‌اند. در صورت عدم امکان به‌روزرسانی فوری، نگهدارندگان پروژه و پژوهشگران راهکارهای موقت زیر را پیشنهاد می‌کنند:

  • تنها از from_pretrained همراه با pretrained_model_name_or_path، custom_pipeline و snapshotهای محلی استفاده کنید که از منابع کاملاً مورداعتماد و ممیزی‌شده تأمین شده‌اند.
  • از اشارهٔ custom_pipeline= به مخزنی غیر از pretrained_model_name_or_path خودداری کنید تا زمانی که محتوای pipeline را بررسی و تایید نکرده‌اید.
  • قبل از فراخوانی from_pretrained روی یک snapshot محلی، وجود فایل‌های *.py غیرمنتظره را بررسی کنید، به‌ویژه در زیرشاخه‌هایی مانند unet/، scheduler/ و در ریشهٔ snapshot.

پیامدها برای زنجیرهٔ تأمین هوش مصنوعی

این رخنه‌ها نشان می‌دهد که فایل‌های دانلودشده از مخازن مدل تنها «داده» نیستند؛ فایل‌های پیکربندی و loaderها می‌توانند به کد اجرایی تبدیل شوند و یک بارگذاری ساده را به بردار دسترسی اولیه تبدیل کنند. مدیریت ریسک مؤثر نیازمند تقویت سیاست‌های دریافت کد و مدل، ممیزی مخازن و قرنطینه‌سازی snapshotها در فرآیندهای DevSecOps است.

منابع فنی

برای مطالعهٔ بیشتر دربارهٔ اجرای کد از راه دور و TOCTOU به صفحات ویکی‌پدیا دربارهٔ Remote Code Execution و TOCTOU مراجعه کنید. کد منبع پروژهٔ Diffusers نیز در گیت‌هاب Diffusers در دسترس است.

اقدامات پیشنهادی برای تیم‌های فنی

  • فوراً کتابخانه‌ها را بررسی و در صورت امکان به نسخهٔ patched ارتقا دهید.
  • تا زمان به‌روزرسانی، قواعد سخت‌گیرانه در دانلود مدل، اسکن snapshotها و قرنطینه‌سازی منابع خارجی اعمال کنید.
  • فرآیندهای CI/CD را برای جلوگیری از دانلود خودکار از منابع غیرمطمئن بازبینی و محدود کنید.
  • تیم‌های توسعه و عملیات را در شناسایی و پاسخ به حملات زنجیرهٔ تأمین آموزش دهید.

چشم‌انداز: با رشد وابستگی به مخازن عمومی مدل، مدیریت حملات زنجیرهٔ تأمین هوش مصنوعی باید در رأس اولویت‌های امنیتی سازمان‌ها قرار گیرد؛ این مسئله نیازمند سرمایه‌گذاری هم‌زمان در ابزارها، سیاست‌ها و آموزش نیروی انسانی است.