O mundo Java foi tomado pela tempestade, na semana passada, pela vulnerabilidade no Log4J2, código CVE-2021-44228, que permite a execução remota de código simplesmente fazendo chamadas de API para servidores vulneráveis. A compreensão da vulnerabilidade ainda está evoluindo e os relatórios estão sendo atualizados, a equipe do GeoServer está monitorando de perto e realizado adaptações conforme necessário. As informações a seguir são baseadas no entendimento atual da vulnerabilidade e serão atualizadas conforme novas informações forem lançadas.

É possível afirmar isso claramente: GeoServer, seguindo uma investigação, bem como entendimento da vulnerabilidade relatada, não é vulnerável ao CVE-2021-44228 uma vez que não usa Log4J2!

Em mais detalhes, GeoServer usa Log4J 1.2.17 e é crucial entender que Log4J e Log4J2 não são a mesma biblioteca: o 2 está no nome, não é apenas um número de versão, Log4J2 é uma reescrita completa do Log4J. Como consequência, o GeoServer não é vulnerável da mesma forma relatada no CVE-2021-44228: o entendimento atual é que ele não pode ser utilizado para executar uma tarefa remota de código simplesmente criando uma solicitação HTTP apropriada.

No entanto, Log4J 1.2 tem pequenas vulnerabilidades, que podem ser acionadas ao carregar os arquivos de configuração. Isso acontece se o invasor conseguir:

  • Obter acesso de gravação aos arquivos de configuração de log do GeoServer.
  • Definir uma nova configuração JMSAppender, na qual o TopicConnectionFactoryBindingName ou TopicBindingName aponta para um servidor remoto fornecendo classes maliciosas.
  • Forçar o GeoServer a recarregar a configuração de registro.

Log4J 1.2.17 também é vulnerável a CVE-2019-17571. Isso é ainda mais restrito do que o problema acima, já que a classe SocketServer precisa ser executada a partir da linha de comando explicitamente.

Dito isso, é importante notar que a configuração padrão do GeoServer não é vulnerável a eles e o invasor precisaria ir e modificar os arquivos de configuração de registro para acioná-lo.

1. Verificando vulnerabilidades

Como verificar se o seu servidor está vulnerável:

  • Verifique os arquivos de configuração de log , certifique-se de que não haja JMSAppender.
  • Certifique-se de que ninguém fora de sua organização possa obter acesso de gravação aos arquivos de configuração de registro, por exemplo:
    • Ninguém fora da sua organização tem acesso de administrador ao GeoServer. A API REST permite a gravação no diretório de dados usando o terminal do recurso e, se a extensão do recurso da web estiver instalada, os administradores também terão permissão para editar os arquivos por meio da GUI.
    • Ninguém fora de sua organização tem acesso de console ao servidor (por exemplo, SSH, serviços de terminal) e, se tiver, não terá permissão de gravação para os arquivos de configuração do GeoServer.

2. Eliminação de ameaças

O GeoServer lançou uma versão da biblioteca Log4J 1.2.17, que simplesmente não inclui as classes envolvidas nas vulnerabilidades CVE-2021-44228 e CVE-2019-17571. Esta biblioteca também pode ser usada com versões anteriores do GeoServer.

O arquivo está disponível no repositório Nexus. Simplesmente remova o log4j-1.2.17.jar existente e coloque o novo arquivo log4j-1.2.17.norce.jar na pasta geoserver/webapps/WEB-INF/lib e reinicie o geoserver.

A equipe do GeoServer está ciente de que Log4J 1.2.17 é um projeto “End Of Life” (EOL) e já estão procurando ativamente por financiamento para realizar uma atualização para versões mais recentes dele. Todas as novas bibliotecas de registro têm uma API diferente e um layout de arquivo de configuração diferente, com possíveis problemas de compatibilidade com versões anteriores, então isso provavelmente será feito em versões mais recentes do GeoServer (2.21.x)

Fonte: GeoServer