Skip to main content

Falha Ghostcat afeta todas as versões do Tomcat

Escrito por
ghostcat feature

25 de fevereiro de 2020

4 minutos de leitura

Apache Tomcat é uma implementação de código aberto das tecnologias Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket. O Tomcat é um dos ambientes de servidor web HTTP Java mais populares e foi lançado em 1998.

Ghostcat é uma vulnerabilidade de alta gravidade no Tomcat, descoberta em 3 de janeiro pelos pesquisadores de segurança da Chaitin Tech. Em 20 de fevereiro, o China National Vulnerability Database (CNVD) publicou um alerta de segurança sobre o problema, com o número CNVD-2020-10487.

A vulnerabilidade foi encontrada no Apache JServ Protocol (AJP). O problema é que esse protocolo binário permite que um invasor leia ou inclua qualquer arquivo nos diretórios de aplicações web do Tomcat.

Conector AJP

O conector AJP é responsável pela comunicação entre o Tomcat e o mundo externo. Por padrão, ele fica habilitado no Apache Tomcat, na porta 8009, nas versões de 6 a 9. Como o CVE-2020-1938 é uma vulnerabilidade de leitura e inclusão de arquivos no conector AJP do Tomcat, todas as versões que não incluem a correção estão vulneráveis. 

A vulnerabilidade permite que um invasor leia o conteúdo dos arquivos da aplicação web. Se a aplicação permitir o envio de arquivos, o invasor também poderá enviar qualquer arquivo para o servidor, incluindo páginas Java Server Pages (JSP) maliciosas que permitem a execução remota de código no servidor.

Logo do GhostCat com símbolos de olhos de gato em laranja e verde acima de letras em negrito brancas e laranjas

Solução

O Apache Tomcat já lançou versões corrigidas para o Tomcat 7, 8 e 9:

Os pesquisadores da Chaitin recomendam que, além de aplicar a correção, você adicione um segredo adequado à configuração do conector no arquivo /conf/server.xml.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" 
secret="YOUR_TOMCAT_AJP_SECRET" />

Quando não for possível aplicar a correção, há outras formas de reduzir o risco, segundo os pesquisadores da Chaitin.

Se você não usa o conector AJP, pode comentar ou excluir com segurança a declaração do conector AJP no arquivo /conf/server.xml.

<!--<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" />-->

Se você usa o conector AJP e não pode atualizar para a versão corrigida, adicione um campo requiredSecret com um segredo seguro e difícil de adivinhar.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET" />

Spring Boot

A versão mais recente do relatório do ecossistema JVM mostra que o Spring Boot é o framework de back-end mais usado nesse ecossistema. O Spring Boot usa um servidor web incorporado e, por padrão, usa a versão incorporada do Tomcat. É possível que o spring-boot-starter-web tenha incluído no seu sistema uma versão vulnerável do pacote Apache Tomcat incorporado.

Editado em 2 de março de 2020

É importante saber que, por padrão, o Spring Boot não cria um conector AJP automaticamente. Isso significa que, com as configurações padrão, um invasor não consegue explorar essa vulnerabilidade. No entanto, é possível configurar o Spring Boot de outras formas. Dependendo da sua configuração, verifique se você está vulnerável e tome as medidas necessárias.

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.

Leia mais