CVE-2021-41129
Təsvir
Pterodactyl PHP 7, React və Go ilə hazırlanmış açıq mənbəli oyun serveri idarəetmə panelidir. Bədniyyətli istifadəçi iki faktorlu autentifikasiya prosesi zamanı `confirmation_token` girişinin məzmununu dəyişərək daxil olma cəhdi ilə əlaqəli olmayan keş dəyərinə istinad edə bilər. Nadir hallarda bu, bədniyyətli şəxsə Paneldə təsadüfi bir istifadəçi kimi autentifikasiyadan keçməyə imkan verə bilər. Bədniyyətli istifadəçi iki faktorlu autentifikasiyası aktiv olan hesabı hədəf almalı və həmin istifadəçi kimi autentifikasiya olunmazdan əvvəl düzgün iki faktorlu autentifikasiya tokenini təqdim etməlidir. İki faktorlu autentifikasiya prosesində istifadəçi autentifikasiyasını idarə edən məntiqdəki validasiya xətası səbəbindən, bədniyyətli istifadəçi serverə göndərilən tokeni dəyişdirərək sistemi ixtiyari istifadəçinin etibarnamələrini yükləməyə məcbur edə bilər. Bu autentifikasiya xətası istifadəçi üçün iki faktorlu autentifikasiyanı idarə edən `LoginCheckpointController@__invoke` metodunda mövcuddur. Bu kontroller, Panel keşində `user_id` dəyəri olan bir dəyərə istinad edən 64 simvollu təsadüfi alfa-numerik sətir olması gözlənilən `confirmation_token` adlı sorğu giriş parametrini axtarır. Daha sonra bu dəyərdən daxil olmağa çalışan istifadəçini tapmaq və onların iki faktorlu autentifikasiya tokenini yoxlamaq üçün istifadə olunur. Sistemin dizaynına görə, keşdə yalnız rəqəmlərdən ibarət olan hər hansı element bədniyyətli istifadəçi tərəfindən istinad edilə bilər və həmin mövqedə saxlanılan hər hansı dəyər `user_id` kimi istifadə olunar. Panelin keşə tam ədəd dəyərlərini yazan bir neçə fərqli sahəsi var və həmin keş açarlarının nələr olduğunu müəyyən edən istifadəçi, bu kod yolunun ixtiyari istifadəçiyə istinad etməsinə səbəb olacaq açarlardan birini ötürə bilər. Əslində bu, yüksək riskli girişdən yan keçmə zəifliyidir. Lakin bunun uğurlu şəkildə icra edilməsi üçün bir neçə əlavə şərt yerinə yetirilməlidir: 1.) Bədniyyətli keş açarı ilə istinad edilən hesabda iki faktorlu autentifikasiya aktiv olmalıdır. İki faktorlu autentifikasiyası olmayan hesab autentifikasiya məntiqi tərəfindən istisna (exception) yaradacaq və beləliklə bu autentifikasiya axınından çıxacaqdır. 2.) Hətta bədniyyətli istifadəçi iki faktorlu autentifikasiyası olan valid bir istifadəçi hesabına istinad edən valid keş açarını tapa bilsə belə, o, valid iki faktorlu autentifikasiya tokeni təqdim etməlidir. Lakin bu son nöqtənin (endpoint) dizaynına görə, iki faktorlu autentifikasiyası aktiv olan valid istifadəçi hesabı tapıldıqdan sonra heç bir sürət məhdudiyyəti (rate-limiting) tətbiq edilmir, bu da hücumçuya uğurlu olana qədər kombinasiyaları brute force üsulu ilə yoxlamağa imkan verir. Bu isə yerinə yetirilməli olan üçüncü şərtə gətirib çıxarır: 3.) Hücum ardıcıllığı boyunca istinad edilən keş açarı valid `user_id` dəyəri ilə mövcud olmağa davam etməlidir. Bu hücum üçün istifadə olunan konkret açardan asılı olaraq, bu dəyər tez yox ola bilər və ya hücumçunun nəzarətindən kənar Paneldə digər təsadüfi istifadəçi qarşılıqlı əlaqələri ilə dəyişdirilə bilər. Bu zəifliyin aradan qaldırılması üçün alt autentifikasiya məntiqi, istifadəçinin dəyərinə nəzarət edə bilməyəcəyi şifrələnmiş sessiya anbarından (encrypted session store) istifadə etmək üçün dəyişdirilmişdir. Bu, istifadəçi tərəfindən idarə olunan dəyərin istifadəsini tamamilə aradan qaldırmışdır. Əlavə olaraq, bu növ zəifliyin başqa yerlərdə mövcud olmadığından əmin olmaq üçün kod audit edilmişdir.
Necə düzəltmək olar
- pterodactyl panel1.6.2 və ya daha yeni versiya
- pterodactyl/panel1.6.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| pterodactyl panel | 1.0.0 ≤ v < 1.6.2 | 1.6.2 |
| pterodactyl/panelPackagist | 1.0.0 ≤ v < 1.6.2 | 1.6.2 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.