- شناسه CVE-2025-68668 :CVE
- CWE-693 :CWE
- yes :Advisory
- منتشر شده: دسامبر 26, 2025
- به روز شده: دسامبر 26, 2025
- امتیاز: 9.9
- نوع حمله: Sandbox Bypass
- اثر گذاری: Arbitrary Command Execution with Application Privileges
- حوزه: نرم افزارهای کاربردی
- برند: n8n-io
- محصول: n8n
- وضعیتPublished :CVE
- No :POC
- وضعیت آسیب پذیری: patch شده
چکیده
یک آسیبپذیری بحرانی در Code Node مبتنی بر Python در n8n به دلیل دور زدن محیط ایزوله Pyodide شناسایی شده است که به کاربران احراز هویتشده با دسترسی ویرایش گردشکار امکان اجرای دستورات دلخواه سیستمعامل با سطح دسترسی n8n را میدهد و میتواند به کنترل کامل سیستم، افشای دادههای حساس و ایجاد اختلال در سرویس منجر شود.
توضیحات
آسیبپذیری CVE-2025-68668 ناشی از ضعف در مکانیزم حفاظتی (Protection Mechanism Failure) مطابق با CWE-693 در Code Node مبتنی بر Python پلتفرم متنباز n8n است. این ضعف در نسخههای 1.0.0 تا پیش از 2.0.0، زمانی رخ می دهد که کد Python با استفاده از Pyodide (یک محیط اجرای Python مبتنی بر WebAssembly که در مرورگر یا محیط ایزوله اجرا میشود) اجرا میشود.
در این پیادهسازی، محیط ایزوله (Sandbox) قادر به جلوگیری کامل از دسترسی به منابع میزبان نیست. بهعبارت دیگر، کاربران احراز هویتشده که مجوز ایجاد یا ویرایش گردشکار (Workflow) دارند، میتوانند با تزریق کد مخرب Python، دستورات دلخواه سیستمعامل را روی میزبان n8n اجرا کنند. این دستورات با همان سطح دسترسی فرآیند n8n (معمولاً کاربر سرویس یا کانتینر) اجرا میشوند و محدودیتهای امنیتی محیط ایزوله را دور میزنند.
بهرهبرداری از این ضعف نسبتا ساده است. مهاجم نیاز به یک حساب کاربری معتبر با دسترسی ویرایش گردشکار دارد و میتواند حملهای از راه دور و بدون نیاز به تعامل کاربر انجام دهد. پیامدهای این آسیب پذیری تاثیر بالا بر محرمانگی، یکپارچگی و تاثیر محدود بر در دسترس پذیری است و میتواند منجر به اجرای دستورات سیستمعامل، خواندن و نوشتن فایلها روی میزبان، استخراج کلیدهای حساس، ایجاد بکدور، تغییر گردشکارها یا حتی اختلال در سرویس شود. این آسیبپذیری تنها در استقرارهایی قابل بهرهبرداری است که Python Code Node فعال باشد و حالت legacy Pyodide مورد استفاده قرار گیرد. با انتشار نسخه 2.0.0، این ضعف بهطور کامل پچ شده و اجرای کد Python در Code Node اکنون بهصورت ایزوله و امن از طریق task runner مبتنی بر native Python انجام میشود. قابلیت استفاده از این مدل ایزوله از نسخه 1.111.0 به صورت گزینه اختیاری ارائه شده و از نسخه 2.0.0 بهطور پیشفرض فعال است که امنیت اجرای کد و جداسازی محیط Python را بهطور چشمگیری افزایش میدهد.
CVSS
| Score | Severity | Version | Vector String |
| 9.9 | CRITICAL | 3.1 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L |
لیست محصولات آسیب پذیر
| Versions | Product |
| affected at >= 1.0.0, < 2.0.0 | n8n |
لیست محصولات بروز شده
| Versions | Product |
| 2.0.0 | n8n |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که n8n را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google
(Total Pages) |
Search Query (Dork) | Product |
| 59,000 | site:.ir “n8n” | n8n |
نتیجه گیری
این آسیبپذیری بحرانی در n8n به کاربران احراز هویتشده با دسترسی ایجاد یا ویرایش گردشکار اجازه میدهد با دور زدن محیط ایزوله Python Code Node در پیادهسازی Pyodide، دستورات دلخواه سیستمعامل را با سطح دسترسی فرآیند n8n اجرا کنند. بهرهبرداری موفق میتواند منجر به کنترل کامل سرور، افشای اطلاعات حساس، دستکاری گردشکارها و اختلال در سرویس شود. با توجه به انتشار پچ امنیتی رسمی، اجرای اقدامات زیر برای جلوگیری از آسیب پذیری و کاهش ریسک فوری ضروری است:
- بهروزرسانی فوری: تمام نمونههای n8n را به نسخه 0.0 یا بالاتر بهروزرسانی کنید. در این نسخه، اجرای Python بهطور پیشفرض از task runner مبتنی بر native Python استفاده میکند که ایزولهسازی بسیار امنتری ارائه میدهد. این اقدام مؤثرترین و قطعیترین راهکار برای رفع آسیبپذیری است و باید در اولویت قرار گیرد. سایر اقدامات نقش مکمل را دارند و میتوانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
- فعالسازی task runner در نسخههای قدیمیتر: در نسخههای 111.0 و بالاتر، متغیرهای محیطی N8N_RUNNERS_ENABLED=true و N8N_NATIVE_PYTHON_RUNNER=true را تنظیم کنید تا اجرای Python به محیط ایزوله task runner منتقل شود.
- غیرفعال کردن پشتیبانی Python در Code Node: در صورت عدم نیاز، متغیر N8N_PYTHON_ENABLED=false را فعال کنید.
- غیرفعال کردن کامل Code Node: در صورتی که ویرایشگران گردشکار کاملاً مورد اعتماد نیستند، Code Node را با تنظیم متغیر محیطی NODES_EXCLUDE=[“n8n-nodes-base.code”] غیرفعال کنید.
- اصل حداقل دسترسی: مجوز ایجاد، ویرایش و اجرای گردشکارها را تنها به کاربران مورد اعتماد محدود کنید و از حسابهای با حداقل دسترسی برای عملیات روزمره استفاده نمایید.
- ایزولهسازی محیط اجرا: n8n را در کانتینرهای ایزوله مانند Docker یا Kubernetes با حداقل مجوزها اجرا کنید تا سطح دسترسی فرآیند به سیستمعامل، فایلسیستم و شبکه محدود شود.
- نظارت و ثبت لاگ پیشرفته: اجرای Code Node ، تغییرات گردشکارها و دستورات مشکوک را بهطور مستمر مانیتور کنید و از سیستمهای تشخیص نفوذ (IDS) و ثبت لاگ امنیتی استفاده نمایید.
- بازبینی گردشکارها: گردشکارها را بهصورت دورهای بررسی کنید و از ابزارهای اسکن امنیتی (مانند Nuclei) برای شناسایی الگوهای مخرب استفاده نمایید.
اجرای سریع بهروزرسانی همراه با اعمال راهکارهای مکمل، ریسک بهرهبرداری از این آسیب پذیری را حداقل رسانده و امنیت استقرارهای n8n را بهطور قابلتوجهی افزایش میدهد.
امکان استفاده در تاکتیک های Mitre Attack (در زمان اجرای حمله)
Initial Access (TA0001)
در بهرهبرداری از CVE-2025-68668، دسترسی اولیه از مسیر کاملاً مجاز اما پرخطر حاصل میشود؛ به این معنا که مهاجم از قبل دارای حساب کاربری معتبر در سامانه n8n است و امکان ایجاد یا ویرایش گردشکار برای او فعال شده است. شرط اساسی این مرحله، اجرای n8n بهصورت self-hosted، فعال بودن Python Code Node و استفاده از پیادهسازی مبتنی بر Pyodide در نسخههای آسیبپذیر است. در چنین وضعیتی، مهاجم بدون نیاز به نفوذ شبکهای یا دور زدن احراز هویت، صرفاً با تکیه بر اختیارات تعریفشده در سطح کاربرد وارد چرخه حمله میشود.
Execution (TA0002)
در مرحله اجرای حمله، کد Python تزریقشده در Code Node اجرا میشود و به دلیل ضعف در مکانیزم ایزولهسازی Pyodide، از محدوده sandbox خارج میگردد. این تاکتیک زمانی قابل تحقق است که محیط اجرا نتواند مرز مشخصی میان کد کاربر و منابع میزبان ایجاد کند و فرآیند n8n اجازه اجرای دستورات سیستمی را داشته باشد. در این شرایط، کدی که ظاهراً برای پردازش داده طراحی شده، عملاً به دستورات سیستمعامل ترجمه شده و با سطح دسترسی برنامه اجرا میشود.
Privilege Escalation (TA0004)
پس از اجرای موفق کد، مهاجم بهطور عملی به سطح دسترسی فرآیند n8n دست مییابد که معمولاً فراتر از نقش کاربری اولیه اوست. این ارتقا نه از طریق تغییر مستقیم سطح دسترسی حساب، بلکه به دلیل شکست در جداسازی محیط اجرایی رخ میدهد. شرط تحقق این تاکتیک آن است که فرآیند n8n با مجوزهای قابلتوجهی روی میزبان یا کانتینر اجرا شده باشد و محدودیتهای اضافی در سطح سیستمعامل یا runtime اعمال نشده باشند؛ در نتیجه، مهاجم میتواند از جایگاه یک کاربر عادی به توان عملیاتی یک سرویس سیستمی برسد.
Discovery (TA0007)
با تثبیت امکان اجرای دستور، مهاجم قادر خواهد بود اطلاعاتی درباره محیط میزبان به دست آورد؛ از جمله ساختار فایلها، تنظیمات اجرایی و متغیرهای محیطی. این مرحله زمانی مؤثر است که دسترسی به منابع داخلی مسدود نشده و نظارت دقیقی بر رفتار Code Node وجود نداشته باشد. چنین کشفی به مهاجم کمک میکند تا دامنه نفوذ خود را دقیقتر تنظیم کرده و تصمیم بگیرد کدام منابع ارزش بیشتری برای سوءاستفاده دارند.
Persistence (TA0003)
در ادامه، امکان ایجاد ماندگاری از طریق تغییر گردشکارها یا افزودن منطق مخرب در Code Node فراهم میشود. این تاکتیک زمانی عملی است که تغییرات ایجادشده توسط کاربر ذخیره شده و بهصورت خودکار در اجرایهای بعدی گردشکار فعال بمانند. نبود بازبینی منظم گردشکارها و اعتماد بیش از حد به کدهای تعریفشده توسط کاربران، شرایط لازم برای پایداری حضور مهاجم در سامانه را فراهم میکند.
Impact (TA0040)
پیامد نهایی نهایی آن است که میتواند به کنترل مؤثر سامانه منجر شود. اجرای دستورات دلخواه سیستمعامل با سطح دسترسی n8n باعث نقض همزمان محرمانگی و یکپارچگی میشود و در برخی سناریوها میتواند در دسترسپذیری سرویس نیز اختلال ایجاد کند. در محیطهایی که n8n نقش محوری در اتوماسیون فرآیندهای سازمانی دارد، این اثرگذاری میتواند به افشای دادههای حساس، تغییر منطق عملیاتی و ایجاد پیامدهای زنجیرهای در سامانههای وابسته منجر شود و سطح ریسک کلی را بهشدت افزایش دهد.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-68668
- https://www.cvedetails.com/cve/CVE-2025-68668/
- https://github.com/n8n-io/n8n/security/advisories/GHSA-62r4-hw23-cc8v
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-68668
- https://vuldb.com/?id.338482
- https://nvd.nist.gov/vuln/detail/CVE-2025-68668
- https://cwe.mitre.org/data/definitions/693.html
