خانه » CVE-2025-8747

CVE-2025-8747

Keras Safe_mode Bypass Allows Arbitrary Code Execution When Loading A Malicious Model.

توسط Vulnerbyte Alerts
6 بازدید
هشدار سایبری CVE-2025-8747

چکیده

آسیب‌پذیری در متد Model.load_model کتابخانه Keras امکان دورزدن حالت امن (safe_mode) را فراهم کرده و به مهاجم امکان اجرای کد دلخواه را هنگام بارگذاری یک مدل مخرب می‌دهد. به عبارت دیگر، مهاجم با ایجاد یک فایل مدل .keras خاص و فریب کاربر برای بارگذاری آن، می‌تواند کد دلخواه خود را روی سیستم قربانی اجرا کند.

توضیحات

آسیب‌پذیری CVE-2025-8747 در کتابخانه Keras  نسخه‌های 3.0.0 تا 3.10.0 ناشی از ضعف در مکانیزم deserialization داده‌های ناامن (مطابق باCWE-502) می باشد. این نوع آسیب پذیری زمانی رخ می‌دهد که داده‌هایی که توسط کاربر یا منابع غیرقابل اعتماد ارائه می‌شوند، بدون اعتبارسنجی مناسب به object قابل اجرا در برنامه تبدیل شوند. در این آسیب‌پذیری، مهاجم با ایجاد یک مدل مخرب با فرمت .keras می‌تواند کد دلخواه خود را هنگام بارگذاری مدل توسط کاربر اجرا کند، حتی اگر حالت safe_mode فعال باشد. Safe_mode که برای جلوگیری از اجرای کدهای ناخواسته طراحی شده، به دلیل محدودیت‌هایی در پیاده‌سازی، قابل دور زدن است و امکان فراخوانی توابع مخرب پایتون روی سیستم قربانی را فراهم می‌کند. به‌عنوان مثال، پیش از نسخه 3.9، مهاجم قادر بود از توابعی مثل heapq.nsmallest استفاده کند که با دادن آرگومان‌های خاص، امکان اجرای دستورات شل را فراهم می‌کرد. حتی در نسخه‌های بعدی هم برخی توابع داخلی Keras مانند keras.utils.get_file این قابلیت را دارند که فایل‌های مخرب را از اینترنت دانلود کرده و اجرا کنند. اثرات این آسیب‌پذیری بسیار گسترده است؛ مهم‌ترین آن اجرای کد دلخواه روی سیستم قربانی بوده که می‌تواند منجر به نفوذ کامل مهاجم به سیستم شود. این دسترسی به مهاجم اجازه می‌دهد داده‌های حساس را مشاهده کرده یا تغییر دهد، تنظیمات امنیتی را دستکاری کند و حتی کنترل شبکه داخلی را به دست آورد. علاوه بر این، امکان ایجاد اختلال در سرویس‌دهی و توقف عملکرد نرم‌افزار یا سیستم نیز وجود دارد که می‌تواند باعث آسیب‌های جدی به زیرساخت‌های مبتنی بر یادگیری ماشین شود. همچنین مهاجم با کنترل سیستم، قادر خواهد بود حملات پیچیده‌تر مانند نصب بدافزارهای بیشتر یا ایجاد بکدورها را پیاده‌سازی کند که ریسک امنیتی را به شدت افزایش می‌دهد.

اگرچه بارگذاری مدل‌های مخرب معمولاً به تعامل کاربر نیاز دارد اما در محیط‌های عملیاتی و توسعه‌ای که مدل‌ها از منابع غیرقابل اعتماد دریافت می‌شوند، احتمال بهره‌برداری بالا است. همچنین فعال بودن حالت safe_mode تضمینی برای جلوگیری از حمله نیست و مهاجم می‌تواند با تکنیک‌های خاص این مکانیزم را دور بزند. این موضوع نشان‌دهنده اهمیت بالای رعایت اصول اعتبارسنجی ورودی‌ها و اجرای فرآیندهای بارگذاری مدل در محیط‌های ایزوله است. خوشبختانه، این آسیب پذیری در نسخه 3.11.0 پچ شده است.

CVSS

Score Severity Version Vector String
8.6 HIGH 4.0 CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/AU:Y/R:A

 لیست محصولات آسیب پذیر

Versions Product
affected from 3.0.0 through 3.10.0 Keras

لیست محصولات بروز شده

Versions Product
version 3.11.0 or newer Keras

 نتیجه گیری

با توجه به شدت بالای آسیب‌پذیری و امکان اجرای کد دلخواه روی سیستم قربانی، توصیه می‌شود در اسرع وقت به نسخه‌ی 3.11.0 و بالاتر به‌روزرسانی کرده و از بارگذاری مدل‌های ناشناس و غیرقابل اعتماد اجتناب کنید. همچنین، اجرای مدل‌ها باید در محیط‌های ایزوله (Sandbox) صورت گیرد و دسترسی‌های برنامه محدود شود. مانیتورینگ فعالیت‌ها و استفاده از ابزارهای امنیتی برای شناسایی عملکردهای مشکوک نیز ضروری است.

به‌طور خاص، پیشنهاد می‌شود:

  • از  Docker یا محیط‌های مجازی‌سازی مشابه با محدودیت منابع و بدون دسترسی شبکه برای اجرای مدل‌ها استفاده شود.
  • مدل‌ها تنها از منابع معتبر و با تأیید هش (Checksum) یا امضای دیجیتال بارگذاری شوند.
  • قبل از بارگذاری، مدل‌ها در یک محیط میانی تحلیل و از عدم وجود کد مخرب اطمینان حاصل شود.
  • در محیط Python، ماژول‌های پرخطر مانند  os و  subprocess برای فرآیند بارگذاری غیرفعال شده یا از کتابخانه‌های امن‌سازی مانند  RestrictedPython استفاده شود.
  • با استفاده از AppArmor یا SELinux، دسترسی Keras به سیستم‌عامل محدود گردد.
  • لاگ‌گیری دقیق از فرآیند بارگذاری و رفتار پردازش‌ها انجام شده و توسط ابزارهایی مانند  Falco یا OSQuery پایش مداوم صورت گیرد.
  • در چرخه توسعه و استقرار (CI/CD)، تست امنیتی خودکار برای مدل‌های ورودی اضافه شود و تیم‌های توسعه و داده‌کاوی نسبت به خطرات deserialization  ناامن آموزش ببینند.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-8747
  2. https://www.cvedetails.com/cve/CVE-2025-8747/
  3. https://jfrog.com/blog/keras-safe_mode-bypass-vulnerability/
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-8747
  5. https://vuldb.com/?id.319396
  6. https://github.com/keras-team/keras/pull/21429
  7. https://cwe.mitre.org/data/definitions/502.html

همچنین ممکن است دوست داشته باشید

پیام بگذارید