Ensure hardware MFA is enabled for the 'root' user account
Description
The 'root' user account is the most privileged user in an AWS account. MFA adds an extra layer of protection on top of a username and password. With MFA enabled, when a user signs in to an AWS website, they are prompted for their username and password as well as an authentication code from their MFA device. For Level 2, it is recommended that the 'root' user account be protected with a hardware MFA device.
Where an AWS Organization is using centralized root access, root credentials can be removed from member accounts. In that case, it is neither possible nor necessary to configure root MFA in the member account.
Rationale
A hardware MFA device has a smaller attack surface than a virtual MFA. For example, a hardware MFA device does not inherit the risks associated with mobile devices on which virtual MFA applications reside.
Note: Using hardware MFA for numerous AWS accounts may create logistical device management challenges. In such cases, consider applying this Level 2 recommendation selectively to the highest-security AWS accounts, while applying the Level 1 recommendation to others.
Impact
Without hardware MFA, root account protection may be more susceptible to compromise compared to hardware-based authentication, increasing the risk of unauthorized access.
Audit Procedure
Using AWS CLI
- Run the following commands to determine if the 'root' account has MFA enabled:
aws iam get-account-summary | grep "AccountMFAEnabled"
aws iam get-account-summary | grep "AccountPasswordPresent"
Verify:
AccountMFAEnabledis set to1(MFA enabled)AccountPasswordPresentis set to1(console access exists) or0(console access removed)
If
AccountMFAEnabledis set to1(MFA enabled), determine whether the MFA device is hardware:
aws iam list-virtual-mfa-devices
- If the output contains a serial number similar to:
"SerialNumber": "arn:aws:iam::<aws_account_number>:mfa/root-account-mfa-device"
then the MFA device is virtual, not hardware, and the account is not compliant with this recommendation.
Expected Result
MFA is enabled for the root account and the MFA device is hardware-based (not listed in list-virtual-mfa-devices output).
Remediation
Using AWS Console
- Sign in to the AWS Management Console using the root account.
- Click on at the top right and select
Security Credentialsfrom the drop-down list. - Under
Multi-Factor Authentication (MFA), locate the root user. - If a virtual MFA device is already assigned, remove it before proceeding.
- Click
Assign MFA device(orManage MFA, depending on UI version). - Select
Security keyorhardware MFA device. - Enter the required device details (e.g., serial number or follow prompts for security key).
- Enter authentication codes if required.
- Click
Assign MFA.
Default Value
By default, the AWS root user does not have a hardware MFA device assigned. MFA must be explicitly configured, and if enabled by default it will be virtual (software-based), not hardware.
References
- CCE-78911-5
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_physical.html#enable-hw-mfa-for-root
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html
CIS Controls
| Controls Version | Control | IG 1 | IG 2 | IG 3 |
|---|---|---|---|---|
| v8 | 6.5 Require MFA for Administrative Access | x | x | x |
| v7 | 4.5 Use Multifactor Authentication For All Administrative Access | x | x |
MITRE ATT&CK Mappings
| Techniques / Sub-techniques | Tactics | Mitigations |
|---|---|---|
| T1078.004 | TA0004 | M1032 |
Profile
Level 2 | Manual