{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-47321","assignerOrgId":"f0158376-9dc2-43b6-827c-5f631a4d8d09","state":"PUBLISHED","assignerShortName":"apache","dateReserved":"2026-05-19T07:41:55.668Z","datePublished":"2026-09-21T07:43:24.769Z","dateUpdated":"2026-09-21T18:09:30.104Z"},"containers":{"cna":{"providerMetadata":{"orgId":"f0158376-9dc2-43b6-827c-5f631a4d8d09","shortName":"apache","dateUpdated":"2026-09-21T07:43:24.769Z"},"title":"Apache MINA: Unbounded Decompression Amplification DoS in Zlib.inflate","problemTypes":[{"descriptions":[{"description":"CWE-409: Improper Handling of Highly Compressed Data — Data Amplification","lang":"en","cweId":"CWE-409","type":"CWE"}]},{"descriptions":[{"description":"CWE-789: Memory Allocation with Excessive Size Value","lang":"en","cweId":"CWE-789","type":"CWE"}]}],"source":{"discovery":"UNKNOWN"},"affected":[{"vendor":"Apache Software Foundation","product":"Apache MINA","collectionURL":"https://repo.maven.apache.org/maven2","packageName":"org.apache.mina:mina-filter-compression","versions":[{"status":"affected","version":"2.2.0","lessThan":"2.2.8","versionType":"maven"},{"status":"affected","version":"2.1.0","lessThan":"2.1.13","versionType":"maven"},{"status":"affected","version":"2.0.0","lessThan":"2.0.29","versionType":"maven"}],"defaultStatus":"unaffected"}],"descriptions":[{"value":"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.\n\nSome compressed data may have a compression ration greater than 1 thousand, leading to an exhaustion of the application memory, as we don't control the deflated size.\n\n\n\n\nThe 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)\n\n\n\n\nFor application using this feature, it is highly recommended to create the CompressionFilter and to pass the maximum limit as a forth constructor parameter, maxDecompressedSize:\n\n\n\n\npublic 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.\n\n\n\n\nHere are the additional constructor:\n\n\n\n\n\n\npublic CompressionFilter(final boolean compressInbound, final boolean compressOutbound,\n\n\n\n            final int compressionLevel, final int maxDecompressedSize,\n\n\n\n            final long maxDecompressRatio, final long decompressRatioMinSize)\n\n\n\n\n\n\n\n\nAlso note that a fluent API has been added to spare the users the pain to call a constructor with that many parameters:\n\n\n\n\n\n\n CompressionFilter compressionFilter = new CompressionFilter()\n\n                                                .setCompressionLevel(Zlib.COMPRESSION_MAX)\n\n                                                .setMaxDecompressedSize(1_000_000)\n\n                                                .setMaxDecompressRatio(100).\n\n                                                .setDecompressRatioMinSize(100_000); \n\n\n\n\n\n\n\n\n\nApplications using Apache MINA are advised to upgrade and configure their CompressionFilter instance.","lang":"en","supportingMedia":[{"type":"text/html","base64":false,"value":"<div>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.</div><div>Some compressed data may have a compression ration greater than 1 thousand, leading to an exhaustion of the application memory, as we don't control the deflated size.</div><div><br></div><div>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)</div><div><br></div><div>For application using this feature, it is highly recommended to create the&nbsp;CompressionFilter and to pass the maximum limit as a forth constructor parameter, maxDecompressedSize:</div><div><br></div><blockquote>public <span>CompressionFilter</span>(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize)</blockquote><div>Optionally one can also provide a&nbsp;<span><span><span>maxDecompressRatio</span></span></span>&nbsp;fifth parameter, and a <span><span><span>decompressRatioMinSize</span></span></span>&nbsp;sixth parameter to allow small inflated files with a high compression ratio to still be accepted.</div><div><br></div><div>Here are the additional constructor:</div><div><br></div><div><div><div><blockquote><p>public CompressionFilter(final boolean compressInbound, final boolean compressOutbound,</p><p>            final int compressionLevel, final int maxDecompressedSize,</p><p>            final long maxDecompressRatio, final long <span>decompressRatioMinSize</span>)</p></blockquote></div></div><br></div><div>Also note that a fluent API has been added to spare the users the pain to call a constructor with that many parameters:</div><div><br></div><div></div><blockquote><div> CompressionFilter compressionFilter = new CompressionFilter()</div><div>                                                .setCompressionLevel(Zlib.<span><span><span>COMPRESSION_MAX</span></span></span>)</div><div>&nbsp;                                               .<span><span>setMaxDecompressedSize</span></span>(1_000_000)</div><div>&nbsp;                                               .<span><span>setMaxDecompressRatio</span></span>(100).</div><div>&nbsp;                                               .<span><span>setDecompressRatioMinSize</span></span>(100_000);&nbsp;</div><div></div></blockquote><div></div><div><br></div><div>\nApplications using Apache MINA are advised to upgrade and configure their CompressionFilter instance.</div>"}]}],"references":[{"url":"https://lists.apache.org/thread/y7xj1bl8qo47p9bktb11hg5v6k1d4dyj","tags":["mailing-list","vendor-advisory"]}],"metrics":[{"scenarios":[{"lang":"en","value":"GENERAL"}],"format":"CVSS","cvssV3_1":{"version":"3.1","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH","baseSeverity":"HIGH","baseScore":7.5,"vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}}],"credits":[{"lang":"en","value":"Venkatraman Kumar, SecurIn","type":"finder"}],"x_generator":{"engine":"Vulnogram 0.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-09-21T14:00:30.976651Z","id":"CVE-2026-47321","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2026-09-21T14:00:48.113Z"}},{"title":"CVE Program Container","references":[{"url":"http://www.openwall.com/lists/oss-security/2026/09/21/1"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2026-09-21T18:09:30.104Z"}}]}}