Come disabilitare i metadati di AWS EC2?

Questo articolo ti insegnerà i metadati EC2 e perché è importante. Imparerai anche come disabilitare i metadati per proteggerti da attacchi come SSRF.

Amazon Web Services (AWS) dispone di un servizio Amazon Elastic Compute Cloud (Amazon EC2), che fornisce capacità di elaborazione scalabili. Utilizzando Amazon EC2, puoi sviluppare e distribuire app più rapidamente senza effettuare un investimento iniziale in hardware.

A seconda delle tue esigenze, avvia tanti o pochi server virtuali. Configura le impostazioni di rete e sicurezza e controlla lo storage utilizzando Amazon EC2.

Le informazioni sull’istanza che possono essere personalizzate o gestite in un’istanza in esecuzione sono note come metadati dell’istanza. Le categorie di metadati dell’istanza includono nome host, eventi e gruppi di sicurezza. Inoltre, puoi accedere ai dati utente specificati all’avvio dell’istanza utilizzando i metadati dell’istanza.

Puoi includere un breve script o specificare parametri durante la configurazione dell’istanza. Utilizzando i dati utente, puoi creare AMI generiche e modificare i file di configurazione all’avvio.

Puoi configurare istanze nuove o esistenti per eseguire le seguenti attività utilizzando le opzioni dei metadati dell’istanza:

  • Richiede che le richieste di metadati dell’istanza vengano inviate tramite IMDSv2
  • Inserisci il limite di hop di risposta PUT.
  • Blocca l’accesso ai metadati dell’istanza

È possibile accedere ai metadati da un’istanza EC2 attiva utilizzando una delle seguenti tecniche: IMDSv1sIMDSv2

Il servizio di metadati dell’istanza è noto come IMDS. Come puoi supporre, le metodologie sono leggermente diverse; IMDSv1 utilizza un metodo di richiesta/risposta, mentre IMDSv2 è orientato alla sessione.

AWS ti esorta a utilizzare IMDSv2, che è il metodo preferito. Per impostazione predefinita, l’SDK AWS utilizza le chiamate IMDSv2 e puoi richiedere agli utenti di configurare un nuovo EC2 con IMDSv2 abilitato utilizzando le chiavi di condizione IAM in una policy IAM.

Utilizza i seguenti URI IPv4 o IPv6 per visualizzare tutti i tipi di metadati dell’istanza da un’istanza in esecuzione.

IPv4

curl http://169.254.169.254/latest/meta-data/

IPv6

ricciolo http://[fd00:ec2::254]/ultime/meta-dati/

Gli indirizzi IP sono indirizzi link-local e sono validi solo dall’istanza.

Per visualizzare i metadati dell’istanza, puoi utilizzare solo l’indirizzo link-local di 169.254.169.254 . Le richieste ai metadati tramite l’URI sono gratuite, quindi non ci sono costi aggiuntivi da parte di AWS.

Necessità di disabilitare i metadati

Nelle configurazioni AWS, l’attacco SSRF è frequente e noto a tutti. Mandiant (un’azienda di sicurezza informatica) ha individuato aggressori che automatizzano la scansione delle vulnerabilità e raccolgono credenziali IAM da applicazioni online accessibili pubblicamente.

L’implementazione di IMDSv2 per tutte le istanze EC2, che presenta ulteriori vantaggi in termini di sicurezza, ridurrebbe questi rischi per la tua azienda. La possibilità che un nemico rubi le credenziali IAM tramite SSRF diminuirebbe significativamente con IMDSv2.

L’utilizzo di Server Side Request Forgery (SSRF) per accedere al servizio di metadati EC2 è una delle tecniche per lo sfruttamento di AWS più insegnate.

Il servizio di metadati è accessibile alla maggior parte delle istanze EC2 a 169.254.169.254. Questo contiene informazioni utili sull’istanza, come il suo indirizzo IP, il nome del gruppo di sicurezza, ecc.

Se un ruolo IAM è collegato a un’istanza EC2, il servizio di metadati conterrà anche le credenziali IAM per autenticarsi come questo ruolo. Possiamo rubare quelle credenziali a seconda della versione di IMDS in uso e delle capacità di SSRF.

Vale anche la pena considerare che un avversario con accesso shell all’istanza EC2 potrebbe ottenere queste credenziali.

In questo esempio, un server Web viene eseguito sulla porta 80 dell’istanza EC2. Questo server Web presenta una semplice vulnerabilità SSRF, che ci consente di inviare richieste GET a qualsiasi indirizzo. Questo può essere utilizzato per inviare una richiesta a http://169.254.169.254.

Per disabilitare i metadati

Bloccando l’endpoint HTTP del servizio di metadati dell’istanza, puoi impedire l’accesso ai metadati dell’istanza, indipendentemente dalla versione del servizio di metadati dell’istanza che stai utilizzando.

Puoi annullare questa modifica in qualsiasi momento abilitando l’endpoint HTTP. Utilizza il comando dell’interfaccia della riga di comando modify-instance-metadata-options e imposta il parametro http-endpoint su disabled per disabilitare i metadati per la tua istanza.

Per disabilitare i metadati esegui questo comando:

aws ec2 modifica-istanza-metadata-opzioni –id-istanza i-0558ea153450674 –http-endpoint disabilitato

disabilitazione dei metadati

Puoi vedere che dopo aver disabilitato i miei metadati, se provo ad accedervi ricevo un messaggio VIETATO.

Se vuoi abilitare nuovamente i tuoi metadati, esegui questo comando:

aws ec2 modifica-istanza-metadata-opzioni –id-istanza i-0558ea153450674 –http-endpoint abilitato

abilitare nuovamente i metadati

Conclusione

I metadati possono essere utili per estrarre informazioni da archivi di dati di grandi dimensioni. Tuttavia, può anche essere utilizzato in modo improprio per conoscere la posizione o l’identità di una persona a sua insaputa o senza il suo consenso. Poiché registra tutte le modifiche apportate, comprese le eliminazioni e i commenti, devi essere consapevole del fatto che potrebbe contenere informazioni che non vorresti che gli altri potessero vedere. Di conseguenza, la rimozione dei metadati è fondamentale per mantenere la privacy e l’anonimato online.

Puoi anche esplorare alcune terminologie chiave di AWS che migliorano il tuo apprendimento AWS.