Severity by source
Sources disagree (Low–Critical)AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.
CVSS VectorVendor: apache
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Lifecycle Timeline
3Blast Radius
ecosystem impact- 10 maven packages depend on org.apache.mina:mina-core (10 direct, 0 indirect)
Ecosystem-wide dependent count for version 2.2.0.
DescriptionCVE.org
ZDRES-232: resolveProxyClass Not Overridden - acceptMatchers Filter Bypass via java.lang.reflect.Proxy
Assessment: Fully addressed.
When the serialised stream contains a TC_PROXYCLASSDESC (the marker for a java.lang.reflect.Proxy ), JDK’s ObjectInputStream.readProxyDesc() is dispatched. JDK then calls the default ObjectInputStream.resolveProxyClass(interfaces) implementation, which performs Class.forName(intf, false, latestUserDefinedLoader()) for EACH interface name and constructs the proxy class — bypassing the accepted classes list .
ZDRES-233: Class.forName(name, initialize=true, classLoader) in readClassDescriptor Triggers Static Initialiser of Allow-Listed Classes
Assessment: Fully addressed.
For ANY class on the allow-list, deserialising a stream that names it triggers the class’s (static initialiser) BEFORE any instance is constructed. This means an attacker who supplies a class name on the allow-list (e.g., the developer wrote accept(“com.myapp.*") , attacker supplies com.myapp.SomeClass ) causes <clinit> of SomeClass — and many real-world classes have side-effecting static initialisers
Both issues have been fixed.
AnalysisAI
Unsafe Java deserialization in Apache MINA's ObjectSerializationDecoder allows remote unauthenticated attackers to bypass the acceptMatchers class allow-list and achieve arbitrary code execution. Two distinct flaws are addressed: a TC_PROXYCLASSDESC handling gap where resolveProxyClass is not overridden (permitting java.lang.reflect.Proxy instantiation outside the allow-list), and a Class.forName invocation in readClassDescriptor that triggers static initializers of allow-listed classes before any instance check. No public exploit identified at time of analysis, but the CVSS 9.8 rating and well-known deserialization attack patterns make this a high-priority issue for any application exposing MINA's object serialization codec.
Technical ContextAI
Apache MINA is a widely deployed Java network application framework (NIO-based) used to build protocol servers and clients, including by Apache Directory Server, Apache FtpServer, and many enterprise messaging stacks. Its ObjectSerializationDecoder relies on Java's native ObjectInputStream and exposes an acceptMatchers configuration intended as an allow-list firewall against unsafe deserialization (CWE-502). The first flaw (ZDRES-232) arises because MINA does not override ObjectInputStream.resolveProxyClass; when a serialized stream contains TC_PROXYCLASSDESC, the default JDK implementation calls Class.forName for each interface using the latestUserDefinedLoader and constructs a dynamic Proxy without ever consulting the allow-list. The second flaw (ZDRES-233) is that readClassDescriptor invokes Class.forName with initialize=true, so naming any allow-listed class on the wire executes that class's <clinit> static initializer before any instance is created - turning side-effecting initializers in otherwise 'safe' classes into a gadget surface.
RemediationAI
Patch available per vendor advisory - upgrade Apache MINA to the fixed release described in the Apache advisory at https://lists.apache.org/thread/y7xj1bl8qo47p9bktb11hg5v6k1d4dyj; exact fix version is not enumerated in the provided data, so confirm the release tag against that thread before deploying. If immediate upgrade is not possible, the most effective compensating control is to stop accepting untrusted Java-serialized data: replace ObjectSerializationDecoder with a safer codec (Protobuf, JSON, or a hand-written binary protocol), which has the trade-off of breaking any peers that rely on native Java serialization. As a narrower stopgap, restrict network reachability of MINA endpoints that decode objects to trusted peers only (firewall or mTLS), and audit any classes currently on accept() patterns to remove ones whose static initializers perform I/O, reflection, JNDI lookups, or process execution - note that this only mitigates ZDRES-233, not the ZDRES-232 Proxy bypass.
Same weakness CWE-502 – Deserialization of Untrusted Data
View allSame technique Deserialization
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34069
GHSA-v3pr-hxpr-mfm8