یک آسیبپذیری امنیتی با شناسه CVE-2026-126795 در پلتفرم ToolJet شناسایی شده است که به مهاجمان اجازه میدهد بدون نیاز به احراز هویت، حسابهای کاربری دعوتشده اما فعالنشده را تصاحب کنند (Account Takeover). این نقص امنیتی از نوع CWE-306 (عدم احراز هویت برای توابع حساس) است و بهطور خاص نسخههای Self-hosted (غیر ابری) را تحت تأثیر قرار میدهد.
تحلیل فنی مکانیسم حمله
این آسیبپذیری در ماژول Onboarding و بهطور مشخص در نقطه انتهایی (Endpoint) عمومی /api/onboarding/signup رخ میدهد. در حالت عادی، سیستم باید مالکیت ایمیل را تأیید کند، اما در نسخههای آسیبپذیر، منطق بررسی رمز عبور در فایل util.service.ts دارای یک نقص است: سیستم تنها زمانی از تابع bcrypt.compare برای بررسی رمز عبور استفاده میکند که رمز عبور فعلی کاربر مقدار داشته باشد.
از آنجایی که کاربران دعوتشده (Invited Users) تا زمان فعالسازی حساب، رمز عبور آنها مقدار null است، سیستم بررسی bcrypt را بهطور کامل نادیده میگیرد. در نتیجه، یک عامل تهدید (Threat Actor) میتواند با ارسال یک درخواست POST به نقطه انتهایی مذکور، رمز عبور دلخواه خود را برای یک ایمیل دعوتشده تنظیم کرده و حساب را فعال کند.
جریان حمله (Attack Flow)
- شناسایی هدف: مهاجم ایمیل کاربری را که به یک نمونه Self-hosted از ToolJet دعوت شده اما هنوز حساب خود را فعال نکرده است، حدس میزند یا بهدست میآورد.
- ارسال درخواست: یک درخواست بدون احراز هویت به
/api/onboarding/signupارسال میشود که حاوی ایمیل هدف و یک رمز عبور جدید است. - تصاحب حساب: به دلیل
nullبودن رمز عبور اولیه، سیستم رمز عبور مهاجم را جایگزین کرده و یک توکن JWT معتبر (tj_auth_token) بازمیگرداند. - دسترسی کامل: مهاجم اکنون به تمام محیطهای کاری (Workspaces) که کاربر قربانی در آنها عضو بوده است، دسترسی کامل دارد.
تأثیرات و محدودیتها
این حمله نیازی به تعامل کاربر (User Interaction) ندارد و پیچیدگی آن بسیار پایین است. با این حال، دو محدودیت اصلی وجود دارد: اول اینکه تنها حسابهای «دعوتشده اما فعالنشده» قابل اکسپلویت هستند و دوم اینکه نسخههای Cloud تحت تأثیر این نقص نیستند. با توجه به اینکه توکنهای دعوت در حالت پیشفرض منقضی نمیشوند (LINK_EXPIRY_MINUTES = 0)، پنجره حمله برای مهاجم بهصورت نامحدود باز میماند.
راهکارهای اصلاحی و کاهش ریسک
تنها راهکار قطعی، بهروزرسانی ToolJet به نسخه 3.21.94-beta یا نسخههای جدیدتر است. در این بهروزرسانی، مسیر نوشتن اطلاعات اعتبارنامهها (Credential-write path) از نقطه انتهایی ثبتنام عمومی حذف شده است و درخواستهای مشابه تنها منجر به ارسال مجدد لینک فعالسازی میشود.
برای سازمانهایی که قادر به بهروزرسانی فوری نیستند، توصیههای زیر برای کاهش ریسک پیشنهاد میشود:
- اطمینان از فعالسازی سریع حسابهای دعوتشده توسط کاربران.
- حسابرسی (Audit) حسابهایی که وضعیت آنها از «دعوتشده» به «فعال» تغییر کرده است، بدون اینکه از جریان لینک فعالسازی استفاده کرده باشند.
- در صورت مشکوک شدن به تصاحب حساب، چرخش (Rotation) تمامی رمزهای عبور دیتابیس و API Keyهای ذخیره شده در محیطهای کاری انجام شود.