CVE-2026-91006
NieznaneStreszczenie
Usługa zarządzania instancjami Apache Karaf (InstanceServiceImpl) tworzy polecenie uruchamiające podrzędną maszynę JVM przez konkatenację ciągów, a następnie wykonuje je przez /bin/sh lub cscript. Wartość javaOpts dostarczona przez wywołującego jest wstawiana do tego ciągu bez cudzysłowów, co pozwala na interpretację znaków specjalnych powłoki (;, |, `, $(...)) i wykonanie dowolnych poleceń systemu operacyjnego z uprawnieniami użytkownika procesu Karaf.
Ocena ryzyka
Atakujący może uzyskać pełną kontrolę nad systemem, na którym działa Karaf, wykonując dowolne polecenia, co może prowadzić do naruszenia poufności, integralności i dostępności danych oraz całej infrastruktury.
Rekomendacja
Zastosuj środki zaradcze: ustaw karaf.secured.command.compulsory.roles=admin w etc/system.properties, ogranicz dostęp do komend instance:* i InstancesMBean przez role w etc/users.properties oraz traktuj javaOpts jako niezaufane dane wejściowe.
Inne podatności w Apache Karaf
Zobacz wszystkie- CVE-2026-92142Nieznane
Apache Karaf posiada podatność w zabezpieczeniach JMX MBeanServer, gdzie operacje createMBean, registerMBean i unregisterMBean nie są objęte kontrolą RBAC. Pozwala to użytkownikowi z rolą 'viewer' na zdalne wykonanie kodu w JVM Karaf, wykorzystując MLet jako zdalny classloader.
- CVE-2026-91085Nieznane
Apache Karaf posiada lukę w kontroli dostępu do polecenia config:install, które nie zostało objęte regułą ACL i jest dostępne dla każdego uwierzytelnionego użytkownika, nawet z rolą viewer. Polecenie pobiera plik z dowolnego URL i zapisuje go do katalogu karaf.etc, gdzie znajdują się pliki bezpieczeństwa (users.properties, keys.properties, host.key, pliki ACL). Z opcją --override można nadpisać istniejące pliki, a Felix FileInstall automatycznie przeładuje zmienione pliki .cfg bez restartu.
- CVE-2026-91048Nieznane
Podatność w Apache Karaf dotyczy braku pliku konfiguracyjnego ACL dla komend jdbc i jms, co powoduje, że każda uwierzytelniona sesja powłoki (nawet z rolą viewer) może wykonywać wszystkie komendy jdbc:* i jms:*. Komenda jdbc:ds-create pozwala na zapisanie dowolnego adresu URL JDBC, co może prowadzić do wykonania kodu na poziomie połączenia, omijając bramę roli admina.
- CVE-2026-91012Nieznane
Podatność w Apache Karaf pozwala użytkownikowi z rolą "manager" na zapis dowolnej treści do dowolnego pliku, do którego proces Karaf ma prawa zapisu. Dzieje się tak przez ominięcie kontroli ścieżek w ConfigRepositoryImpl.update() i createFactoryConfiguration(), gdzie wartość felix.fileinstall.filename lub PID z segmentami ".." może wskazywać poza katalog ${karaf.etc}.
- CVE-2026-92230Wysokie
Apache Karaf przechowuje w statycznych polach ThreadLocal fabryki parserów i transformerów XML na długo żyjących wątkach kontenera. Ponieważ wartość ThreadLocal żyje dłużej niż tworzący ją bundle OSGi, powtarzane operacje instalacji, aktualizacji lub odświeżania bundle'a mogą powodować przypięcie kolejnych ClassLoaderów bundle'a w pamięci i uniemożliwienie ich usunięcia przez garbage collector, prowadząc do nieograniczonego wzrostu Metaspace i ostatecznie do odmowy usługi (DoS) instancji Karaf.
Oryginalny opis (angielski, źródło NVD)
Apache Karaf's instance-management service (InstanceServiceImpl) builds the command line used to launch a child Karaf JVM by string concatenation, then executes it through /bin/sh (Unix) or cscript (Windows). The caller-supplied javaOpts value is spliced into that string unquoted. A javaOpts value containing shell metacharacters (;, |, `, $(...)) is interpreted by the shell instead of being passed to the JVM as an option, giving arbitrary OS command execution as the Karaf process user. Reachable via the shell commands instance:create, instance:start, instance:restart, instance:change-opts, and the equivalent InstanceMBean JMX operations (createInstance, startInstance, changeJavaOpts, cloneInstance). Mitigation * Set karaf.secured.command.compulsory.roles=admin in etc/system.properties to close the fail-open gap for all unconfigured command scopes. * Restrict which principals can reach instance:* commands and InstancesMBean via etc/users.properties role assignments. * Treat javaOpts passed to instance:create/instance:start/instance:change-opts/InstancesMBean as untrusted input only from fully-trusted operators.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

