KMS protège les clés qui enveloppent tout le reste : paramètres SecureString, objets S3 chiffrés, volumes EBS et blobs applicatifs chiffrés par enveloppe. Un principal disposant de kms:Decrypt sur la bonne clé, ou une clé dont la stratégie de ressource est trop permissive, transforme en clair le texte chiffré que vous avez exfiltré.
Déchiffrer avec une autorisation détenue#
aws kms list-keys ; aws kms list-aliases
# decrypt a blob (ciphertext from an encrypted parameter, file, or object)
aws kms decrypt --ciphertext-blob fileb://blob.bin \
--query Plaintext --output text | base64 -d
Lire la stratégie de clé#
aws kms get-key-policy --key-id <id> --policy-name default --output text
# a Principal of "*" or a broad account root grants decrypt to more than intended
Notes d'exploitation#
kms:Decryptest le partenaire discret du vol de secrets :GetParameter --with-decryptionet la lecture d'objets chiffrés en dépendent tous deux.- Le chiffrement par enveloppe stocke la clé de données enveloppée à côté du texte chiffré ; déchiffrez la clé de données avec KMS, puis déchiffrez la charge utile localement.
- Une stratégie de clé permissive peut autoriser le déchiffrement inter-comptes, laissant un point d'ancrage dans un compte lire les données protégées d'un autre.
Outils#
- AWS CLI (
kms decrypt,kms get-key-policy). - Pacu (
kms__enum) : énumérer les clés et les stratégies.