IMDSv1 vs IMDSv2: perché il metadata endpoint è cambiato
Su AWS, l'Instance Metadata Service a 169.254.169.254 espone le credenziali del ruolo dell'istanza. La versione conta.
Il difetto di IMDSv1
IMDSv1 risponde a una semplice GET. Un SSRF nell'applicazione basta a leggere le credenziali:
GET http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE
-> AccessKeyId, SecretAccessKey, TokenÈ stata la meccanica di grandi breach (Capital One).
IMDSv2
IMDSv2 richiede prima un PUT per ottenere un token di sessione, con header speciale e TTL basso. Un SSRF classico (solo GET, niente header custom) non riesce a ottenere il token, quindi fallisce. Non elimina l'RCE, ma chiude l'SSRF banale.
Difesa
Imponi IMDSv2 (HttpTokens: required), abbassa l'hop limit a 1 (blocca l'accesso dai container), least privilege sul ruolo dell'istanza. Sul lato app, correggi comunque l'SSRF.