В библиотеке jansi, предназначенной для вывода цветного текста и управления терминалом в приложениях на языке Java, обнаружена уязвимость переполнения буфера кучи (CVE-2026-8484). Проблема относится к категории CWE-122 (heap-based buffer overflow) и связана с недостаточной проверкой размера массива аргументов перед выполнением системного вызова ioctl() через механизм JNI (Java Native Interface - интерфейс для вызова нативного кода из Java). Уязвимы все версии библиотеки вплоть до 2.4.3 включительно, при этом проект на момент публикации данных не поддерживается разработчиками, а значит, официального исправления не существует.
Уязвимость CVE-2026-8484
Суть проблемы кроется в реализации обёртки ioctl() в jansi. Функция передаёт массив аргументов непосредственно в системный вызов, не контролируя его длину. Если вредоносный код способен передать такой массив, длина которого превышает ожидаемую, происходит запись данных за пределами выделенной области кучи. Результатом может стать повреждение структуры кучи, а в ряде случаев - аварийное завершение приложения (отказ в обслуживании, DoS). Хотя в текущем описании уязвимости указана только возможность вызвать crash, в ряде аналогичных переполнений кучи при определённых условиях возможна и эскалация привилегий или выполнение произвольного кода - однако официального подтверждения этому для CVE-2026-8484 пока нет.
Библиотека jansi долгое время использовалась в экосистеме Java для форматирования вывода в консоль, в том числе в таких проектах, как Jenkins, Maven и различных инструментах командной строки. Несмотря на то что jansi не является компонентом с высокими сетевыми рисками, уязвимость становится критической, если библиотека применяется в составе серверного или автоматизированного ПО, обрабатывающего внешние данные. Например, приложение, которое принимает через аргументы командной строки или переменные окружения управляющие последовательности для терминала, может быть использовано для атаки на сам процесс Java. Однако в большинстве сценариев для эксплуатации требуется локальный доступ к системе или способность влиять на аргументы, передаваемые в ioctl().
Согласно бюллетеню безопасности, выпущенному после выявления уязвимости, проект jansi официально признан неподдерживаемым, и новые версии не планируются. "Все версии библиотеки считаются уязвимыми. Проект не сопровождается, патч не будет выпущен", - сообщается в примечании к CVE. Это означает, что ответственность за устранение проблемы полностью ложится на пользователей библиотеки.
Разработчикам, использующим jansi, рекомендуется рассмотреть миграцию на альтернативные решения или на стандартный функционал терминального вывода без JNI-зависимостей. Если переход невозможен, необходимо ограничить передачу пользовательских данных в ioctl() на уровне кода приложения, а также понизить привилегии процесса до минимально необходимых. Поскольку уязвимость может привести к отказу в обслуживании, любое приложение, использующее jansi на серверах или в критических автоматизированных сценариях, должно быть оценено на предмет рисков отказа в обслуживании. При отсутствии патча и бездействии со стороны пользователя уязвимость остаётся неисправленной, что создаёт постоянную угрозу стабильности работы систем.
Ссылки