Spring4Shell: descoberto novo zero-day

O spring-core é uma estrutura amplamente usada em aplicativos Java que permite que desenvolvedores de software desenvolvam aplicativos Java com componentes de nível empresarial. Uma nova vulnerabilidade afetando esse produto foi identificada e exploits e provas de conceito que a exploram já estão disponíveis na internet.

SRING4SHELL – CVE-2022-22965

“Spring4Shell” ou “SpringShell” é uma vulnerabilidade no framework Spring , publicada no dia 30 de março de 2022, sendo uma vulnerabilidade de dia zero ou zero-day, que permite a execução remota de código – Remote Code Execution (RCE). A exploração desta vulnerabilidade depende de um endpoint com DataBinder habilitado, que decodifica os dados do corpo da solicitação automaticamente. Essa propriedade pode permitir que um invasor aproveite o Spring4Shell contra um aplicativo vulnerável.

Requisitos para a exploração da vulnerabilidade:

  • JDK 9 ou superior;
  • Apache Tomcat como o contêiner Servlet;
  • Empacotado como um WAR tradicional (em contraste com um jar executável do Spring Boot);
  • Dependência spring-webmvc ou spring-webflux;
  • Spring Framework versões 5.3.0 a 5.3.17, 5.2.0 a 5.2.19 e versões mais antigas.

Conclusão

Diante de uma vulnerabilidade ainda sem patch de correção, recomenda-se seguir as instruções fornecidas pelo fabricante como forma de mitigar temporariamente a vulnerabilidade.

Passo a passo

Passo 1

Pesquise no application group globally pela nota @InitBinder e veja se o método dataBinder.setDisallowedFields é chamado dentro do método. Se a introdução deste código snippet for encontrada, adicione {“class.“, “Class.“, “.class.“, “.Class.“} à lista de bloqueio original. (Obs.: se este trecho de código for usado com mais frequência, ele precisará ser adicionado em cada local).

Passo 2

Crie a seguinte classe global no pacote do projeto e certifique-se de que a classe seja carregada pelo Spring (recomenda-se adicioná-la no pacote onde o Controller está localizado). Depois de adicionar a classe, você precisa recompilar, gerar um novo pacote do projeto, verificar a funcionalidade e republicar o projeto.

As recomendações dadas pela Spring e outros detalhes podem ser encontrados nos links a seguir:

About Spring Core Spring Beans Remote Code Warning Notice for Execution 0day Vulnerability

Spring Framework RCE

Referências

  1. Qualys Blog
  2. Spring.io