
Previeni gli attacchi SSRF su AWS EC2 tramite aggiornamenti automatici al più sicuro Instance Metadata Service v2 (IMDSv2).
Previeni gli attacchi SSRF su AWS EC2 tramite aggiornamenti automatici al più sicuro Instance Metadata Service v2 (IMDSv2).
Scopo e funzionalità
I team di ingegneria possono disporre di un'ampia varietà di infrastrutture di calcolo in AWS che devono proteggere da determinate vulnerabilità che sfruttano il servizio di metadati. Il servizio di metadati è necessario per funzionare sulle istanze se viene utilizzato qualsiasi IAM o se ci sono dati utente di cui l'istanza potrebbe aver bisogno all'avvio. Limitare la superficie di attacco delle tue istanze è fondamentale per impedire la possibilità di muoversi lateralmente nell'ambiente rubando informazioni fornite dal servizio stesso. Numerosi attacchi famosi in passato hanno sfruttato questo particolare servizio per sfruttare un ruolo associato all'istanza o per scaricare dati sensibili accessibili tramite il servizio di metadati. Metabadger può aiutare a identificare dove e come usi il servizio di metadati dell'istanza, dandoti anche la possibilità di ridurre qualsiasi potenziale sfruttamento indesiderato per abbassare il tuo profilo di rischio complessivo mentre operi in EC2.
L'uso di questo strumento potrebbe influenzare la tua infrastruttura di calcolo AWS poiché non tutti i servizi e le applicazioni potrebbero funzionare senza il servizio di metadati o sulla versione 2. Usa cautela quando lo distribuisci nel tuo ambiente di produzione e tieni pronto un piano di rollback nel caso qualcosa sembri anomalo. Metabadger include la funzionalità integrata per tornare alla versione 1 predefinita del servizio usando il flag -v1, che puoi utilizzare per ripristinare rapidamente le tue istanze all'impostazione predefinita. Idealmente, dovresti eseguire questo strumento e aggiornare la versione dei metadati in ambienti non di produzione come banco di prova prima di applicarlo.
Passo 1
Inizialmente, vogliamo scoprire il nostro uso complessivo del servizio di metadati in una particolare regione AWS. Metabadger valuterà lo stato attuale del tuo utilizzo nella regione in cui puntano le tue credenziali nel tuo file /.aws/credentials o nel ruolo attualmente assunto. Puoi anche specificare il flag --region quando esegui il comando discover-metadata se desideri cambiare regione rispetto a quella attualmente configurata. Una volta che hai un'idea chiara di quale versione stanno eseguendo le tue istanze e se il servizio è abilitato o disabilitato, sarai in grado di creare un piano d'azione molto più definito per l'hardening del servizio. Nota che puoi trovare il significato specifico di ogni opzione di metadati impostata qui.
Passo 2
Una delle aree da valutare quando si passa alla versione 2 del servizio è l'uso dei ruoli IAM. Metabadger ti consente di identificare le istanze in una regione che potrebbero già utilizzare un ruolo IAM. Il comando discover-role-usage restituirà un elenco di istanze a cui sono associati ruoli. Se hai molte istanze che usano ruoli, dovresti prendere precauzioni durante l'aggiornamento del servizio alla versione 2 per garantire che la funzionalità complessiva dei tuoi carichi di lavoro non venga compromessa.
Passo 3
Completata la scoperta e la valutazione iniziale, ora puoi creare un approccio graduale per l'hardening della tua infrastruttura di calcolo, in modo che usi la versione 2 del servizio di metadati o lo disabiliti dove non viene utilizzato. Il comando harden-metadata ti consente di aggiornare tutte le istanze in una particolare regione per impostazione predefinita. Puoi anche passare tag delle istanze usando il flag --tags o un file di input contenente un CSV di istanze a cui desideri applicare una configurazione. Una volta effettuati gli aggiornamenti appropriati alla versione 2 e disabilitato il servizio dove non viene utilizzato, puoi rivalutare usando gli elementi del Passo 1 per confermare che il tuo ambiente sia bloccato. Se hai determinate istanze che non vuoi aggiornare, puoi escluderle tramite il flag --exclusion tramite tag o ID dell'istanza.
Metabadger richiede un ruolo IAM o credenziali con i seguenti permessi:
ec2:ModifyInstanceAttribute
ec2:DescribeInstances
Quando apporti modifiche al servizio di metadati dell'istanza, dovresti essere cauto e seguire ulteriori indicazioni da AWS su come aggiornare in sicurezza alla versione 2. Metabadger è stato progettato per assisterti in questo processo per proteggere ulteriormente la tua infrastruttura di calcolo in AWS.
Guida alle migliori pratiche AWS per l'aggiornamento a IMDSv2
Installa tramite pip
pip3 install --user metabadger
Installa tramite GitHub
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .
$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...
Metabadger è uno strumento di sicurezza AWS utilizzato per scoprire e
rafforzare il servizio di metadati dell'istanza.
Options:
--version Mostra la versione ed esce.
--help Mostra questo messaggio ed esce.
Commands:
cloudwatch-metrics Estrae le metriche CloudWatch per l'utilizzo di MetadataNoToken
disable-metadata Disabilita il servizio IMDS sulle istanze EC2
discover-metadata Scopre un riepilogo dell'utilizzo del servizio IMDS all'interno di EC2
discover-role-usage Scopre un riepilogo dell'utilizzo dei ruoli IAM per EC2
harden-metadata Rafforza il servizio di metadati dell'istanza AWS dalla v1 alla v2
cloudwatch-metrics
Recupera direttamente informazioni sul tuo utilizzo di IMDSv1 con la metrica MetadataNoToken in AWS CloudWatch. Questo comando mostra le istanze nell'ultima ora che stanno utilizzando attivamente la versione 1 del servizio. Nota che quando esegui questo comando dovresti avere i permessi IAM per poter visualizzare le metriche CloudWatch.
Options:
-a, --all-region Estrae le metriche CloudWatch in tutte le regioni
disponibili
-r, --region TEXT Specifica in quale regione AWS eseguirai questo
comando
-t, --time-period INTEGER Il periodo di tempo in secondi di CloudWatch usato per
tracciare la metrica IMDS v1
-p, --profile TEXT Specifica il profilo IAM AWS.
--help Mostra questo messaggio ed esce.
discover-metadata
Un riepilogo dell'utilizzo complessivo del servizio di metadati delle tue istanze, inclusa la versione e una percentuale complessiva di applicazione. Usare questi numeri ti aiuterà a capire il profilo complessivo di quanto sia indurito l'uso dei metadati e dove stai applicando la v2 rispetto alla v1.
Options:
-a, --all-region Fornisce un riepilogo dei metadati per tutte le regioni disponibili nell'account AWS
-j, --json Ottiene il riepilogo dei metadati in formato JSON
-r, --region TEXT Specifica in quale regione AWS eseguirai questo comando
-p, --profile TEXT Specifica il profilo IAM AWS.
discover-role-usage
Un riepilogo delle istanze e dei ruoli che stanno usando; questo ti darà un'idea della cautela necessaria quando apporti modifiche al servizio di metadati stesso.
Options:
-p, --profile TEXT Specifica il profilo IAM AWS.
-r, --region TEXT Specifica in quale regione AWS eseguirai questo comando
harden-metadata
La possibilità di modificare le istanze per usare la versione 1 o 2 dei metadati e per capire quante istanze verrebbero modificate eseguendo una modalità di prova.
Options:
-a, --all-region Aggiorna IMDS in tutte le regioni del tuo account
-e, --exclusion Il flag di esclusione si applicherà a tutto tranne ciò che è specificato, tag o istanze
-d, --dry-run Esecuzione di prova delle modifiche di hardening dei metadati
-v1, --v1 Applica la versione 1 del servizio di metadati
-i, --input-file PATH Percorso del file CSV delle istanze per cui indurire IMDS
-t, --tags TEXT Elenco separato da virgole di tag a cui applicare l'impostazione di hardening
-r, --region TEXT Specifica in quale regione AWS eseguirai questo comando
-p, --profile TEXT Specifica il profilo IAM AWS.
disable-metadata
Usa questo comando per disabilitare completamente il servizio di metadati sulle istanze.
Options:
-e, --exclusion Il flag di esclusione si applicherà a tutto tranne ciò che è specificato, tag o istanze
-d, --dry-run Esecuzione di prova della disabilitazione del servizio di metadati
-i, --input-file PATH Percorso del file CSV delle istanze per cui disabilitare IMDS
-t, --tags TEXT Elenco separato da virgole di tag a cui applicare l'impostazione di hardening
-r, --region TEXT Specifica in quale regione AWS eseguirai questo comando
-p, --profile TEXT Specifica il profilo IAM AWS.
Tutte le modifiche apportate da Metabadger verranno registrate in un file salvato nella directory di lavoro chiamato metabadger.log. Il file includerà quanto segue per ogni azione intrapresa dallo strumento quando modifica il servizio di metadati: