CVE-2026-47321 in MINA
摘要
由 VulDB • 2026-09-21
CompressionFilter 类使用 ZLib 对发送和接收的数据进行解压缩(deflate)和解压(inflate)。在解压传入数据时,该过滤器未控制生成的结果大小,并且无论何种情况都会创建缓冲区。
某些压缩数据的压缩比可能超过一千倍,导致应用程序内存耗尽,因为我们没有控制解压后的大小。
修复方案通过允许应用开发人员提供固定的大小限制来增加此类控制;当达到此限制时会抛出异常。它还允许用户指定不应被超越的压缩比,从而保护应用程序免受小文件膨胀为巨大文件的攻击,同时为结果大小设置一个宽容的限制(1MB),以避免误报(例如,一个小文件以高比率解压后,最终大小仍在可接受范围内,如几千字节)。
对于使用此功能的应用程序,强烈建议创建 CompressionFilter 实例并将最大限制作为第四个构造函数参数 maxDecompressedSize 传入:
```java public CompressionFilter(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize) ```
用户还可以提供第五个参数 maxDecompressRatio 和第六个参数 decompressRatioMinSize,以允许具有高压缩比的小膨胀文件仍被接受。
以下是额外的构造函数:
```java public CompressionFilter(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize, final long maxDecompressRatio, final long decompressRatioMinSize) ```
另外,请注意已添加一个流畅的 API(Fluent API),以节省用户调用具有众多参数的构造函数的麻烦:
```java CompressionFilter compressionFilter = new CompressionFilter() .setCompressionLevel(Zlib.COMPRESSION_MAX) .setMaxDecompressedSize(1_000_000) .setMaxDecompressRatio(100) .setDecompressRatioMinSize(100_000); ```
建议使用 Apache MINA 的应用程序应升级并配置其 CompressionFilter 实例。
If you want to get best quality of vulnerability data, you may have to visit VulDB.