Hadoop Yarn - Vunerabilidade

Estou desenvolvendo para um cliente uma POC de integração da nossa solução, que eles já utilizam, com a solução de um outro parceiro nosso. Subi uma aplicação Python na porta 8088 do nosso servidor na Amazon e, de repente, o log registra, em média a cada 1 minuto, um request (POST), provenientes de IP variados, em um endpoint "/ws/v1/cluster/apps/new-application". Como não tenho esse endpoint implementado na minha aplicação, retorno um 404 e segue a vida! Mas, entretanto, porém, todavia, contudo, não obstante, isso pode representar um enorme problema para quem executa um Hadoop. Isso é uma tentativa de usar a vunerabilidade do Hadoop Yarn para invadir o seu sistema.
 
O Hadoop é uma infraestrutura de sistema distribuído desenvolvida pela Apache Foundation. YARN é uma plataforma unificada de gerenciamento de recursos em sistemas hadoop. Sua principal função é prover gerenciamento unificado e agendamento de recursos de cluster. A estrutura de computação MapReduce pode ser executada como um aplicativo. Acima do sistema YARN, os recursos são gerenciados por meio do YARN. Simplificando, um usuário pode enviar programas aplicativos específicos para o YARN para execução, o que permite a execução de comandos dos sistemas relacionados.
 
O YARN fornece APIs REST que são abertas por padrão nas portas 8088 e 8090. Os usuários podem executar diretamente a criação de aplicativos relacionados, o envio de tarefas e outras operações por meio da API. Se eles forem configurados incorretamente, as APIs REST serão abertas na rede pública e causarão acesso não autorizado. Com isso qualquer hacker pode usá-lo para a execução de comandos remotos, de modo a realizar mineração e outros atos.
 
Eu implementei esse endpoint (/ws/v1/cluster/apps/new-application) na minha aplicação apenas para logar os atributos e dados do request, e devolvo um 404 para que o intruso não fique sabendo que existe:
 
2019-05-25 09:53:41,115 [DEBUG] - __main__(app:41) *** request.form: {}
2019-05-25 09:53:41,115 [DEBUG] - __main__(app:42) *** request.data: {}
2019-05-25 09:53:41,116 [DEBUG] - __main__(app:43) *** request.arg: {}
2019-05-25 09:53:41,116 [DEBUG] - __main__(app:44) *** request.files: {}
2019-05-25 09:53:41,116 [DEBUG] - __main__(app:45) *** request.cookies: {}
2019-05-25 09:53:41,116 [DEBUG] - __main__(app:46) *** request.method: POST
2019-05-25 09:43:41,116 [DEBUG] - __main__(app:47) *** request.endpoint: unknow
2019-05-25 09:53:41,117 [DEBUG] - __main__(app:48) *** request.headers: {'Host': '54.94.202.66:8088', 'Content-Length': '0', 'User-Agent': 'python-requests/2.6.0 CPython/2.6.6 Linux/2.6.32-754.12.1.el6.x86_64', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
167.86.106.102 - - [25/May/2019 09:53:41] "POST /ws/v1/cluster/apps/new-application HTTP/1.1" 404 -
 
Nesse request não é enviado qualquer dado, mas a resposta positiva informa ao invasor que a porta está aberta.
 
SUGESTÃO: Alterem a porta dos serviços ReST do Hadoop Yarn e controle os inbounds do seu servidor para aceitar requisição apenas de IP conhecidos e autorizados.
Cuidados com a bateria do seu notebook ou celular

Recentemente eu tive que comprar uma bateria nova para o meu notebook, um Dell Inspiron 7560. Ele...

Hadoop Yarn - Vunerabilidade

Estou desenvolvendo para um cliente uma POC de integração da nossa solução, que eles já utilizam,...

Informação, Computação e Informática - A História - Parte I

Antes de discorrer sobre o tema, vamos explicá-lo. Por que está "dividido" em Informação,...