کشف حفره فرار از محیط ایزوله در n8n

پلتفرم اتوماسیون n8n پس از کشف یک آسیب‌پذیری با درجه اهمیت بالا در مکانیزم جداسازی محیط اجرا، انتشار نسخه‌های اصلاحی را آغاز کرد. با بهره‌برداری از این نقص، هر کاربری که دسترسی ویرایشگر جریان‌های کاری را داشته باشد، می‌تواند دستورات سیستم‌عاملی را مستقیماً روی سرور میزبان پلتفرم اجرا کند. تیم امنیتی Security Joes این رخنه را در جریان بررسی پچ فوریه سال جاری برای CVE-2025-27577 کشف کرد.

نسخه‌های 2.31.5 و 2.32.1 این مشکل را برطرف کرده‌اند. تیم امنیتی این نقص را با شناسه GHSA-gv7g-jm28-cr3m ثبت کرده و با نمره CVSS 4.0 برابر با 8.7 در سطح بالا دسته‌بندی کرده است. هنوز هیچ شناسه CVEای برای آن اختصاص نیافته است. مدیران سیستم باید بدون اتکا به محدود کردن دسترسی به کاربران مورد اعتماد، بلافاصله نرم‌افزار را به‌روزرسانی کنند. پچ امنیتی فعلی به‌هیچ‌وجه به نسخه‌های ۱.x نمی‌پردازد و وضعیت سرویس‌های ابری n8n نیز در این گزارش شفاف‌سازی نشده است.

نحوه عملکرد مکانیزم حمله

بهره‌برداری از این آسیب‌پذیری نیازمند احراز هویت و مجوز تغییر یا ساخت جریان کاری است. در صورت فعال‌سازی، دستورات با سطح دسترسی فرآیند اصلی n8n اجرا می‌شوند. پژوهشگران Security Joes در گزارش خود که با The Hacker News به اشتراک گذاشته شد، هشدار دادند که این دسترسی می‌تواند کلید رمزنگاری N8N_ENCRYPTION_KEY را سرقت کند و امکان رمزگشایی اعتبارنامه‌های ذخیره‌شده در پلتفرم را فراهم نماید.

نمونه شماتیک از جریان‌های کاری در پلتفرم‌های اتوماسیون و نحوه ایزوله‌سازی آن‌ها

مکانیزم اصلی حمله بر یک شکاف در بازنویس درخت نحو انتزاعی (AST) استوار است. سازندگان جریان‌های کاری در n8n از عباراتی مانند ={{ $json.email }} استفاده می‌کنند. بازنویس AST شناسه‌های آزاد جاوا اسکریپت را به جای محیط اجرایی Node.js، به زمینه داده‌های کنترل‌شده هدایت می‌کند. اما در نسخه ۲.۳۱.۴، فایل VariablePolyfill.ts توابع پیکان (Arrow Functions) را در یک شاخه بدون عملیات قرار می‌داد. در نتیجه، عباراتی مانند () => process به جای مقدار ایزوله‌شده، مستقیماً به شیء process واقعی Node.js متصل می‌شدند.

نقطه کور دوم در بررسی ویژگی‌های استاتیک نهفته بود. پژوهشگران با سوءاستفاده از تفاوت در مدیریت آرگومان‌ها در متد Reflect.get()، موفق شدند process.getBuiltinModule را بازیابی کرده، ماژول child_process را بارگذاری کنند و یک دستور را بر روی میزبان اجرا سازند. اثبات مفهوم حمله هم روی پکیج منتشرشده و هم روی نمونه محلی n8n ۲.۳۰.۴ با موفقیت تست شد.

پیامدهای امنیتی و راهکارهای فوری

تیم تحقیقاتی Security Joes تأکید کرد که هر کدام از این دو شکاف به‌تنهایی کافی نیستند، اما ترکیب آن‌ها با زنجیره بهره‌برداری که قبلاً توسط تست‌های خودکار پوشش داده نشده بود، منجر به نفوذ کامل شد. نمره نهایی CVSS که توسط سازنده منتشر شده ۸.۷ است و تخمین اولیه پژوهشگران که نزدیک به ۹.۴ بود، جای خود را به واقعیت اجرایی داده است.

افشای این نقص در ۱۴ ژوئیه و گزارش رسمی آن در ۱۵ ژوئیه از طریق برنامه افشای امنیتی n8n انجام گرفت. پچ نهایی نیز در ۲۲ ژوئیه منتشر گردید. امنیت‌مداران باید جریان‌های کاری اخیر را برای توابع پیکان غیرمعمول یا کدهای جاوا اسکریپت مخدوش‌شده اسکن کنند. همچنین پایش فرآیندهای فرزند که shell، PowerShell، curl یا wget را فراخوانی می‌کنند، و چرخش کامل اعتبارنامه‌ها در صورت مشاهده هرگونه فعالیت مشکوک، الزامی است.

این یافته زنجیره‌ای از حفره‌های مشابه در سازوکار ارزیابی عبارات n8n را تکمیل می‌کند که آخرین نمونه آن CVE-2025-27577 در فوریه بود؛ تا محیط ایزوله اجرای کدها دیگر جایگاه یک ویژگی فرعی محسوب نمی‌شود، بلکه خط مقدم دفاعی پلتفرم‌هایی است که مستقیماً به پایگاه‌داده‌ها، سرویس‌های داخلی و Endpointهای ابری سازمان متصل‌اند و کوچک‌ترین نشت در آن می‌تواند معادلات امنیتی کل زیرساخت را به هم بزند.