CVE-2023-50730
Təsvir
Grackle, Typelevel stekinin əsasında funksional Scala dilində yazılmış bir GraphQL serveridir. GraphQL spesifikasiyasına görə, GraphQL fraqmentləri birbaşa və ya dolayı yolla dövrlər yaratmamalıdır. Grackle versiya 0.18.0-dan əvvəl bu tələb yoxlanılmırdı və dövrü fraqmentlərə malik sorğular tip yoxlaması və kompilyasiya üçün qəbul edilirdi. Belə fraqmentlərin kompilyasiya cəhdi JVM `StackOverflowError` xətasının baş verməsinə səbəb olurdu. Belə bir sorğu qurmaq üçün tətbiqin GraphQL sxemi haqqında müəyyən məlumatlar tələb olunurdu, lakin tətbiqə xas performans və ya digər davranış xüsusiyyətləri barədə heç bir məlumata ehtiyac yox idi. Grackle, GraphQL sorğularını analiz etmək üçün cats-parse kitabxanasından istifadə edir. Versiya 0.18.0-dan əvvəl Grackle, cats-parse-ın `recursive` operatorundan istifadə edirdi. Lakin `recursive` hazırda stek təhlükəsizliyinə (stack safe) malik deyil. `recursive` parserdə üç yerdə istifadə olunmuşdu: iç-içə seçmə çoxluqları (nested selection sets), iç-içə giriş dəyərləri (siyahılar və obyektlər) və iç-içə siyahı tipi bəyanları. Nəticədə, dərindən iç-içə seçmə çoxluqlarına, giriş dəyərlərinə və ya siyahı tiplərinə malik sorğular qurularaq bundan istifadə edilə bilərdi ki, bu da analiz zamanı JVM `StackOverflowException` xətasına səbəb olurdu. Bu proses sorğunun emalının çox erkən mərhələsində baş verdiyi üçün belə bir sorğu qurmaq üçün tətbiqin GraphQL sxemi haqqında heç bir xüsusi məlumata ehtiyac yox idi. Kiçik sorğuların stek daşmasına (stack overflow) səbəb olma ehtimalı potensial xidmətdən imtina (DoS) zəifliyidir. Bu, etibarsız istifadəçiləri olan və Grackle-dən istifadə edən bütün tətbiqlərə təsir edə bilər. Hər iki stek daşması problemi Grackle-in v0.18.0 buraxılışında həll edilmişdir. Müvəqqəti həll yolu kimi istifadəçilər etibarsız giriş ilə Grackle sorğu emalı arasında təmizləyici (sanitizing) təbəqə yerləşdirə bilərdilər.
Necə düzəltmək olar
- typelevel grackle0.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_2.130.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_30.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_sjs1_2.130.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_sjs1_30.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_native0.4_2.130.18.0 və ya daha yeni versiya
- org.typelevel:grackle-core_native0.4_30.18.0 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| typelevel grackle | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_2.13Maven | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_3Maven | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_sjs1_2.13Maven | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_sjs1_3Maven | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_native0.4_2.13Maven | v < 0.18.0 | 0.18.0 |
| org.typelevel:grackle-core_native0.4_3Maven | v < 0.18.0 | 0.18.0 |
| edu.gemini:gsp-graphql-core_2.13Maven | v ≤ 0.14.0 | — |
| edu.gemini:gsp-graphql-core_3Maven | v ≤ 0.14.0 | — |
| edu.gemini:gsp-graphql-core_sjs1_2.13Maven | v ≤ 0.14.0 | — |
| edu.gemini:gsp-graphql-core_sjs1_3Maven | v ≤ 0.14.0 | — |
| edu.gemini:gsp-graphql-core_native0.4_2.13Maven | v ≤ 0.14.0 | — |
| edu.gemini:gsp-graphql-core_native0.4_3Maven | v ≤ 0.14.0 | — |
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.