Vikunja is an open-source self-hosted task management platform. Starting in version 0.18.0 and prior to version 2.2.1, when a user account is disabled or locked, the status check is only enforced on the local login and JWT token refresh paths. Three other authentication paths — API tokens, CalDAV basic auth, and OpenID Connect — do not verify user status, allowing disabled or locked users to continue accessing the API and syncing data. Version 2.2.1 patches the issue.
Vikunja versions 0.18.0 through 2.2.0 contain an authentication bypass vulnerability where disabled or locked user accounts can continue accessing the platform through API tokens, CalDAV, and OpenID Connect authentication paths. This critical gap in status enforcement allows unauthorized data access and synchronization despite account restrictions. The vulnerability affects self-hosted deployments commonly used in Saudi organizations for task and project management, with an active exploit available.
IMMEDIATE ACTIONS:
1. Identify all Vikunja instances in your environment and verify current version (check /api/v1/info endpoint)
2. Disable or restrict API token authentication if not critical to operations
3. Audit CalDAV and OpenID Connect integrations for active sessions
4. Review access logs for disabled/locked accounts accessing API endpoints since version 0.18.0 deployment
5. Force logout all active sessions and revoke API tokens for disabled accounts
PATCHING:
1. Upgrade immediately to Vikunja 2.2.1 or later
2. For self-hosted deployments: pull latest image (vikunja:latest) or rebuild from source
3. Restart all Vikunja services after upgrade
4. Verify patch by checking version in admin panel
COMPENSATING CONTROLS (if immediate patching delayed):
1. Implement network-level access controls restricting API token usage to specific IP ranges
2. Disable CalDAV and OpenID Connect authentication methods until patched
3. Enforce API token expiration policies (30-day maximum)
4. Monitor /api/v1/* endpoints for requests from disabled user accounts
5. Implement WAF rules blocking API requests with tokens from disabled accounts
DETECTION RULES:
1. Alert on API requests (POST/GET /api/v1/*) from accounts with disabled status
2. Monitor CalDAV PROPFIND/GET requests from locked accounts
3. Track OpenID Connect token validation failures followed by successful API access
4. Flag multiple failed login attempts followed by successful API token usage
5. Review audit logs for access patterns inconsistent with account status
الإجراءات الفورية:
1. حدد جميع مثيلات Vikunja في بيئتك والتحقق من الإصدار الحالي (تحقق من نقطة نهاية /api/v1/info)
2. عطل أو قيد مصادقة رمز API إذا لم تكن حرجة للعمليات
3. قم بمراجعة تدقيق تكاملات CalDAV و OpenID Connect للجلسات النشطة
4. راجع سجلات الوصول للحسابات المعطلة/المقفلة التي تصل إلى نقاط نهاية API منذ نشر الإصدار 0.18.0
5. فرض تسجيل الخروج لجميع الجلسات النشطة وإلغاء رموز API للحسابات المعطلة
التصحيح:
1. قم بالترقية فوراً إلى Vikunja 2.2.1 أو إصدار أحدث
2. للنشرات المستضافة ذاتياً: اسحب أحدث صورة (vikunja:latest) أو أعد البناء من المصدر
3. أعد تشغيل جميع خدمات Vikunja بعد الترقية
4. تحقق من التصحيح بالتحقق من الإصدار في لوحة المسؤول
الضوابط البديلة (إذا تأخر التصحيح الفوري):
1. تنفيذ ضوابط الوصول على مستوى الشبكة تقيد استخدام رمز API على نطاقات IP محددة
2. عطل مصادقة CalDAV و OpenID Connect حتى يتم التصحيح
3. فرض سياسات انتهاء صلاحية رمز API (30 يوماً كحد أقصى)
4. مراقبة نقاط نهاية /api/v1/* للطلبات من حسابات معطلة
5. تنفيذ قواعد WAF لحظر طلبات API برموز من حسابات معطلة
قواعد الكشف:
1. تنبيه على طلبات API (POST/GET /api/v1/*) من حسابات بحالة معطلة
2. مراقبة طلبات CalDAV PROPFIND/GET من حسابات مقفلة
3. تتبع فشل التحقق من رمز OpenID Connect متبوعاً بوصول API ناجح
4. علم محاولات تسجيل دخول متعددة فاشلة متبوعة باستخدام رمز API ناجح
5. راجع سجلات التدقيق لأنماط الوصول غير المتسقة مع حالة الحساب