خانه » CVE-2025-9905

CVE-2025-9905

Arbitary Code Execution In Keras Load_model()

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

چکیده

یک آسیب‌پذیری در متد Load_model() کتابخانه Keras نسخه‌های 3.0.0 تا 3.11.2 به دلیل نادیده گرفتن پارامتر safe_mode=True هنگام بارگذاری فایل‌های .h5 و .hdf5 شناسایی شده است. این ضعف امنیتی به مهاجم اجازه می‌دهد که یک فایل مدل .h5 مخرب ایجاد کند که هنگام بارگذاری، حتی با فعال بودن safe_mode=True، کد دلخواه(ACE)  را با همان مجوزهای فرآیند Keras اجرا می کند.

توضیحات

آسیب‌پذیری CVE-2025-9905 در کتابخانه Keras که یک کتابخانه پرکاربرد در حوزه یادگیری عمیق است، ناشی از عدم کنترل مناسب منابع کد داینامیک هنگام بارگذاری مدل‌ها می‌باشد. این آسیب پذیری مطابق با CWE-913 طبقه‌بندی می‌شود که به طور خاص به ضعف در اعتبارسنجی منابع خارجی یا کدهای داینامیک اشاره دارد.

این ضعف در نسخه‌های 3.0.0 تا 3.11.2 وجود دارد و روی فرمت‌های .h5 و .hdf5تأثیر می‌گذارد. این فرمت‌ها به دلیل نیاز به سازگاری با نسخه‌های قبلی (backwards compatibility) همچنان در Keras 3 پشتیبانی می‌شوند.

در متد load_model، پارامتر safe_mode=True که هدف آن جلوگیری از بارگذاری کدهای مخرب است، هنگام بارگذاری مدل‌های با فرمت .h5 نادیده گرفته می‌شود. این پارامتر که به متد legacy_h5_format.load_model_from_hdf5 ارجاع داده می‌شود، به هیچ‌وجه از safe_mode استفاده نکرده و امکان بارگذاری کدهای مخرب را فراهم می کند.

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

کد اثبات مفهومی (PoC) منتشر شده نشان می‌دهد که مهاجم می‌تواند با استفاده از Lambda Layer در Keras، کد دلخواه را در مدل جاسازی کرده و با استفاده از دستور exec() پایتون آن را اجرا کند. تیم Keras این آسیب پذیری را در نسخه 3.11.3 پچ کرده است. در این نسخه، safe_mode به کد legacy h5 منتقل شده و اگر فرمت فایل نامناسب باشد، خطای مربوطه به کاربر نمایش داده می‌شود.

CVSS

Score Severity Version Vector String
7.3 HIGH 4.0 CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

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

 

Versions Product
affected from 3.0.0 through 3.11.2 Keras

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

Versions Product
affected from 3.0.0 through 3.11.2 Keras

 استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که “Keras library” و ” deep learning” را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Product
222 “Keras library” “deep learning”

 نتیجه گیری

این آسیب‌پذیری در کتابخانه Keras می‌تواند تهدیدی جدی برای امنیت سیستم‌هایی باشد که از فرمت‌های .h5 و .hdf5 استفاده می‌کنند برای کاهش ریسک و جلوگیری از بهره‌برداری، اقدامات زیر توصیه می‌شود:

  • به‌روزرسانی فوری: به‌روزرسانی به نسخه‌های پچ‌شده Keras (11.3 و بالاتر) انجام شود که در آن، safe_mode به درستی در کد legacy برای فایل‌های .h5 اعمال شده و در صورت استفاده از این فرمت‌ها، خطای مناسب نمایش داده می‌شود.
  • اجتناب از فرمت .h5: در صورت امکان از استفاده از فایل‌های .h5 و .hdf5 خودداری شده و از فرمت‌های جدیدتر و ایمن‌تر استفاده کنید. همچنین safe_mode=True را همیشه فعال نگه دارید.
  • بررسی مدل‌ها: مدل‌های دانلودشده از منابع ناشناخته را قبل از بارگذاری اسکن کنید.
  • محدودسازی مجوزها: Keras را با مجوزهای محدود (least privileges) اجرا کنید تا تأثیر RCE کاهش یابد.
  • نظارت بر فرآیند: فرآیندهای Keras را برای اجرای دستورات مشکوک (مانند shell یا exec) نظارت کنید.

اجرای این اقدامات به طور چشمگیری ریسک اجرای کد دلخواه از راه دور را کاهش داده و امنیت سیستم‌های مبتنی بر Keras را تقویت می‌کند.

امکان استفاده در تاکتیک های Mitre Atatck

Initial Access (TA0001)

ورود اولیه معمولاً از طریق فایل مدل آلوده‌ی ‎.h5/.hdf5 انجام می‌شود که از کانال‌هایی مثل ایمیل، ریپازیتوری‌های مدل، یا اشتراک داخلی منتقل می‌گردد. سناریو متکی به اجرای دستیِ بارگذاری مدل توسط کاربر است؛ با باز شدن فایل در محیط Keras، زنجیره‌ی حمله فعال می‌شود.

Execution (TA0002)

به‌دلیل اعمال‌نشدن مؤثرِ ‎safe_mode در مسیر legacy ‎H5، محتوای مخربِ مدل هنگام ‎load_model() در کانتکست فرآیند پایتون /Keras  اجرا می‌شود

Persistence (TA0003)

پایداری ذاتی نیست، اما مهاجم می‌تواند پس از اجرا با ایجاد اسکریپت‌های استارت‌آپ، زمان‌بندی تسک‌ها، تغییر پکیج‌ها/وابستگی‌ها یا رهاسازی backdoor در کُد/محیط مجازی ماندگاری ایجاد کند.

Defense Evasion (TA0005)

بارِ مخرب می‌تواند داخل ساختار مدل مخفی/مبهم شود، نام‌گذاریِ لایه‌ها مشروع به‌نظر برسد، و لاگ‌ها/فایل‌های موقت پس از اجرا پاک یا دستکاری شوند؛ همچنین استفاده از توابع بومی پایتون برای شباهت به رفتار عادی مؤثر است.

Credential Access (TA0006)

اجرای کُد در همان کانتکست می‌تواند به متغیرهای محیطی، فایل‌های کانفیگ، توکن‌های ابری /API  و کش‌های محلی دسترسی یابد و اسرار را استخراج کند.

Lateral Movement (TA0008)

در محیط‌های تیمی/سروری، مهاجم می‌تواند با توکن‌ها/SSH keys/اعتبارنامه های به‌دست‌آمده به سامانه‌های هم‌جوار (جوبا‌ترنل‌ها، سرورهای آموزش/استنتاج، ذخیره‌سازها) حرکت کند.

Exfiltration (TA0010)

خروج داده‌ها از طریق درخواست‌های HTTP/HTTPS، کلاینت‌های ابری پیکربندی‌شده یا کانال‌های موجود در محیط انجام می‌شود و می‌تواند زمان‌بندی/تکه‌تکه شود تا جلب توجه نکند.

Command and Control (TA0011)

در صورت استقرار پایدار، اسکریپت می‌تواند تماس دوره‌ای وب برقرار کند، دستورات را دریافت و نتایج را بازگشت دهد؛ در سناریوهای کوتاه‌عمر، اجرای یک‌باره بدون کانال دائم رایج‌تر است.

Impact (TA0040)

پیامدها شامل اجرای کُد دلخواه در میزبان، افشای داده‌های حساس/اسرار، دست‌کاری نتایج/مدل‌ها و اختلال در جریان‌های آموزش/استنتاج است؛ در محیط‌های عملیاتی، آلودگی زنجیره داده/مدل می‌تواند به تصمیم‌گیری‌های نادرست و تبعات سازمانی منجر شود

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-9905
  2. https://www.cvedetails.com/cve/CVE-2025-9905/
  3. https://github.com/keras-team/keras/security/advisories/GHSA-36rr-ww3j-vrjv
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-9905
  5. https://vuldb.com/?id.325004
  6. https://github.com/keras-team/keras/pull/21602
  7. https://nvd.nist.gov/vuln/detail/CVE-2025-9905
  8. https://cwe.mitre.org/data/definitions/913.html

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

پیام بگذارید

send
سوالی دارید؟
می تونید از من بپرسید 👋 ×