CVE-2026-90560: уязвимость чтения за границами массива в zstd-jni
В библиотеке zstd-jni (версии с 1.2.0 по 1.5.7-13) обнаружена уязвимость чтения за границами массива в конструкторе ZstdDictDecompress. Атакующий может передать произвольные значения offset и length, что приведёт к чтению памяти за пределами массива и потенциальному аварийному завершению JVM. Критичность высокая — CVSS 8.8.
Подробности
Уязвимости подвержены версии zstd-jni с 1.2.0 по 1.5.7-13 включительно, распространяемые под именем luben zstd-jni. Причина проблемы заключается в том, что конструктор ZstdDictDecompress никогда не проверяет аргументы offset и length на соответствие границам переданного массива-словаря. Если приложению передать произвольные значения этих параметров, библиотека прочитает область памяти за пределами массива. Речь идёт о классическом out-of-bounds read (CWE-125), который возникает из-за отсутствия валидации входных данных. Поскольку zstd-jni работает с нативным кодом через JNI, чтение за границами Java-массива может привести к обращению к некорректной памяти и, как следствие, к аварийному завершению JVM. Это делает уязвимость особенно опасной для серверных приложений, обрабатывающих недоверенные данные или словари сжатия из внешних источников. Уязвимости присвоен рейтинг CVSS 8.8 (HIGH), что отражает высокую степень риска: эксплуатация не требует аутентификации и приводит к отказу в обслуживании, а в ряде сценариев — к нестабильному поведению процесса.Что делать
Основная рекомендация — как можно скорее обновить zstd-jni до версии новее 1.5.7-13, в которой проблема устранена. Проверьте зависимости вашего проекта: библиотека часто подключается транзитивно через Kafka, Spark, Flink, Cassandra и другие системы обработки данных, поэтому стоит проанализировать весь граф зависимостей (например, с помощью mvn dependency:tree или Gradle dependencyInsight). Если немедленное обновление невозможно, примените компенсирующие меры: - не передавайте в конструктор ZstdDictDecompress значения offset и length, поступающие из недоверенных источников; - проверяйте входные параметры на уровне приложения до вызова библиотеки: offset и length должны находиться в пределах длины массива словаря; - ограничьте возможности обработки внешних словарей сжатия и валидируйте их происхождение. Также рекомендуется пересмотреть архитектуру мест, где словари Zstandard формируются динамически или загружаются от пользователя, и добавить строгую проверку границ.Итог
CVE-2026-90560 — серьёзная уязвимость чтения за границами памяти в zstd-jni, способная привести к падению JVM. Учитывая широкое распространение библиотеки в экосистеме больших данных и потоковой обработки, обновление до исправленной версии и проверка входных параметров должны быть выполнены в приоритетном порядке.Источник: CVE Project (cvelistV5)
