Este artigo tem como objetivo fornecer uma compreensão abrangente sobre os metadados do EC2, abordando sua importância e como desabilitá-los para fortalecer a segurança contra ataques como o SSRF.
A Amazon Web Services (AWS) oferece o serviço Amazon Elastic Compute Cloud (Amazon EC2), que proporciona capacidade de computação escalável. Ao utilizar o Amazon EC2, é possível desenvolver e implantar aplicativos de forma mais rápida, sem a necessidade de investimentos iniciais em hardware.
Com o Amazon EC2, você pode iniciar o número de servidores virtuais que melhor se adequa às suas necessidades, ajustando configurações de rede e segurança, além de controlar o armazenamento.
Os metadados de instância são informações personalizáveis ou gerenciáveis em uma instância em execução. Estas categorias incluem o nome do host, eventos e grupos de segurança. Além disso, é possível acessar dados de usuário especificados durante a execução da instância através dos metadados.
Ao configurar sua instância, você pode inserir scripts ou especificar parâmetros. Os dados do usuário permitem a criação de AMIs genéricas e a alteração de arquivos de configuração em tempo de execução.
Ao ajustar as opções de metadados de instância, é possível configurar instâncias novas ou existentes para realizar as seguintes tarefas:
- Exigir que solicitações de metadados de instância sejam enviadas utilizando o IMDSv2
- Definir um limite para saltos de resposta PUT.
- Bloquear o acesso a metadados da instância.
O acesso aos metadados de uma instância EC2 ativa pode ser feito através de duas técnicas: IMDSv1 e IMDSv2.
O serviço de metadados da instância é conhecido como IMDS. As metodologias diferem ligeiramente: o IMDSv1 utiliza um modelo de solicitação/resposta, enquanto o IMDSv2 é baseado em sessões.
A AWS recomenda o uso do IMDSv2, que é considerado o método preferencial. Por padrão, o AWS SDK emprega chamadas IMDSv2, e é possível exigir que novos EC2s sejam configurados com o IMDSv2 habilitado através de chaves de condição do IAM em uma política do IAM.
Para visualizar todos os tipos de metadados de instância de uma instância em execução, utilize os seguintes URIs IPv4 ou IPv6:
IPv4:
curl http://169.254.169.254/latest/meta-data/
IPv6:
curl http://[fd00:ec2::254]/latest/meta-data/
Os endereços IP são endereços locais de link e válidos somente dentro da instância.
Para acessar os metadados da instância, você pode usar o endereço local de link 169.254.169.254. As solicitações aos metadados por meio do URI são gratuitas, não gerando custos adicionais pela AWS.
A Necessidade de Desabilitar Metadados
Ataques SSRF são frequentes e amplamente conhecidos em configurações AWS. A empresa de segurança cibernética Mandiant identificou invasores que automatizam a verificação de vulnerabilidades e coletam credenciais do IAM de aplicativos online acessíveis publicamente.
A implementação do IMDSv2 em todas as instâncias EC2, que oferece vantagens de segurança adicionais, minimizaria esses riscos para sua organização. O IMDSv2 reduz significativamente a possibilidade de roubo de credenciais do IAM via SSRF.
Uma das técnicas de exploração da AWS mais comuns é o uso do Server Side Request Forgery (SSRF) para obter acesso ao serviço de metadados do EC2.
O serviço de metadados é acessível na maioria das instâncias EC2 em 169.254.169.254 e contém informações sobre a instância, como endereço IP e nome do grupo de segurança.
Se uma função do IAM estiver vinculada a uma instância EC2, o serviço de metadados também incluirá credenciais do IAM para autenticação dessa função. Dependendo da versão do IMDS e dos recursos do SSRF, essas credenciais podem ser roubadas.
É crucial considerar que um atacante com acesso shell à instância EC2 também poderia obter essas credenciais.
Um exemplo comum é um servidor web em execução na porta 80 de uma instância EC2 com uma vulnerabilidade SSRF, permitindo enviar solicitações GET para qualquer endereço, incluindo o endereço do serviço de metadados http://169.254.169.254
.
Como Desabilitar Metadados
O acesso aos metadados de sua instância pode ser bloqueado desativando o endpoint HTTP do serviço de metadados, independentemente da versão em uso.
Essa alteração é reversível, reativando o endpoint HTTP. Para desabilitar metadados, utilize o comando da CLI modify-instance-metadata-options
e defina o parâmetro http-endpoint
como disabled
.
Execute o seguinte comando para desabilitar os metadados:
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint desativado
Após desabilitar os metadados, qualquer tentativa de acesso retornará uma mensagem “FORBIDDEN”.
Para habilitar os metadados novamente, use o seguinte comando:
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint habilitado
Conclusão
Metadados podem ser valiosos para extrair informações de grandes volumes de dados. No entanto, o uso indevido pode expor dados confidenciais. O registro de todas as alterações, incluindo exclusões e comentários, exige atenção para evitar o acesso não autorizado a informações sensíveis. Remover metadados é essencial para preservar a privacidade e o anonimato online.
Recomenda-se explorar outras terminologias e chaves da AWS para aprimorar seu aprendizado.