CVE-2026-47321 in MINA
Zusammenfassung
von VulDB • 21.09.2026
Die Klasse CompressionFilter verwendet ZLib, um Daten zu komprimieren (deflate) und zu dekomprimieren (inflate), die gesendet und empfangen werden. Beim Dekomprimieren eingehender Daten steuert der Filter nicht die resultierende Größe und erstellt unabhängig vom Inhalt einen Puffer.
Einige komprimierte Daten können ein Kompressionsverhältnis von mehr als 1:1000 aufweisen, was zu einer Erschöpfung des Anwendungsspeichers führt, da wir die dekomprimierte Größe nicht kontrollieren.
Die Korrektur fügt eine solche Kontrolle hinzu, indem sie es dem Anwendungsentwickler ermöglicht, ein festes Größengrenzwert bereitzustellen; wenn dieser erreicht wird, wird eine Ausnahme ausgelöst. Es erlaubt auch dem Benutzer, ein Kompressionsverhältnis anzugeben, das nicht überschritten werden darf, um die Anwendung vor kleinen dekomprimierten Dateien zu schützen, die sich in gigantische Dateien aufblähen, jedoch mit einer angemessenen Obergrenze für die resultierende Größe (1 MB), um False Positives zu vermeiden (z. B. eine sehr kleine Datei, die mit einem hohen Verhältnis dekomprimiert wird, aber ein akzeptables Endergebnis von einigen tausend Bytes aufweist).
Für Anwendungen, die diese Funktion nutzen, wird dringend empfohlen, CompressionFilter zu erstellen und das maximale Limit als vierten Konstruktorparameter maxDecompressedSize zu übergeben:
public CompressionFilter(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize)
Optional kann man auch einen fünften Parameter maxDecompressRatio sowie einen sechsten Parameter decompressRatioMinSize angeben, um kleine dekomprimierte Dateien mit einem hohen Kompressionsverhältnis weiterhin zu akzeptieren.
Hier sind die zusätzlichen Konstruktoren:
public CompressionFilter(final boolean compressInbound, final boolean compressOutbound, final int compressionLevel, final int maxDecompressedSize, final long maxDecompressRatio, final long decompressRatioMinSize)
Beachten Sie auch, dass eine fluente API hinzugefügt wurde, um den Benutzern die Mühe zu ersparen, einen Konstruktor mit so vielen Parametern aufzurufen:
CompressionFilter compressionFilter = new CompressionFilter() .setCompressionLevel(Zlib.COMPRESSION_MAX) .setMaxDecompressedSize(1_000_000) .setMaxDecompressRatio(100). .setDecompressRatioMinSize(100_000);
Es wird Anwendungen, die Apache MINA verwenden, geraten, ein Upgrade durchzuführen und ihre CompressionFilter-Instanz entsprechend zu konfigurieren.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.