VxRail: Vulnerabilidade de correção do gerenciador Apache Log4Shell (CVE-2021-44228, CVE-2021-45046)
Resumo: Este artigo descreve um script que pode ser executado no VxRail Manager para corrigir a vulnerabilidade do Apache Log4Shell, descrita no CVE-2021-44228, CVE-2021-45046 e CVE-2021-4104 (artigo da Dell DSN-2021-007, artigo da VMware VMSA-2021-0028). ...
Instruções
A Apache Software Foundation publicou informações sobre um problema crítico de vulnerabilidade de execução remota de código da biblioteca Apache Log4j, conhecido como Log4Shell, de acordo com o GitHub Advisory Database (também detalhado em CVE-2021-44228
, CVE-2021-45046
e CVE-2021-4104
). O VxRail Manager está exposto ao problema descrito na vulnerabilidade.
Para obter mais informações sobre esses CVEs, consulte os seguintes artigos:
- Vulnerabilidades de segurança do Apache Log4j
- CVE-2021-45046
(Log4j 2.15)
- CVE-2021-4104
(Log4j 1.2)
Foi detectado um problema adicional no script anterior que pode resultar na restauração de um arquivo afetado no VxRail Manager a partir de um arquivamento do sistema. Esse problema também foi resolvido nesta versão.
Se você usou qualquer script anterior fornecido com este artigo, faça download do script mais recente (1.1.2) e execute-o no VxRail Manager para garantir que você tenha a correção completa.
Requisitos e escopo
O escopo do que está coberto pelas etapas de correção neste artigo são:
- Este artigo se aplica ao VxRail Manager nas versões VxRail 4.5.x, 4.7.x e 7.0.x juntamente com o VxRail Manager nas versões VCF 3.x e 4.x.
- O script e as etapas de correção fornecidos corrigem a vulnerabilidade apenas na VM do equipamento VxRail Manager.
- Outros componentes fora do VxRail Manager, como vCenter Server Appliance (vCSA), NSX, entre outros, devem ser reduzidos separadamente e não estão nesse script.
- Além disso, o script não corrige nenhum aplicativo ou serviço executado dentro de VMs que possam estar expostas à vulnerabilidade. A Dell Technologies recomenda que todos os clientes consultem seus fornecedores de aplicativos ou softwares os serviços em execução nas VMs para garantir que eles não sejam afetados.
Os links para os produtos VMware afetados e as possíveis soluções temporárias estão detalhados no seguinte artigo do VMSA da VMware:
A VMware fornece um script para automatizar a correção do vCenter Server Appliance no seguinte artigo:
Anexado a este artigo está o arquivo fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip que contém apenas o script do VxRail Manager.
Versões do VxRail com correção incluída
Esse problema foi resolvido nas seguintes versões de software do VxRail:
- Software do pacote VxRail 7.0.320
- Software do VxRail Appliance 4.7.541
- Software do VxRail Appliance 4.5.471
É recomendável fazer upgrade para uma versão de software do VxRail que inclua a correção.
O script é recomendado para clientes que não conseguem fazer upgrade imediatamente.
Nota: Se o cluster do 7.0.xxx do VxRail for gerenciado por um vCenter gerenciado pelo cliente, consulte o artigo a seguir para obter outras considerações que podem ser aplicáveis:
Considerações adicionais para scripts legados de patching:
Se você executou anteriormente um script de atualização anterior (mais antigo que fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip) no VxRail Manager, esteja ciente do seguinte:
-
- Esse script cria cópias de backup dos arquivos jar originais com uma extensão ".bak" e os mantém nos diretórios originais da biblioteca.
-
Esses arquivos .bak podem causar problemas de inicialização do serviço após o upgrade para o VxRail 8.0.380 ou posterior, pois eles serão carregados por engano junto com os arquivos ativos no mesmo diretório.
Siga as etapas abaixo para realocar arquivos .bak legados e garantir a operação normal do sistema:
- Verificar se há arquivos .bak existentes
find /mystic/connectors -name "log4j-core*.bak"
- Se .bak arquivos forem encontrados, mova-os para um local seguro:
mkdir -p /tmp/log4jbakfind /mystic/connectors -name "log4j-core*.bak" -type f -exec mv {} /tmp/log4jbak/ \;
- Check.bak arquivos não existentes em
/mystic/connectorse, em seguida, reinicie o serviço:
-
- Cenário A — Se você AINDA NÃO realizou o upgrade do LCM:
- Continue com o upgrade do LCM. O processo de upgrade reiniciará automaticamente todos os serviços.
- Cenário A — Se você AINDA NÃO realizou o upgrade do LCM:
-
- Cenário B — Se você JÁ concluiu o upgrade do LCM e está enfrentando uma falha no plug-in do VC:
- Reinicie o VxRail Manager:
systemctl restart vmware-marvinservice runjars restart
- Reinicie o VxRail Manager:
- Cenário B — Se você JÁ concluiu o upgrade do LCM e está enfrentando uma falha no plug-in do VC:
Etapas de correção
Para corrigir os problemas, execute as seguintes etapas:
- Faça download do
fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.ziparquivo anexado a este artigo. - Carregue o arquivo.zip no VxRail Manager usando um usuário mystic pelo SCP (o WinSCP é um exemplo de um client SCP que pode ser usado).
- Faça login no console da VM ou SSH do VxRail Manager usando o usuário mystic.
- Altere o diretório para o qual você carregou o arquivo .zip e extraia-o usando o comando unzip:
mystic@vxrm:~> unzip fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip Archive: fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip inflating: fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- Torne o script executável usando o comando chmod:
mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- Faça login como usuário root do VxRail Manager usando o comando su:
mystic@vxrm:~> su - Password:
- Verifique se você está no mesmo diretório em que extraiu o pacote de scripts:
vxrm:~ # cd /home/mystic vxrm:/home/mystic #
- Execute o script:
vxrm:/home/mystic # ./fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Exemplo de saída de script:
Stop MARVIN and runjars service before patching the system /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar To ensure there is no reload behavior, we need to pack the .war file as well. looks like /usr/lib/vmware-marvin/marvind/webapps/ROOT.war contains the bad log4j-core library WEB-INF/lib/log4j-core-2.13.0.jar Archive: /usr/lib/vmware-marvin/marvind/webapps/ROOT.war inflating: WEB-INF/lib/log4j-core-2.13.0.jar Patching WEB-INF/lib/log4j-core-2.13.0.jar in /usr/lib/vmware-marvin/marvind/webapps/ROOT.war Repack /usr/lib/vmware-marvin/marvind/webapps/ROOT.war updating: WEB-INF/lib/log4j-core-2.13.0.jar (deflated 11%) Clean up the ROOT folder... Always apply a reboot of MARVIN and runjars services restart MARVIN MARVIN restart successfully restart runjars runjars restart successfully
Aguarde pelo menos 10 minutos se você planeja executar qualquer uma das etapas de validação manual abaixo.
Há várias versões diferentes da biblioteca lib4j-core, dependendo da versão do VxRail Manager.
O script foi projetado para corrigir corretamente o VxRail Manager, independentemente da versão da lib4j-core incluída nessa versão do VxRail Manager.
A saída acima da execução do script pode mostrar arquivos diferentes sendo atualizados, dependendo da versão do lib4j-core incluída.
Etapas de validação
Para corrigir o problema, o script remove o arquivo JndiLookup.class dos arquivos jar lib4j-core-*.
Um arquivo jar é um formato de empacotamento Java para incluir várias classes, metadados e outros programas Java em um só arquivo. Ele é semelhante em conceito a um arquivo .zip e é baseado no formato .zip. A execução do script valida se cada arquivo jar foi atualizado com sucesso.
Para executar uma validação manual de que o script funcionou, você pode verificar se o log4j-core-* Os arquivos jar presentes no VxRail Manager ainda contêm o arquivo JndiLookup.class afetado. Se tiver funcionado, você não verá nenhuma saída para os comandos abaixo, o que confirma o impacto JndiLookup.class O arquivo não está mais presente no arquivo JAR.
JndiLookup.class O arquivo foi corrigido em log4j-core-2.17.1.jar e versões posteriores, portanto, a tentativa de executar as etapas de validação nesses arquivos jar mostra o JndiLookup.class O arquivo está presente, mas o problema foi corrigido. É seguro ignorar ver que JndiLookup.class em versões fixas do log4j-core.
Validação com comando automatizado
O seguinte comando pode ser executado no VxRail Manager para verificar todos os log4j-core-xxxx.jar arquivos presentes no VxRail Manager e verificar se eles contêm os arquivos JndiLookup.class do servidor do NetWorker Management Console (NMC):
vxrm:/home/mystic # for myfile in `find / -name log4j-core*jar -print |grep -v log4jbak`; do echo $myfile; unzip -l $myfile | grep JndiLookup.class; done
Exemplo de resultado (sistema atualizado):
/mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar
No exemplo acima, o JndiLookup.class O arquivo não está presente no JAR, portanto, o script funcionou e a verificação foi bem-sucedida.
Veja abaixo um exemplo de saída de um sistema afetado que deve ser atualizado:
/mystic/connectors/eservice/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /mystic/connectors/cluster/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class
No exemplo acima, o JndiLookup.class O arquivo ainda está presente no log4j-core-2.13.3.jar Arquivo JAR.
Veja abaixo um exemplo de saída de um sistema que tem um log4j-core biblioteca onde se vê o JndiLookup.class O arquivo pode ser ignorado:
/usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/eservice/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/cluster/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
No exemplo acima, você pode ver o JndiLookup.class na saída, mas a correção para o problema está em log4j-core-2.17.1.jar.
Validação com verificação manual de cada arquivo
Para identificar rapidamente qualquer log4j-core-xxxx.jar arquivos presentes no VxRail Manager, execute o seguinte comando (isso também formata a saída em um comando utilizável):
vxrm:/home/mystic # find / -name log4j-core*jar -print |grep -v log4jbak | awk '{print("unzip -l " $1 "|grep JndiLookup.class")}'
Exemplo de resultado:
unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class
No exemplo de resultado acima, execute cada comando manualmente para ver se eles detectam o afetado JndiLookup.class do servidor do NetWorker Management Console (NMC):
vxrm:/home/mystic # unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic #
No exemplo acima, o JndiLookup.class O arquivo não está presente no JAR, portanto, o script funcionou e a verificação foi bem-sucedida.
Um exemplo do resultado de um arquivo jar que ainda está afetado e contém o afetado
JndiLookup.class do servidor do NetWorker Management Console (NMC):
vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.4.1.jar |grep JndiLookup.class 2576 2015-10-08 17:50 org/apache/logging/log4j/core/lookup/JndiLookup.class
No exemplo acima, o JndiLookup.class O arquivo ainda está presente no log4j-core-2.4.1.jar Arquivo JAR.