{"id":"CVE-2026-47321","published":"2026-09-21T08:16:37.520","lastModified":"2026-09-21T19:17:06.247","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.\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.","cvssScore":7.5,"cvssSeverity":"HIGH","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cwes":["CWE-409","CWE-789"],"vendors":[],"products":[],"references":[{"url":"https://lists.apache.org/thread/y7xj1bl8qo47p9bktb11hg5v6k1d4dyj","tags":[]},{"url":"http://www.openwall.com/lists/oss-security/2026/09/21/1","tags":[]}],"exploitRefs":[],"hasPoc":false,"ai":{"summary":"The flaw allows for memory exhaustion due to uncontrolled decompression of data with high compression ratios, potentially leading to denial of service.","exploitability":"Exploitation requires sending compressed data with a ratio greater than 1000, making it moderately difficult but feasible under certain conditions.","blast_radius":"If exploited, the flaw could cause significant memory usage, affecting application performance or causing crashes in affected systems.","remediation":"Implement the CompressionFilter with a defined maxDecompressedSize limit to prevent memory exhaustion.","tags":["dos","memory-exhaustion","compression"],"model":"qwen2.5:7b-instruct","analyzedAt":"2026-09-22T06:11:12.104Z"}}