n8n یک فرار از سندباکس با شدت بالا را برطرف کرده که میتوانست به یک حساب دارای اجازهٔ ایجاد یا ویرایش گردشکار امکان اجرای دستورات سیستمعامل با امتیاز فرایند n8n روی میزبان را بدهد. این مشکل هنگام بازبینی اصلاح فوریه مربوط به GHSA-gv7g-jm28-cr3m توسط شرکت Security Joes کشف شد.
نسخههای آسیبپذیر و وضعیت اصلاح
نسخههای آسیبپذیر عبارتاند از نسخههایی با شمارهٔ <2.31.5 و نسخههای >=2.32.0 و <2.32.1. n8n این نقص را در نسخههای 2.31.5 و 2.32.1 اصلاح کرده است. این موضوع با شناسهٔ GHSA-gv7g-jm28-cr3m ثبت شده و امتیاز CVSS آن 8.7 گزارش شده است. تا تاریخ 27 ژوئیهٔ 2026 هنوز شناسهٔ عمومی CVE به این مورد تخصیص نیافته بود.
خلاصهٔ تهدید و پیامدها
بهرهبرداری نیازمند حسابی با مجوز ایجاد یا ویرایش گردشکار است و نیازی به دخالت کاربر دیگر ندارد. در حملهٔ موفق، مهاجم میتواند دستوراتی را با امتیازات فرایند n8n اجرا کند؛ این دسترسی میتواند به افشای کلیدهای رمزنگاری، رمزگشایی مدارک ذخیرهشده و دسترسی به سرویسهای داخلی و نقاط انتهایی ابری منجر شود. گزارش Security Joes نشان میدهد که بهرهبرداری ممکن است مقدار N8N_ENCRYPTION_KEY را افشا و اجازهٔ رمزگشایی مدارک را فراهم کند و مسیرهایی به پایگاههای داده و سرویسهای پشت فایروال باز نماید.
فنی
مکانیزم فرار
در n8n عبارات متغیرها معمولاً بهصورت داخل قلاب مثل ={{ $json.email }} ثبت میشوند. برای ایزولهسازی این عبارات یک بازنویس درخت نحو (AST rewriter) تعبیه شده که شناسههای آزاد جاوااسکریپت را به متن کنترلشدهٔ پلتفرم هدایت میکند تا از دسترسی مستقیم به گلوبالهای واقعی جلوگیری شود. در نسخهٔ 2.31.4 فایل VariablePolyfill.ts یک ضعف منطقی داشت: ArrowFunctionExpression در شاخهای قرار گرفته بود که بیاثر تلقی میشد، و بدنهٔ مختصر تابع پیکان مانند () => process میتوانست شناسهٔ process را به گلوبال واقعی Node.js ارجاع دهد بهجای مقدار سندباکسشده.
راهِ بهرهبرداری
نقطهٔ کور دوم مربوط به روش بررسی نامها در member expressionها بود: n8n نامهای ایستا را بررسی میکرد در حالی که Reflect.get() نام خواستهشده را بهعنوان آرگومان میپذیرد. پژوهشگران از این اختلاف استفاده کردند تا process.getBuiltinModule را بازیابی کنند، ماژول child_process را بارگذاری نمایند و دستوری روی میزبان اجرا کنند. زنجیرهٔ بهرهبرداری در نسخهٔ 2.30.4 و روی نمونهٔ محلی آزمایش شد و نشان داد که مهاجم با دسترسی ویرایشی میتواند کنترل قابلتوجهی بهدست آورد.
تایملاین واکنش
- 14 ژوئیهٔ 2026: پژوهشگران فرار از سندباکس را شناسایی کردند.
- 15 ژوئیهٔ 2026: گزارش بهصورت رسمی از طریق برنامهٔ افشای آسیبپذیری n8n ارسال شد.
- 22 ژوئیهٔ 2026: n8n نسخههای اصلاحشده را منتشر کرد.
توصیههای فوری برای مدیران و مدافعان
راهحلهای موقتی از سوی n8n برای محدودسازی دسترسی و ویرایش گردشکار ارائه شدهاند، اما این کنترلها کوتاهمدت توصیف شدهاند. بهترین و سریعترین اقدام بهروزرسانی به نسخههای اصلاحشده است. اقدامات عملی پیشنهادی:
- فوراً بهروزرسانی کنید به نسخهٔ 2.31.5 یا 2.32.1.
- تمام گردشکارهایی که اخیراً ایجاد یا ویرایش شدهاند را بازبینی کنید و بهدنبال توابع پیکان غیرمنتظره، قطعات جاوااسکریپت مبهم یا فراخوانیهای reflective باشید.
- رویدادهای ایجاد فرایند فرزند را بررسی کنید؛ دنبال اجرای شِلها، PowerShell،
curlیاwgetبهعنوان پروسهٔ فرزند n8n یا Node.js باشید. - در صورت مشاهدهٔ اجرای مشکوک یا شواهد بهرهبرداری، کلیدها و مدارک حساس را بازچرخانی (rotate) کنید و دسترسیها را محدود نمایید.
- حسابهای دارای مجوز ویرایش گردشکار را بهعنوان داراییهای حساس در نظر بگیرید و سیاستهای RBAC سختگیرانه، مدیریت اسرار و جداسازی شبکه را پیادهسازی کنید.
شاخصهای مربوط به مخاطره (نمونهٔ قابل بررسی)
- تغییرات غیرمنتظره در گردشکارهایی که اجازهٔ اجرای کد دارند.
- فرایندهای فرزند اجراشده توسط Node.js که دستورهای سیستمی یا ارتباط شبکهای غیرمعمول برقرار میکنند.
- دسترسی یا خواندن مقادیر مربوط به
N8N_ENCRYPTION_KEYیا مدارک رمزنگاریشده.
زمینه و درسآموختهها
این کشف ادامهٔ مجموعهای از فرارهای سندباکس است که n8n از سال 2025 به بعد وصله کرده است و از لحاظ فنی شباهتهایی با سازوکار CVE-2026-27577 دارد، جایی که شیء process بدون تبدیل مناسب از لایهٔ بازنویس عبور کرده بود. آزمونهای سندباکس و بازنویسگرهای AST باید پوشش عمیقتری برای سناریوهای تابع پیکان، بدنههای مختصر و بررسیهای بازتابی (reflective checks) داشته باشند.
منابع
برای توضیحات بیشتر دربارهٔ معیار امتیازدهی آسیبپذیری به صفحهٔ CVSS در ویکیپدیا مراجعه کنید و برای مستندات فنی مرتبط با n8n به وبسایت رسمی n8n سر بزنید.





