A Alibaba Cloud descobriu recentemente uma vulnerabilidade de execução remota de código (RCE) no componente Apache Log4j2 e a reportou à Apache Software Foundation. Este tópico descreve o impacto da vulnerabilidade e o plano de correção correspondente.
Impacto
No E-MapReduce (EMR), os componentes afetados incluem Hive, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark e Zeppelin. O Spark e o Zeppelin são afetados porque dependem do componente Hive.
Plano de correção
Substitua os arquivos JAR vulneráveis do Log4j2 no seu cluster EMR pela versão 2.17.2 e modifique a configuração do Log4j no Hive e no Spark para desativar o recurso JNDI Lookup definindo log4j2.formatMsgNoLookups=true. Para instruções detalhadas, consulte Procedimento de correção.
Este plano de correção apresenta as seguintes características:
Aplica-se ao EMR-3.38.2 e anteriores, EMR-5.4.2 e anteriores e versões EMR 4.x. A vulnerabilidade foi corrigida no EMR-3.38.3 e posteriores e no EMR-5.4.3 e posteriores. Nenhuma ação é necessária para essas versões.
Reinicie os componentes correspondentes após aplicar este plano.
O script de correção não afeta seus services online. No entanto, como a correção só entra em vigor após a reinicialização dos componentes, recomendamos executar este procedimento em horários de baixa demanda.
Procedimento de correção
Clusters EMR
Clique em patches-log4j.tar.gz para baixe o pacote de patch.
Faça login no nó mestre do cluster EMR e coloque o pacote de patch baixado na Etapa 1 no diretório HOME do usuário
emr-userouhadoop.-
Descompacte o pacote de patch e execute os comandos a seguir como usuário
emr-userouhadoop.-
Para clusters de cenários DataLake, Dataflow, OLAP, DataServing e personalizados:
su emr-user tar zxf patches-log4j.tar.gz -
Para outros clusters:
su hadoop tar zxf patches-log4j.tar.gz
-
-
Edite o arquivo hosts no pacote de patch para adicionar os nomes de host de todos os nós do cluster, como emr-header-1 ou emr-worker-1. Adicione um nome de host por linha.
cd patches vim hostsVeja a seguir um exemplo do conteúdo do arquivo hosts:
emr-header-1 emr-worker-1 emr-worker-2ImportantePara clusters que executam EMR 3.41 ou posterior na série EMR 3.x, ou EMR 5.7.0 ou posterior na série EMR 5.x, o formato do nome de host mudou. Veja a seguir um exemplo do conteúdo do arquivo hosts:
core-1-1 core-1-2 task-1-1 task-1-2 -
Execute o script fix.sh para aplicar a correção.
./fix.shApós a execução, o script retorna a seguinte mensagem:
### NOTICE: YOU CAN RESTORE THIS PATCH BY RUN RESTORE SCRIPT ABOVE $> sh ./restore.sh 20211213001755 ### DONEPara reverter a correção, execute o comando a seguir:
./restore.sh 20211213001755NotaPara jobs YARN (aplicações) em execução, como jobs Spark Streaming ou Flink, pare os jobs antes de realizar uma reinicialização gradual dos NodeManagers do YARN.
-
Reinicie os services.
Para corrigir totalmente a vulnerabilidade, reinicie os componentes afetados, incluindo Hive, HDFS, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark e Zeppelin.
Para reiniciar o componente Hive, acesse a página de service do Hive no console EMR e escolha no canto superior direito.
Clusters Gateway
Este procedimento de correção depende de acesso SSH sem senha. Para um cluster gateway, faça upload manual do pacote de patch para cada nó do cluster e siga o procedimento para clusters EMR a fim de aplicar a correção em cada nó.
No arquivo hosts do pacote de patch, insira apenas o
hostnamedo nó atual.Um cluster gateway não executa processos de componentes. Portanto, não é necessário reiniciar nenhum service após fazer upload do pacote de patch.
Novos clusters e expansões
Adicione uma ação de bootstrap no console EMR para corrigir automaticamente a vulnerabilidade ao criar um cluster EMR ou expandir um cluster existente. Siga estas etapas:
-
Clique em patches-log4j.tar.gz e bootstrap_log4j.sh para baixe o pacote de patch e o script de bootstrap e, em seguida, faça upload deles para o Object Storage Service (OSS).
Por exemplo, os caminhos OSS dos arquivos são oss://<bucket-name>/path/to/patches-log4j.tar.gz e oss://<bucket-name>/path/to/bootstrap_log4j.sh.
-
Adicione uma ação de bootstrap no console EMR. Para mais informações, consulte Gerenciar ações de bootstrap.
Na caixa de diálogo Add Bootstrap Action, configure os parâmetros.
Parâmetro
Descrição
Name
Nome da ação de bootstrap. Exemplo: fix-log4j-vulnerability.
Script Address
Localização OSS do script.
O caminho do script deve estar no formato oss://**/*.sh. Neste exemplo, use oss://<bucket-name>/path/to/bootstrap_log4j.sh.
Parameter
Parâmetro para o script da ação de bootstrap, que especifica os valores das variáveis referenciadas no script.
Neste exemplo, use oss://<bucket-name>/path/to/patches-log4j.tar.gz .
Execution Scope
Selecione Cluster.
Execution Time
Selecione After Component Startup.
Execution Failure Policy
Selecione Proceed.
Ao expandir um cluster existente, reinicie apenas os componentes correspondentes nos novos nós. Se você crie um novo cluster, será necessário reiniciar componentes como HDFS, Hive, Presto, Impala, Druid, Flink, Solr, Ranger, Storm, Oozie, Spark e Zeppelin.