یک آسیبپذیری امنیتی بحرانی با شناسه CVE-2026-46649 در نرمافزار متنباز Joplin Server شناسایی شده است که امکان دسترسی غیرمجاز به حسابهای کاربری را فراهم میکند. این نقص امنیتی در نسخههای پیش از 3.7.2 وجود دارد و ریشه در عدم پیادهسازی مکانیزمهای محدودکننده نرخ درخواست (Rate Limiting) در یک نقطه انتهایی (Endpoint) حساس دارد.
تحلیل فنی آسیبپذیری
در نسخههای آسیبپذیر، نقطه انتهایی GET /api/login_with_code/:id که برای احراز هویت SSO از طریق کد استفاده میشود، توسط limiterLoginBruteForce محافظت نمیشود. این موضوع به یک مهاجم غیرمجاز (Unauthenticated) اجازه میدهد تا در بازه زمانی ۱۰ دقیقهای (عمر کد احراز هویت)، تعداد نامحدودی حدس برای کد ۹ رقمی SSO ارسال کند.
شرایط بهرهبرداری (Exploitation)
اگرچه شدت این آسیبپذیری بالا (CVSS 9.1) ارزیابی شده است، اما اجرای موفقیتآمیز آن نیازمند شرایط خاصی است:
- پنجره زمانی: مهاجم باید دقیقاً در زمانی که کاربر در حال طی کردن فرآیند SSO است، حمله را آغاز کند.
- حجم درخواستها: با توجه به فضای احتمالات $10^9$ برای یک کد ۹ رقمی، مهاجم برای پوشش کامل احتمالات در ۶۰۰ ثانیه، نیاز به ارسال حدود ۱.۶ میلیون درخواست در هر ثانیه دارد.
- دسترسی: این حمله تنها در صورتی عملی است که سرور هدف توانایی پردازش نرخ بسیار بالای درخواستها را داشته باشد یا مهاجم از زیرساختهای با پهنای باند بالا استفاده کند.
پیامدهای امنیتی
در صورت حدس درست کد، سیستم یک Session Token کامل صادر میکند. این توکن به مهاجم دسترسی کامل (Read/Write) به تمامی یادداشتها، دفترچهها و تنظیمات حساب کاربری قربانی را میدهد.
راهکارهای اصلاحی و کاهش ریسک
برای مقابله با این تهدید، اقدامات زیر توصیه میشود:
- بهروزرسانی فوری: ارتقای تمامی نسخههای Joplin Server به ورژن 3.7.2 یا بالاتر.
- کنترلهای جبرانی (Compensating Controls): در صورتی که بهروزرسانی فوری مقدور نیست، باید از طریق WAF یا Reverse Proxy، محدودیت نرخ درخواست (Rate Limit) برای مسیر
/api/login_with_code/:idاعمال شود (حداکثر ۵ درخواست در دقیقه به ازای هر IP).