خانه » CVE-2025-5197

CVE-2025-5197

Regular Expression Denial Of Service (ReDoS) In Huggingface/Transformers

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

چکیده

آسیب‌پذیری انکار سرویس با استفاده از عبارات منظم (ReDoS) در کتابخانه Hugging Face Transformers، تا نسخه 4.51.3 و به طور خاص در تابع convert_tf_weight_name_to_pt_weight_name() شناسایی شده است. این آسیب پذیری به دلیل استفاده از الگوی عبارات منظم `/[^/]*___([^/]*)/` رخ می‌دهد که با ورودی‌های دستکاری‌شده می‌تواند منجر به بازگشت فاجعه آمیز (catastrophic backtracking) و مصرف بیش از حد CPU شود. مهاجم می‌تواند فرآیندهای تبدیل مدل از TensorFlow به PyTorch را مختل کند و باعث اختلال در سرویس، مصرف بیش از حد منابع و آسیب‌پذیری‌های بالقوه در سرویس های API شود.

توضیحات

آسیب‌پذیری CVE-2025-5197 در تابع convert_tf_weight_name_to_pt_weight_name() از کتابخانه Hugging Face Transformers که وظیفه تبدیل نام‌های وزن از فرمت TensorFlow به فرمت PyTorch را دارد، ناشی از پیچیدگی ناکارآمد یک عبارت منظم مطابق با CWE-1333 است. الگوی عبارات منظم مورد استفاده `/[^/]*___([^/]*)/` در برابر ورودی‌های ساختگی، به ویژه رشته‌های طولانی یا رشته هایی با تعداد زیادی جداکننده (___)، دچار بازگشت فاجعه آمیز (catastrophic backtracking) می‌شود؛ در نتیجه مصرف پردازنده (CPU) به‌شدت افزایش یافته و می‌تواند منجر به انکار سرویس (DoS) شود.

این تابع در فرآیندهای تبدیل مدل بین TensorFlow (فریم ورک یادگیری ماشین گوگل برای مدل‌های گراف‌محور) و PyTorch (فریم ورک یادگیری ماشین فیسبوک برای مدل‌های دینامیک) استفاده می‌شود. مهاجم با ارسال نام‌های وزن دستکاری‌شده، مانند رشته‌هایی با بیش از 2048 کاراکتر یا بیش از 10 جداکننده، می‌تواند زمان پردازش را از چند ثانیه به چند دقیقه افزایش دهد و تمام منابع سرور را مصرف کند.

بهره‌برداری از این ضعف ساده و قابل خودکارسازی است؛ مهاجم می‌تواند به‌صورت از راه دور، بدون تعامل کاربر و بدون نیاز به دسترسی ویژه، با اسکریپت‌ها یا ابزارهای خودکار ورودی‌های مخرب را از طریق APIهای ارائه‌دهنده‌ی تبدیل مدل ارسال کند. پروتکل‌های API مانند REST (سبک معماری برای APIهای وب) که عملیات تبدیل مدل را در آشکار می کنند، هدف اصلی هستند. از آنجا که حمله وابسته به CPU است، محدودسازی صرفِ نرخ درخواست (rate limiting) همیشه کافی نیست. کد اثباتِ مفهومی (PoC) عمومی نیز منتشر شده است و نشان می‌دهد که با ورودی‌هایی مانند رشته‌های تکرارشونده می‌توان موتور عبارت منظم را تا حدی بارگذاری کرد که مصرف CPU به‌طور چشمگیری افزایش یابد.

پیامد اصلی این آسیب‌پذیری در دسترس پذیری با ایجاد اختلال در سرویس، مصرف بیش از حد منابع در سرورهای تبدیل مدل، تأثیر هم زمان بر چندین کاربر در محیط‌های اشتراکی، پشتیبان‌گیری صف‌های پردازش و اختلال در محیط‌های توسعه لوکال مانند IDEها یا نوت‌بوک‌های Jupyter است.

این ضعف تنها زمانی فعال می‌شود که تابع convert_tf_weight_name_to_pt_weight_name() فراخوانی شود. این آسیب پذیری با انتشار نسخه 4.53.0 به طور کامل پچ شده است. در پچ رسمی، یک شرط جدید برای بررسی طول نام (بیش از 2048 کاراکتر) و تعداد جداکننده‌ها (بیش از 10) اضافه شده و الگوی عبارت منظم با r”/[^/]*___([^/]*)/” بهینه‌سازی شده تا بازگشت فاجعه آمیز کاهش یابد.

CVSS

Score Severity Version Vector String
5.3 MEDIUM 3.0 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

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

Versions Product
affected before 4.53.0 huggingface/transformers

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

Versions Product
4.53.0 huggingface/transformers

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

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که Hugging Face Transformers را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
967 site:.ir “Hugging Face Transformers” Hugging Face Transformers

نتیجه گیری

این آسیب‌پذیری با شدت متوسط در Hugging Face Transformers، ریسک ReDoS (انکار سرویس با عبارات منظم) را به دلیل پیچیدگی ناکارآمد عبارات منظم افزایش می‌دهد و در سناریوهایی که فرآیندهای تبدیل مدل به اینترنت یا APIهای عمومی متصل هستند، می‌تواند باعث اختلال در سرویس یا مصرف بیش از حد منابع شود. با توجه به انتشار پچ امنیتی، اجرای اقدامات زیر برای جلوگیری از بهره‌برداری و کاهش سطح ریسک ضروری است:

  • به‌روزرسانی فوری: تمام محیط‌های مبتنی بر Transformers را به نسخه 4.53.0 یا بالاتر به‌روزرسانی کنید. به‌روزرسانی، اولین و مؤثرترین راهکار برای رفع آسیب‌پذیری است و باید در اولویت قرار گیرد. راهکارهای دیگر میتوانند برای این مشکل و موارد مشابه موثر باشند.
  • اعتبارسنجی ورودی: قبل از فراخوانی توابع تبدیل مدل، طول نام‌های وزن و تعداد جداکننده‌ها را بررسی کرده (مثلاً با شرط if len(tf_name) > 2048 or tf_name.count(“___”) > 10) و ورودی‌های مشکوک را رد کنید.
  • نظارت و ثبت لاگ: از ابزارهایی مانند Prometheus یا ELK Stack (مجموعه‌ای شامل Elasticsearch، Logstash و Kibana برای نظارت و ثبت لاگ‌ها) برای نظارت بر مصرف CPU در فرآیندهای مدل استفاده کنید. همچنین، لاگ‌های عبارات منظم را با سطح جزئیات INFO بررسی کنید تا الگوهای backtracking (بازگشت در پردازش) را شناسایی شوند.
  • ایزوله‌سازی محیط‌ها: فرآیندهای تبدیل مدل را در کانتینرهای ایزوله مانند Docker اجرا کنید و دسترسی API را با فایروال اپلیکیشن وب (WAF) مانند Cloudflare یا ModSecurity محدود سازید تا حملات وابسته به CPU فیلتر شوند.
  • محدودیت نرخ و اعتبارسنجی: در APIهای REST، نرخ درخواست‌ها را محدود کنید و ورودی‌های عبارات منظم را با ابزارهایی مانند OWASP Java Encoder یا عبارات منظم بهینه‌شده (non-backtracking patterns) اعتبارسنجی نمایید.
  • آموزش توسعه‌دهندگان: تیم‌های توسعه را درباره‌ی ریسک ReDoS در عبارات منظم پیچیده و ضرورت استفاده از الگوهای بهینه (مانند possessive quantifiers) در کتابخانه‌های ML آموزش دهید.

اجرای این اقدامات، به‌ویژه به‌روزرسانی سریع نسخه‌ها و اعتبارسنجی دقیق ورودی‌ها، ریسک بهره‌برداری از این آسیب‌پذیری را به‌طور چشمگیری کاهش داده و امنیت فرآیندهای تبدیل مدل در اپلیکیشن‌های Hugging Face Transformers را به‌صورت قابل‌توجهی افزایش می‌دهد.

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

Initial Access (TA0001)

مهاجم می‌تواند ورودی‌های نام وزنِ ساختگی را از طریق رابط‌های در معرض شبکه مثلاً API های تبدیل مدل یا عملیات آپلود/ایمپورت فایل مدل ارسال کند. در نتیجه هر سرویس یا API که این تابع را بدون اعتبارسنجی فراخوانی کند، نقطه دسترسی اولیه می‌باشد.

Discovery (TA0007)

مهاجم می‌تواند با ارسال درخواست‌های پروب یا پاسخ‌خوانی خطاها و زمان‌های پاسخ (timing) وضعیت سیستم و وجود endpointهای تبدیل مدل را کشف کند؛ تاخیر یا افزایش زمان پاسخ هنگام تبدیل نام‌های وزن می‌تواند نشانگر وجود آسیب‌پذیری در آن سرویس باشد و اطلاعات لازم برای هدف‌گیری دقیق‌تر را فراهم کند.

Defense Evasion (TA0005)

حملات مبتنی بر ReDoS معمولاً شواهد کم و رفتار شبیه بار طبیعی دارند؛ مهاجم می‌تواند ترافیک را با نرخ پایین یا به‌صورت پراکنده ارسال کند تا از قواعد ساده rate-limit یا قواعد ساده WAF عبور کند.

Impact (TA0040)

اثر اصلی فنی این ضعف کاهش یا از دسترس خارج شدن خدمات (Availability — Denial of Service) است؛ تبدیل‌های مدل، APIهای عمومی و محیط‌های توسعه مشترک می‌توانند به‌طور کامل یا جزئی از کار بیفتند، صف‌های پردازش پُر شوند و کاربران متعدد تحت تأثیر قرار گیرند. پیامد عملیاتی شامل توقف سرویس، کاهش کیفیت سرویس و بار اضافی روی اپراتورها است.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-5197
  2. https://www.cvedetails.com/cve/CVE-2025-5197/
  3. https://huntr.com/bounties/3f8b3fd0-166b-46e7-b60f-60dd9d2678bf
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-5197
  5. https://vuldb.com/?id.319039
  6. https://github.com/huggingface/transformers/commit/944b56000be5e9b61af8301aa340838770ad8a0b
  7. https://nvd.nist.gov/vuln/detail/CVE-2025-5197
  8. https://cwe.mitre.org/data/definitions/1333.html

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

پیام بگذارید