CVE-2023-37895
Təsvir
Bütün platformalarda Jackrabbit webapp/standalone proqramındakı Java obyektlərinin deserializasiyası problemi hücumçuya RMI vasitəsilə uzaqdan kodun icrasına imkan verir. 2.20.10 (stabil budaq) və 2.21.17 (qeyri-stabil budaq) daxil olmaqla bütün versiyalar, tərkibində RMI üzərindən uzaqdan kodun icrası üçün istifadə edilə bilən sinif olan "commons-beanutils" komponentini istifadə edir. İstifadəçilərə dərhal 2.20.11 və ya 2.21.18 versiyalarına yeniləmək tövsiyə olunur. Qeyd edək ki, daha əvvəlki stabil budaqlar (1.0.x .. 2.18.x) artıq EOL statusundadır və onlar üçün yenilənmələr təmin edilmir. Ümumiyyətlə, RMI dəstəyi, classpath-də istismar edilə bilən bir sinfin mövcudluğu ilə belə zəifliklər yarada bilər. Hətta Jackrabbit-in özü artıq istismar edilə bilən heç bir kod ehtiva etməsə belə, serverinizə digər komponentlərin əlavə edilməsi eyni növ problemin yaranmasına səbəb ola bilər. Buna görə də biz RMI girişini tamamilə deaktiv etməyi tövsiyə edirik (aşağıda baxın) və gələcək Jackrabbit buraxılışlarında RMI dəstəyinin ləğvini müzakirə edəcəyik. RMI dəstəyinin aktiv olub-olmadığını necə yoxlamaq olar? RMI dəstəyi RMI-yə məxsus TCP portu və HTTP bağlaması üzərindən ola bilər. Jackrabbit webapp/standalone-da hər ikisi standart olaraq aktivdir. Yerli RMI protokolu standart olaraq 1099 portundan istifadə edir. Aktiv olub-olmadığını yoxlamaq üçün "netstat" kimi alətlərdən istifadə edilə bilər. Jackrabbit-də RMI-over-HTTP standart olaraq "/rmi" yolundan istifadə edir. Beləliklə, 8080 portunda standalone rejimində işlədikdə, localhost:8080/rmi ünvanına göndərilən HTTP GET sorğusunun 404 (aktiv deyil) və ya 200 (aktiv) qaytarıb-qaytarmadığını yoxlayın. Qeyd edək ki, webapp konteynerdə root olmayan kontekstdə yerləşdirildikdə HTTP yolu fərqli ola bilər və bu halda prefiks istifadəçinin nəzarətində olur. RMI-nin söndürülməsi web.xml faylını tapın (istər JAR/WAR faylında, istərsə də açılmış veb tətbiqi qovluğunda) və RemoteBindingServlet üçün deklarasiyanı və xəritə tərifini silin: <servlet> <servlet-name>RMI</servlet-name> <servlet-class>org.apache.jackrabbit.servlet.remote.RemoteBindingServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RMI</servlet-name> <url-pattern>/rmi</url-pattern> </servlet-mapping> bootstrap.properties faylını ($REPOSITORY_HOME daxilində) tapın və aşağıdakıları təyin edin: rmi.enabled=false həmçinin bunları silin: rmi.host rmi.port rmi.url-pattern Əgər $REPOSITORY_HOME daxilində bootstrap.properties adlı fayl yoxdursa, o, classpath-də haradasa yerləşmişdir. Bu halda, həmin faylın surətini $REPOSITORY_HOME qovluğuna yerləşdirin və izah edildiyi kimi dəyişiklik edin.
Necə düzəltmək olar
- apache jackrabbit2.20.11, 2.21.18 və ya daha yeni versiya
- org.apache.jackrabbit:jackrabbit-webapp2.21.18, 2.20.11 və ya daha yeni versiya
- org.apache.jackrabbit:jackrabbit-standalone2.21.18, 2.20.11 və ya daha yeni versiya
- org.apache.jackrabbit:jackrabbit-standalone-components2.21.18, 2.20.11 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| apache jackrabbit | 1.0.0 ≤ v < 2.20.11, 2.21.0 ≤ v < 2.21.18 | 2.20.11, 2.21.18 |
| org.apache.jackrabbit:jackrabbit-webappMaven | 2.21.0 ≤ v < 2.21.18, 1.0.0 ≤ v < 2.20.11 | 2.21.18, 2.20.11 |
| org.apache.jackrabbit:jackrabbit-standaloneMaven | 2.21.0 ≤ v < 2.21.18, 1.0.0 ≤ v < 2.20.11 | 2.21.18, 2.20.11 |
| org.apache.jackrabbit:jackrabbit-standalone-componentsMaven | 2.21.0 ≤ v < 2.21.18, 1.0.0 ≤ v < 2.20.11 | 2.21.18, 2.20.11 |
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.