Aller au contenu

IMDS : Instance Metadata Service

Infrastructure

IMDS : Instance Metadata Service. « Service de métadonnées d'instance », par analogie avec le badge d'accueil posé sur le bureau d'un nouvel arrivant, que n'importe qui passant par là peut ramasser.

Adresse locale : Dans les nuages publics, chaque machine virtuelle peut interroger une adresse de lien local, classiquement 169.254.169.254, pour connaître sa configuration : identifiant, réseau, données de démarrage. Aucun secret à fournir, puisque la question est censée venir de l'intérieur.

Identifiants temporaires : Quand un rôle IAM est attaché à l'instance, IMDS distribue aussi des identifiants temporaires associés à ce rôle. C'est commode pour le code légitime, et tout aussi commode pour quiconque parvient à faire parler la machine à sa place.

Cible des SSRF : Une SSRF permet de forcer l'application à interroger IMDS et à renvoyer la réponse. Le service de métadonnées devient alors un coffre dont la combinaison est gravée sur la porte, à hauteur d'yeux.

IMDSv2 : La version à session d'AWS impose d'obtenir d'abord un jeton par une requête PUT munie d'un en-tête dédié, puis de le présenter à chaque appel. La plupart des SSRF, limitées à de simples GET, ne franchissent plus l'obstacle.

Ce qui arrive si on s'en passe

Laisser IMDS dans sa version sans session, c'est permettre à la moindre SSRF de faire interroger 169.254.169.254 par l'application et d'en rapporter la réponse, y compris les identifiants temporaires du rôle IAM attaché à l'instance. L'attaquant repart alors avec les droits de la machine sur le compte nuage : lecture de stockage, création de ressources, selon ce que le rôle permet. Sans IMDSv2 ni rôle réduit au strict nécessaire, une faille applicative banale devient une compromission du compte. Ce service a été pensé pour répondre aux questions venues de l'intérieur ; il a simplement omis de se demander qui, à l'intérieur, posait la question.

Explication de la marmotte

Dans un centre de données loué, chaque ordinateur virtuel a besoin de savoir qui il est et quels droits il possède. Il peut le demander à un petit guichet interne, joignable uniquement depuis la machine elle-même. Ce guichet répond sans poser de question, puisqu'il suppose que seule la machine peut l'appeler. Il remet même des clés temporaires pour accéder à d'autres services. Le danger apparaît quand un pirate réussit à faire poser la question par un programme de la machine, comme un visiteur qui demanderait à un employé d'aller chercher son badge à l'accueil.

Où ce terme est utilisé

← Tout le glossaire