CVE-2024-52046
Severity CVSS v4.0:
CRITICAL
Type:
CWE-502
Deserialization of Untrusted Dat
Publication date:
25/12/2024
Last modified:
12/02/2025
Description
The ObjectSerializationDecoder in Apache MINA uses Java’s native deserialization protocol to process<br />
incoming serialized data but lacks the necessary security checks and defenses. This vulnerability allows<br />
attackers to exploit the deserialization process by sending specially crafted malicious serialized data,<br />
potentially leading to remote code execution (RCE) attacks.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
This issue affects MINA core versions 2.0.X, 2.1.X and 2.2.X, and will be fixed by the releases 2.0.27, 2.1.10 and 2.2.4.<br />
<br />
<br />
<br />
<br />
<br />
It&#39;s also important to note that an application using MINA core library will only be affected if the IoBuffer#getObject() method is called, and this specific method is potentially called when adding a ProtocolCodecFilter instance using the ObjectSerializationCodecFactory class in the filter chain. If your application is specifically using those classes, you have to upgrade to the latest version of MINA core library.<br />
<br />
<br />
<br />
<br />
Upgrading will not be enough: you also need to explicitly allow the classes the decoder will accept in the ObjectSerializationDecoder instance, using one of the three new methods:<br />
<br />
<br />
<br />
<br />
/**<br />
<br />
* Accept class names where the supplied ClassNameMatcher matches for<br />
<br />
* deserialization, unless they are otherwise rejected.<br />
<br />
*<br />
<br />
* @param classNameMatcher the matcher to use<br />
<br />
*/<br />
<br />
public void accept(ClassNameMatcher classNameMatcher)<br />
<br />
<br />
<br />
<br />
/**<br />
<br />
* Accept class names that match the supplied pattern for<br />
<br />
* deserialization, unless they are otherwise rejected.<br />
<br />
*<br />
<br />
* @param pattern standard Java regexp<br />
<br />
*/<br />
<br />
public void accept(Pattern pattern) <br />
<br />
<br />
<br />
<br />
<br />
/**<br />
<br />
* Accept the wildcard specified classes for deserialization,<br />
<br />
* unless they are otherwise rejected.<br />
<br />
*<br />
<br />
* @param patterns Wildcard file name patterns as defined by<br />
<br />
* {@link org.apache.commons.io.FilenameUtils#wildcardMatch(String, String) FilenameUtils.wildcardMatch}<br />
<br />
*/<br />
<br />
public void accept(String... patterns)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
By default, the decoder will reject *all* classes that will be present in the incoming data.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Note: The FtpServer, SSHd and Vysper sub-project are not affected by this issue.
Impact
Base Score 4.0
10.00
Severity 4.0
CRITICAL
Base Score 3.x
9.80
Severity 3.x
CRITICAL
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* | 2.0.0 (including) | 2.0.27 (excluding) |
cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* | 2.1.0 (including) | 2.1.10 (excluding) |
cpe:2.3:a:apache:mina:*:*:*:*:*:*:*:* | 2.2.0 (including) | 2.2.4 (excluding) |
To consult the complete list of CPE names with products and versions, see this page