- شناسه CVE-2025-9959 :CVE
- CWE-94 :CWE
- yes :Advisory
- منتشر شده: سپتامبر 3, 2025
- به روز شده: سپتامبر 3, 2025
- امتیاز: 7.6
- نوع حمله: Code injection
- اثر گذاری: Unknown
- حوزه: برنامه نویسی
- برند: JFrog
- محصول: Smolagents
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
آسیبپذیری در smolagents نسخههای پیش از 1.21.0به دلیل عدم اعتبارسنجی ویژگیهای dunder است که به مهاجم امکان فرار از سندباکس (Sandbox Escape) محیط اجرای لوکال Python را می دهد. این ضعف مستلزم تزریق پرامپت برای فریب ایجنت به ایجاد و اجرای کد مخرب است و میتواند منجر به اجرای کد دلخواه روی سیستم میزبان شود.
توضیحات
آسیبپذیری CVE-2025-9959 در smolagents، پلتفرم ایجنت کدگذاری خودکار مبتنی بر هوش مصنوعی، ناشی از کنترل ناکافی ایجاد کد (مطابق با CWE-94) در محیط اجرای لوکال Python است. این ضعف در نسخههای پیش از 1.21.0 وجود دارد و مهاجمان میتوانند با استفاده از تزریق پرامپت (prompt injection)، ایجنت را فریب دهند تا کد مخرب ایجاد و اجرا شود و به این ترتیب از محدودیتهای سندباکس محیط Python فرار کنند.
این آسیبپذیری به دلیل عدم اعتبارسنجی ویژگیهای dunder مانند __getattribute__ و __bases__ رخ میدهد. مهاجم با زنجیرهای از فراخوانیها میتواند به کلاسهای حساس سیستم، از جمله subprocess.Popen، دسترسی پیدا کرده و دستورات سیستمی دلخواه را اجرا کند. این حمله به صورت از راه دور و بدون نیاز به احراز هویت قابل انجام است، اما مستلزم تعامل کاربر و تزریق پرامپت می باشد.
کد اثبات مفهوم (PoC) نشان میدهد که مهاجمان میتوانند با استفاده از LocalPythonExecutor، ابزارها را ارسال کنند و سپس با پرامپت مخرب، تابع dummy ایجاد کرده و از طریق __getattribute__ و __bases__ به کلاس subprocess.Popen دسترسی یابد که امکان اجرای دستورات سیستمی مانند curl به سرور کنترلشده را فراهم میکند. این حمله تأیید میکند که مهاجم میتواند خروجی را به سرور خود ارسال کرده و از سندباکس فرار کند. تأثیرات این آسیبپذیری شامل نقض محرمانگی به معنای سرقت دادههای کاربر، یکپارچگی با امکان تغییر عملکرد ایجنت و دسترسپذیری با امکان اختلال در اجرای کد است که میتواند منجر به سرقت اطلاعات حساس یا کنترل سیستم میزبان شود.
توسعهدهندگان smolagents این آسیب پذیری را در نسخه 1.21.0 با بهبود اعتبارسنجی ویژگیهای dunder و مسدود کردن فراخوانیهای مخرب برطرف کردهاند.
CVSS
Score | Severity | Version | Vector String |
7.6 | HIGH | 3.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L |
لیست محصولات آسیب پذیر
Versions | Product |
affected from 0 before 1.21.0 | smolagents |
لیست محصولات بروز شده
Versions | Product |
1.21.0 and later | smolagents |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که smolagents را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
Approx. Usage in .ir Domain via Google
(Total Pages) |
Product |
43 | smolagents |
نتیجه گیری
با توجه به ماهیت این آسیبپذیری و امکان فرار از سندباکس و اجرای کد دلخواه در smolagents 1.21.0، اقدامات زیر برای کاهش ریسک و محافظت از سیستمها توصیه میشود:
- به روزرسانی به نسخه امن: به روزرسانی smolagents به نسخه 1.21.0 یا بالاتر که شامل اصلاح اعتبارسنجی ویژگیهای dunder و مسدودسازی فراخوانیهای مخرب است، تا امکان سوءاستفاده از آسیبپذیری از بین برود.
- محدودسازی محیطهای اجرای لوکال Python: در هنگام ایجاد ایجنتهای CodeAgent، از محیطهای اجرای دیگر مانند wasm executor استفاده کنید تا نیازی به اجرای لوکال Python نباشد.
- بررسی و کنترل تزریق پرامپت: ورودیهای پرامپت به ایجنتها باید اعتبارسنجی و فیلتر شوند تا از اجرای کد مخرب جلوگیری شود و ریسک فرار از سندباکس کاهش یابد.
- مانیتورینگ و لاگگیری: فعالیتهای غیرمعمول ایجنتها و تلاشهای مشکوک برای اجرای کد باید ثبت و نظارت شوند تا اقدامات پاسخ سریع به تهدیدات ممکن شود.
- آموزش و آگاهی تیم توسعه: توسعهدهندگان باید با ریسکهای مرتبط با ویژگیهای dunder و فرار از سندباکس آشنا باشند و بهترین شیوه های برنامهنویسی امن را رعایت کنند.
اجرای این اقدامات بهطور مستقیم ریسک سوءاستفاده از آسیبپذیری را کاهش داده و امنیت، یکپارچگی و در دسترسپذیری سیستمهای مبتنی بر smolagents را تضمین میکند.
امکان استفاده در تاکتیک های Mitre Attack
- Initial Access (TA0001)
مهاجم میتواند با ارسال پرامپت مخرب به ایجنت Smolagents، دسترسی اولیه برای اجرای کد دلخواه روی سیستم میزبان را ایجاد کند. - Execution (TA0002)
با بهرهبرداری از ویژگیهای dunder در محیط Local Python، ایجنت کد مخرب را تولید و اجرا میکند و این منجر به اجرای کد از راه دور (RCE) روی سیستم میزبان میشود. - Persistence (TA0003)
پس از اجرای موفق کد، مهاجم میتواند سرویسها یا پردازههای مخرب ایجاد کند تا دسترسی پایدار به سیستم میزبان داشته باشد. این امر به پیکربندی محیط و سطح دسترسی ایجنت بستگی دارد. - Privilege Escalation (TA0004)
اگر ایجنت با دسترسیهای بالا اجرا شود، کد مخرب میتواند دسترسی مهاجم را افزایش دهد و کنترل بیشتری روی سیستم داشته باشد. - Collection (TA0009)
اطلاعات حساس مانند دادههای کاربر یا متادیتا ممکن است توسط کد مخرب جمعآوری و ارسال شود. - Command and Control (TA0011)
کد مخرب اجرا شده توسط ایجنت میتواند با سرور مهاجم ارتباط برقرار کند و کنترل سیستم میزبان را از راه دور در اختیار مهاجم قرار دهد. - Impact (TA0040)
پیامدهای اصلی شامل نقض محرمانگی (سرقت دادهها)، نقض یکپارچگی (تغییر عملکرد ایجنت یا سیستم)، و نقض دسترسپذیری (اختلال یا توقف اجرای کد) است.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-9959
- https://www.cvedetails.com/cve/CVE-2025-9959/
- https://research.jfrog.com/vulnerabilities/smolagents-local-python-sandbox-escape-jfsa-2025-001434277/
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-9959
- https://vuldb.com/?id.322426
- https://github.com/huggingface/smolagents/pull/1551
- https://nvd.nist.gov/vuln/detail/CVE-2025-9959
- https://cwe.mitre.org/data/definitions/94.html