Компилятор GraalVM в Oracle Java SE позволяет удалённо выполнить код и вызвать отказ в обслуживании

Oracle Java

Oracle опубликовала бюллетень cspusep2026, в котором описаны три уязвимости в Java SE. Все они затрагивают компилятор GraalVM - среды выполнения, которая переводит Java-код в машинные инструкции и собирает приложения в нативные исполняемые файлы. Атака идёт по сети, не требует учётных данных и не зависит от действий пользователя. Две уязвимости дают полный контроль над средой, третья открывает доступ к данным и позволяет вызвать частичный отказ в обслуживании.

Детали уязвимостей

Под угрозой оказались четыре поддерживаемые ветки продукта: Oracle GraalVM Enterprise Edition, сборки GraalVM для JDK 17 и JDK 21, а также ветка GraalVM 25.0. Ветки для JDK 17 и JDK 21 относятся к выпускам с длительной поддержкой, поэтому их используют дольше остальных. Речь идёт не только о компьютерах разработчиков. GraalVM подключают к серверным сборкам приложений, поэтому уязвимые версии могут находиться и в уже развёрнутых системах.

Oracle присвоила двум уязвимостям, CVE-2026-83357 и CVE-2026-83408, по 8,1 балла по шкале CVSS (общая система оценки уязвимостей, где 10 - максимум). Их успешная эксплуатация приводит к захвату среды. Третья уязвимость получила 7,0 балла: злоумышленник получает доступ к критичным данным, может менять или удалять их и частично нарушать работу сервиса. Общий список проблем и записи CVE опубликованы в бюллетене.

Все три проблемы объединяет одинаковый сценарий доступа. Нужен сетевой доступ по протоколу HTTP, учётные данные не требуются, участие пользователя тоже не нужно. При этом Oracle относит уязвимости к сложным для эксплуатации. Злоумышленнику придётся подобрать условия: состояние среды, данные на входе компилятора, момент запуска сборки. Сканирования портов здесь недостаточно, но и особых прав не нужно.

Компилятор - редкое место для ошибок безопасности. Обычно он работает с кодом, который уже загружен и проверен, а не с внешними данными. Однако GraalVM применяют в серверных сценариях, где приложение принимает запросы извне. Ошибка в компиляторе позволяет выйти за пределы изолированной среды и выполнить произвольный код с правами процесса. В бюллетене это описано как захват продукта.

Захват среды означает, что атакующий распоряжается данными приложения: учётными данными, ключами доступа, содержимым памяти. Если такая среда работает во внутренней сети, от неё открывается путь к соседним системам. Для уязвимости, которая приводит к частичному отказу в обслуживании, последствия скромнее. Сервис начинает отвечать медленнее или отклоняет часть запросов, и этого хватает, чтобы нарушить работу приложения под нагрузкой.

Круг затрагиваемых организаций широк. GraalVM используют для микросервисов, облачных функций и сборки нативных исполняемых файлов, которые запускаются быстрее обычной виртуальной машины Java. Платформа встречается в банковских, телекоммуникационных и государственных системах. Для них важна не столько сама уязвимость, сколько время, за которое исправление дойдёт до готовых сборок.

Сведений об использовании этих уязвимостей в реальных атаках в бюллетене нет. Опубликованных эксплойтов (вредоносного кода, использующего уязвимость) там тоже нет. Сложность эксплуатации снижает вероятность массовых попыток, но не исключает их. Ошибки в компиляторах редки, поэтому привлекают внимание исследователей: каждая такая находка уточняет, где проходит граница между данными и кодом.

Исправления Oracle собрала в бюллетене от 15 сентября 2026 года, уведомление о проблемах вышло 16 сентября. Номера версий с исправлениями перечислены в бюллетене - обновляться нужно до них. Первым шагом для организации становится инвентаризация: какие сборки используют уязвимые ветки и где они развёрнуты. Дальше идёт плановое обновление с пересборкой приложений, потому что GraalVM часто встраивают в готовые образы. Патч нужен и на машинах разработчиков: среда сборки давно не изолирована от рабочих сетей.

Проверить, что установлено на конкретной машине, помогает команда java -version: сборки GraalVM указывают себя в первой строке вывода. Для серверных развёртываний тот же результат даёт сверка с перечнем веток в бюллетене. Если обновление затягивается, доступ к сервисам, которые принимают запросы извне и запускают компиляцию, ограничивают на уровне сети. Помогает и наблюдение за журналами: необычная активность компилятора или резкие скачки нагрузки на процессор косвенно указывают на попытку эксплуатации.

Уязвимости в компиляторах и средах выполнения затрагивают сразу все приложения, собранные на платформе. Производители пересобирают продукты с разной скоростью, поэтому между выходом исправлений и их установкой проходят недели. Полнота обновления здесь важна не меньше скорости: одна забытая ветка GraalVM в цепочке сборки оставляет систему уязвимой.

Ссылки

Комментарии: 0