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
Referências
- Qualys Blog
- Spring.io