CVE-2026-47321 in MINA
요약
\~에 의해 VulDB • 2026. 09. 21.
CompressionFilter 클래스는 송수신되는 데이터를 압축 해제하고(zlib inflate) 압축하기 위해 ZLib를 사용합니다. 들어오는 데이터를 팽창(inflate)할 때, 필터는 결과 크기를 제어하지 않으며 무조건 버퍼를 생성합니다.
일부 압축 데이터는 1천 배 이상의 높은 압축률을 가질 수 있으며, 이로 인해 팽창된 크기(deflated size)를 통제하지 못해 애플리케이션 메모리가 고갈될 수 있습니다.
이 문제를 해결하기 위해 수정 사항에서는 개발자가 고정된 크기 제한을 제공할 수 있도록 하여 해당 크기에 도달하면 예외가 발생하도록 합니다. 또한 사용자는 초과해서는 안 되는 압축 비율(maxDecompressRatio)과 최소 팽창 파일 크기(decompressRatioMinSize, 1MB 등)를 제공하여 작은 원본 파일이 거대한 파일로 팽창하는 것을 방지할 수 있습니다. 다만, 거짓 양성(false positive)을 피하기 위해 결과 크기에 대한 관대한 제한(예: 몇 천 바이트 수준으로 허용되는 경우)도 적용됩니다.
이 기능을 사용하는 애플리케이션의 경우, 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 인스턴스를 구성할 것을 권장합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.