CVE-2023-50780: Опасные MBeans, доступные через Jolokia API в Apache ActiveMQ Artemis
Перечислив и проверив MBeans, доступные через Jolokia API по адресу http://127.0.0.1:8161/console/jolokia, были выявлены следующие векторы атак:
- Произвольная запись файла с использованием Log4J, косвенно приводящая к удалённому выполнению кода
- Произвольное чтение файла с использованием Log4J
- DoS с использованием Artemis Broker MBeans
Эта уязвимость может быть использована локальным злоумышленником, который знает базовые учётные данные аутентификации, используемые веб-интерфейсом Artemis.
Примечание: Если сервер запущен с параметром "--allow-anonymous", то для аутентификации можно использовать любую непустую комбинацию пользователя и пароля.
Раскрытие информации вендором:
Раскрытие информации об этой уязвимости вендором можно найти здесь.
Требования:
Эта уязвимость требует:
- Действительных учётных данных для пользователя с ролью "admin" (если требуется аутентификация)
Подтверждение концепции:
Поскольку было выявлено несколько векторов атак, более подробную информацию и интересующие вас процессы эксплуатации можно найти в одном или нескольких из следующих PDF-файлов:
- Первоначальный отчёт, отправленный вендору: Apache Artemis - CVE-2023-50780 - Initial Report.pdf. Вектор RCE требует:
- Возможности перезаписать файл "broker.xml" от имени пользователя, под которым запущен веб-сервер
- Перезапуска всего приложения Artemis, чтобы изменения в "broker.xml" вступили в силу (хотя мы можем использовать функцию "forceFailover()" для закрытия приложения, для его перезапуска всё равно потребуется действие администратора)
- Apache Artemis - CVE-2023-50780 - WAR + Restart Vector.pdf. Вектор RCE требует:
- Возможности перезаписать один из WAR-файлов, загруженных Artemis (например, "activemq-branding.war", "artemis-plugin.war" или "console.war"), от имени пользователя, под которым запущен веб-сервер
- Перезапуска встроенного веб-сервера Jetty с помощью функции "restartEmbeddedWebServer()" (вмешательство пользователя не требуется, так как эта функция может быть вызвана атакующим напрямую через Artemis Broker MBean)
- Apache Artemis - CVE-2023-50780 - JAR + jvmtiAgentLoad.pdf. Вектор RCE требует:
- Возможности записывать файлы в какое-либо место в файловой системе (например, "/tmp", "/dev/shm", "C:\Windows\Public" и т. д.) и использования Log4J для записи произвольного JAR-файла в это место
- Загрузки соответствующего JAR-файла и получения RCE с помощью функции "jvmtiAgentLoad([Ljava.lang.String;)"
Дополнительные ресурсы:
Запись в блоге от Xu "pyn3rd "Yuanzhen, объясняющая, как произвольная запись JAR + Jolokia могут быть использованы для получения RCE
Хронология:
- Об этой уязвимости первоначально было сообщено на [email protected] 14 февраля 2023 г.
- Apache раскрывает CVE-2023-50780 14 октября 2024 г.
- Публично раскрыты первоначальный отчёт и другие векторы 18 декабря 2024 г.