Компания Oracle предупредила о нескольких уязвимостях в Java SE, GraalVM for JDK и GraalVM Enterprise Edition. Они связаны с некорректной проверкой доступа, обработкой графических данных и сетевыми протоколами. В зависимости от конкретной проблемы злоумышленник может получить несанкционированный доступ к данным, нарушить доступность Java-окружения или полностью его скомпрометировать. Наиболее серьёзная из уязвимостей оценивается в 7,8 балла по шкале CVSS, которая применяется для определения критичности проблем безопасности. Она позволяет локальному пользователю с низкими привилегиями захватить контроль над системой.
Детали уязвимостей
Затронуты все поддерживаемые линейки Oracle Java SE: 8u501, 11.0.32, 17.0.20, 21.0.12, 25.0.4 и 26.0.2. В списке также значатся Oracle GraalVM for JDK версий 17.0.20 и 21.0.12, а также Oracle GraalVM Enterprise Edition 21.3.19. Проблемы существуют и в других реализациях Java, включая OpenJDK, Amazon Corretto и Azul Zulu, что подтверждает системный характер ошибок. Переход с коммерческой версии Oracle на открытый OpenJDK не устраняет риск, поскольку значительная часть кода у этих продуктов общая. Дистрибутивы Linux уже начали публиковать собственные предупреждения, а Debian и Red Hat рекомендуют обновить пакеты openjdk-11 и openjdk-17.
Уязвимость с максимальной оценкой находится в компоненте Install. Она позволяет атакующему, который уже имеет локальный доступ к системе с ограниченными правами, повысить привилегии и выполнить произвольный код от имени запущенной Java-машины. В случае успешной эксплуатации это приводит к полному захвату Java-окружения, а иногда и всей операционной системы. Вторая по уровню опасности проблема относится к компоненту 2D. Она эксплуатируется удалённо без аутентификации через множественные протоколы. Злоумышленник может отправить специально сформированные данные в Java API и вызвать зависание или регулярный сбой виртуальной машины, что приводит к полному отказу в обслуживании.
Две другие уязвимости касаются раскрытия данных. Первая, с оценкой 6,8 балла, связана с сетевым взаимодействием и может быть использована через HTTP. Она позволяет неавторизованному пользователю получить доступ к критическим данным или полному объёму информации, доступной Java-приложению. Вторая уязвимость, оценённая в 3,7 балла, тоже приводит к несанкционированному чтению части данных, но для её эксплуатации требуются более сложные условия. Наконец, уязвимость в компоненте JSSE, используемом для защиты соединений по TLS, позволяет удалённо вызвать частичный отказ в обслуживании. Она не требует аутентификации и может быть применена через любой сервис, работающий по защищённому протоколу.
Особую опасность представляет тот факт, что несколько уязвимостей эксплуатируются без каких-либо учётных данных. Атаки возможны через веб-сервисы, которые передают недоверенные данные в Java API, а также через устаревшие, но всё ещё встречающиеся на практике Java Web Start приложения и апплеты. В таких сценариях код, загруженный из интернета, выполняется в изолированной среде, однако уязвимости позволяют обойти ограничения безопасности. В бюллетене Oracle значится характеристика Improper Access Control, то есть некорректное управление доступом. Это означает, что в некоторых компонентах не выполняются должные проверки прав при обращении к данным или функциям, что и приводит к раскрытию информации.
На практике наиболее вероятными целями атак станут серверные приложения, которые принимают данные из интернета и передают их в Java API. Например, веб-сервисы, обрабатывающие изображения, документы или сетевые запросы, могут быть использованы для отправки вредоносных входных данных. В случае уязвимости в компоненте 2D такой ввод способен привести к аварийному завершению процесса, что вызовет простой сервиса. Атака на JSSE возможна через любое TLS-соединение, если злоумышленник может контролировать параметры рукопожатия. Несмотря на то что оценки CVSS варьируются от 3,7 до 7,8, даже умеренные показатели не означают отсутствия риска, особенно в инфраструктурах, где Java используется для обработки внешних данных.
Из-за того что Java встроена в огромное количество корпоративных систем, уязвимости затрагивают не только прямых пользователей Oracle Java SE. Под удар попадают дистрибутивы Linux, в состав которых входит OpenJDK, а также продукты компаний Amazon, IBM, Red Hat, SUSE и других поставщиков. NetApp уже сообщила о подверженности своих решений, что указывает на возможное каскадное распространение проблем по цепочке поставок. В настоящее время нет информации о реальных атаках с использованием этих уязвимостей. Однако учитывая доступность технических деталей и высокую ценность Java-платформ как цели, не исключено быстрое появление вредоносных программ, нацеленных на перечисленные версии.
Для устранения проблем доступны обновления в рамках августовского критического обновления Oracle. Рекомендуется обновить Java SE до версий 8u501, 11.0.32, 17.0.20, 21.0.12, 25.0.4 или 26.0.2, а GraalVM for JDK - до 17.0.20 или 21.0.12. Для GraalVM Enterprise Edition актуальной версией является 21.3.19. Пользователям производных сборок, таких как OpenJDK, Debian, Ubuntu или Amazon Corretto, необходимо дождаться обновлений от соответствующих дистрибутивов или вендоров. При этом стоит помнить, что установка исправлений не заменяет базовых правил безопасности: ограничение локального доступа, сегментация сети и контроль входящих данных остаются обязательными мерами.
Эти уязвимости не являются беспрецедентными - ошибки в Java-компонентах возникают регулярно, однако они показывают, что даже умеренные по шкале CVSS проблемы могут иметь серьёзные последствия. Наличие уязвимости, приводящей к полному захвату системы при локальном доступе, подчёркивает важность принципа минимальных привилегий. Удалённо эксплуатируемые проблемы в компонентах 2D и JSSE напоминают о необходимости своевременного обновления всех компонентов, участвующих в обработке сетевых данных. Для администраторов и разработчиков это ещё один повод пересмотреть процессы управления исправлениями и убедиться, что Java-окружения в их инфраструктуре не остаются без обновлений надолго.
Ссылки