Logo

dev-resources.site

for different kinds of informations.

Resumo sobre a versão 2 do serviço de metadados de instância AWS EC2 (IMDSv2)

Published at
9/5/2021
Categories
imdsv2
aws
metadata
security
Author
rafaelonline
Categories
4 categories in total
imdsv2
open
aws
open
metadata
open
security
open
Author
12 person written this
rafaelonline
open
Resumo sobre a versão 2 do serviço de metadados de instância AWS EC2 (IMDSv2)

Por que a AWS lançou a versão 2 do IMDS?

Em 2019 uma nova versão do serviço de metadados de instâncias EC2 foi lançada adicionando proteção para quatro (04) tipos de vulnerabilidades que podem ser exploradas para acesso ao metadata, somando assim as mitigações existentes, como restrição de role e regras de firewall local.

  • WAF mal configurados
  • Proxies Reversos mal configurados
  • Vulnerabilidades SSRF não corrigidas
  • Firewalls de camada 3 e NATs mal configurados

O que há de novo?

Foi introduzido uma autenticação baseada em token, sendo que uma solicitação de PUT separada deve ser feita. As sessões podem durar até seis horas e, para maior segurança, um token de sessão só pode ser usado diretamente na instância EC2 em que a sessão começou.
Transição

Tanto o IMDSv1 quanto o IMDSv2 estarão disponíveis e habilitados por padrão. Também é possível restringir a apenas a versão 2, além de desabilitar totalmente o serviço.

Nosso objetivo é restringir a utilização a apenas a versão 2.

As novas consultas deverão ter o seguinte padrão de exemplo:

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`

[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
Enter fullscreen mode Exit fullscreen mode

Para saber se uma instância está realizando chamadas utilizando a versão 1 é possível utilizar a métrica “MetadataNoToken” do CloudWatch. Essa métrica retorna o número de vezes que o serviço de metadados foi acesso com sucesso sem a utilização de um token.

Habilitando a versão 2

Em instâncias já existentes

Use o comando modify-instance-metadata-options da CLI e defina o parâmetro http-tokens como required. Quando você especifica um valor para http-tokens, também deve definir http-endpoint como enabled.

aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567898abcdef0 \
    --http-tokens required \
    --http-endpoint enabled
Enter fullscreen mode Exit fullscreen mode

No lançamento de novas instâncias

  • Via console

Ao executar uma nova instância no console do Amazon EC2, selecione as seguintes opções na página
Configure Instance Details:
Em Advanced Details > Metadata accessible, selecione Enabled.
Em Metadata version, selecione V2 (token required).

  • Via terraform

Resource: aws_instance e aws_launch_template

Nas opções de metadata (metadata_options) a opção "http_tokens" deve estar requerida (required).

metadata_options {
    http_tokens   = "required"
    http_endpoint = "enabled"
}
Enter fullscreen mode Exit fullscreen mode

Referências:

https://aws.amazon.com/pt/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/

https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

https://www.youtube.com/watch?v=2B5bhZzayjI

https://d1.awsstatic.com/events/reinvent/2019/Security_best_practices_for_the_Amazon_EC2_instance_metadata_service_SEC310.pdf

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#metadata-options

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template#metadata-options

metadata Article's
30 articles in total
Favicon
How to customize Next.js metadata
Favicon
Metadata, Data Dictionary, and Catalog in a DBMS: Understanding the Differences and Their Roles
Favicon
Improving TypeScript Metadata Type Safety with ts-reflector
Favicon
Reflect MetaData
Favicon
The Machines Would Appreciate More Structured Data
Favicon
How to Assign Different Version Data to a Rented Strategy via Strategy Rental Code Metadata
Favicon
Including extra meta data with a resource response
Favicon
PicoGym Practice Write Up for Forensics Challenge(10pt): information
Favicon
Connecting with your Database with the Information Schema
Favicon
Next.js: How to Create Open Graph Social Media Cards
Favicon
Next.js: favicon, SVG icon, Apple & Chrome icons
Favicon
Security Tips: Metadata
Favicon
Error Message Bibliometrix R - replacement has 0 rows, data has XXX
Favicon
Securing Your Data Lake with Apache Atlas: The Ultimate Guide
Favicon
What I learned as a Subject Matter Expert while creating my product
Favicon
Why metadata management is indispensable for successful data evaluation
Favicon
First P2E game on Tableland (2)
Favicon
AppstoreSpy’s API – Your fresh and keen metadata
Favicon
What is .metadata file in Flutter Project?
Favicon
First P2E game on Tableland (1)
Favicon
Use Aiven's metadata parser to understand how your data flows
Favicon
Badges - TL;DR for your repository's README
Favicon
Elixir logging to (multiple) file(s) using metadata_filter
Favicon
Some housekeeping (why I help as a mod)
Favicon
ShardingSphere’s Metadata Loading Process
Favicon
Metadata: What Is It, And How Does It Boost Your Business?
Favicon
Resumo sobre a versão 2 do serviço de metadados de instância AWS EC2 (IMDSv2)
Favicon
Check your head 🤔
Favicon
How to gets uploaded image Metadata on the front-end
Favicon
On metadata in Hugo - or turning tags to keywords

Featured ones: