Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary rating from NVD.
CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Lifecycle Timeline
5Blast Radius
ecosystem impact- 8 maven packages depend on org.apache.mina:mina-core (8 direct, 0 indirect)
Ecosystem-wide dependent count for version 2.0.0.
DescriptionCVE.org
Apache MINA's AbstractIoBuffer.resolveClass() contains two branches, one of them (for static classes or primitive types) does not check the class at all, bypassing the classname allowlist and allowing arbitrary code to be executed.
The fix checks if the class is present in the accepted class filter before calling Class.forName().
Affected versions are Apache MINA 2.0.0 <= 2.0.27, 2.1.0 <= 2.1.10, and
2.2.0 <= 2.2.5.
The problem is resolved in Apache MINA 2.0.28, 2.1.11, and 2.2.6 by applying the classname allowlist earlier.
Affected are applications using Apache MINA that call IoBuffer.getObject().
Applications using Apache MINA are advised to upgrade.
AnalysisAI
Remote code execution in Apache MINA 2.0.0-2.0.27, 2.1.0-2.1.10, and 2.2.0-2.2.5 allows unauthenticated network attackers to execute arbitrary code by exploiting unsafe deserialization in AbstractIoBuffer.resolveClass(). The vulnerability bypasses classname allowlist protections due to incomplete validation of static classes and primitive types. CVSS 9.8 critical severity reflects trivial network-based exploitation requiring no authentication or user interaction. Applications using IoBuffer.getObject() are affected. Vendor-released patches available in versions 2.0.28, 2.1.11, and 2.2.6.
Technical ContextAI
Apache MINA (Multipurpose Infrastructure for Network Applications) is a Java framework for building high-performance network applications. The vulnerability exists in AbstractIoBuffer.resolveClass(), which handles Java object deserialization. This is a classic CWE-502 (Deserialization of Untrusted Data) flaw where the code contains two execution branches: one properly validates class names against an allowlist, while the other branch - handling static classes and primitive types - completely bypasses this security check. When applications call IoBuffer.getObject() to deserialize network data, attackers can craft malicious serialized objects containing static or primitive type references that bypass the allowlist, leading to arbitrary class loading via Class.forName() without validation. This allows instantiation of dangerous classes commonly exploited in Java deserialization gadget chains (e.g., from commons-collections, Spring, etc.), resulting in remote code execution.
RemediationAI
Upgrade Apache MINA to patched versions immediately: 2.0.28 (for 2.0.x branch), 2.1.11 (for 2.1.x branch), or 2.2.6 (for 2.2.x branch). The fix enforces classname allowlist validation before Class.forName() calls in all code paths, including static classes and primitive types. For applications unable to patch immediately, implement compensating controls: (1) disable or remove calls to IoBuffer.getObject() if application functionality permits, replacing with explicit parsing of known data structures; (2) deploy network segmentation to limit exposure of MINA-based services to trusted networks only, blocking untrusted internet access; (3) implement input validation/filtering at network perimeter to detect and block Java serialized data patterns in incoming traffic (magic bytes 0xACED0005), though sophisticated attackers may obfuscate; (4) enable Java Security Manager with restrictive policies to limit class loading capabilities, though this adds operational complexity and performance overhead. Note that compensating controls are temporary mitigations only - the deserialization code path remains exploitable until patched. Consult Apache advisory at https://lists.apache.org/thread/1l91w1mqsb3lwfd504fs045ylxntt2tm for complete technical details.
Same weakness CWE-502 – Deserialization of Untrusted Data
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-25796
GHSA-8297-v2rf-2p32