CVE-2026-47321
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
21/09/2026
Last modified:
21/09/2026
Description
The CompressionFilter class uses ZLib to deflate and inflate data sent and received. When we inflate incoming data, the filter does not control the resulting size, and create a buffer no matter what.<br />
<br />
Some compressed data may have a compression ration greater than 1 thousand, leading to an exhaustion of the application memory, as we don&#39;t control the deflated size.<br />
<br />
<br />
<br />
<br />
The fix adds such a control by allowing the application developer to provide a fixed size limit, which when reached throws an exception. It also allows the user to provide a compression ratio that should not be exceeded, protected the application from small inflated files that inflate in gigantic files, but with a grace limit for the resulting size (1Mb) to avoid false positive (like a very small file inflating with a high ratio, but resulting with a acceptable size, like a few thousands bytes)<br />
<br />
<br />
<br />
<br />
For application using this feature, it is highly recommended to create the CompressionFilter and to pass the maximum limit as a forth constructor parameter, maxDecompressedSize:<br />
<br />
<br />
<br />
<br />
public CompressionFilter(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize)Optionally one can also provide a maxDecompressRatio fifth parameter, and a decompressRatioMinSize sixth parameter to allow small inflated files with a high compression ratio to still be accepted.<br />
<br />
<br />
<br />
<br />
Here are the additional constructor:<br />
<br />
<br />
<br />
<br />
<br />
<br />
public CompressionFilter(final boolean compressInbound, final boolean compressOutbound,<br />
<br />
<br />
<br />
final int compressionLevel, final int maxDecompressedSize,<br />
<br />
<br />
<br />
final long maxDecompressRatio, final long decompressRatioMinSize)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Also note that a fluent API has been added to spare the users the pain to call a constructor with that many parameters:<br />
<br />
<br />
<br />
<br />
<br />
<br />
CompressionFilter compressionFilter = new CompressionFilter()<br />
<br />
.setCompressionLevel(Zlib.COMPRESSION_MAX)<br />
<br />
.setMaxDecompressedSize(1_000_000)<br />
<br />
.setMaxDecompressRatio(100).<br />
<br />
.setDecompressRatioMinSize(100_000); <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Applications using Apache MINA are advised to upgrade and configure their CompressionFilter instance.
Impact
Base Score 3.x
7.50
Severity 3.x
HIGH


