CVE-2016-3427
Oracle Java SE and JRockit
2023-05-12
Oracle Java SE and JRockit contains an unspecified vulnerability that allows remote attackers to affect confidentiality, integrity, and availability via vectors related to Java Management Extensions (JMX). This vulnerability can be exploited through sandboxed Java Web Start applications and sandboxed Java applets. It can also be exploited by supplying data to APIs in the specified component without using sandboxed Java Web Start applications or sandboxed Java applets, such as through a web service.
Технический анализ и план устранения
Суть уязвимости
CVE-2016-3427 представляет собой критическую уязвимость в компоненте JMX (Java Management Extensions), связанную с небезопасной десериализацией данных. Проблема возникает из-за того, что JMX-интерфейс некорректно обрабатывает входящие объекты, передаваемые через RMI (Remote Method Invocation).
Злоумышленник может передать специально сформированный сериализованный объект, который при десериализации на стороне сервера приведет к выполнению произвольного кода (RCE). Уязвимость затрагивает конфиденциальность, целостность и доступность системы. Атака возможна как через апплеты/Java Web Start, так и через прямые вызовы API (например, в веб-сервисах), если они взаимодействуют с JMX без должной фильтрации.
Как исправить
Основным и наиболее надежным способом устранения уязвимости является обновление среды выполнения Java (JRE) или комплекта разработки (JDK) до версий, в которых Oracle внедрила механизмы фильтрации и проверки типов при десериализации.
- Обновите Oracle Java SE до актуальных версий (исправления включены в Critical Patch Update за апрель 2016 года и более поздние):
- Java SE 7: Update 101 и выше.
-
Java SE 8: Update 91 и выше.
-
Для систем на базе Linux (Debian/Ubuntu):
apt-get update && apt-get install --only-upgrade default-jdk
- Для систем на базе RedHat/CentOS:
yum update java-1.8.0-openjdk
- Для Oracle JRockit:
- Установите версию R28.3.10 или выше.
Временные меры
Если немедленное обновление платформы невозможно, необходимо ограничить векторы атаки на уровне конфигурации и сети.
- Отключите удаленный доступ к JMX, если он не требуется для мониторинга: Удалите или закомментируйте следующие параметры в аргументах запуска JVM:
-Dcom.sun.management.jmxremote
- Если JMX необходим, включите обязательную аутентификацию и SSL (хотя это не устраняет уязвимость десериализации полностью, это ограничивает круг лиц, способных провести атаку):
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=true
-
Настройте сетевой экран (Firewall), чтобы разрешить доступ к портам JMX (по умолчанию 1099 или кастомные порты) только с доверенных IP-адресов (IP-адресов систем мониторинга).
-
Используйте параметры фильтрации десериализации (доступно в более новых сборках Java 7/8), чтобы ограничить разрешенные классы:
-Djdk.serialFilter=maxarray=100000;!*
- Отключите поддержку Java Applets и Java Web Start в браузерах и на рабочих станциях пользователей через настройки Java Control Panel.