Root Account MFA Status
What this tests
Whether multi-factor authentication is enabled on the AWS root account. The root account has unrestricted access to every resource in your AWS environment — it bypasses all IAM policies, SCPs, and permission boundaries. Without MFA, a stolen password is a stolen account.
This check queries AWS IAM's account summary endpoint and evaluates a single field: AccountMFAEnabled.
Either it is 1 (MFA active) or it is 0 (no MFA, immediate critical finding).
Why this matters in audit
Root account compromise appears in every major cloud breach post-mortem. Unlike an IAM user where you can restrict permissions, root cannot be constrained — it owns the account. A single exposed credential without MFA means complete data loss, infrastructure destruction, or ransomware deployment are one login away.
Every audit framework that touches cloud infrastructure lists root MFA as a mandatory or priority-one control. SOX ITGC programmes treat it as a general computer control failure that escalates to the external auditor. PCI DSS 8.5 explicitly requires MFA for all non-consumer accounts with admin access. A FAIL here is not a finding that stays in the IT audit report — it surfaces at the board level.
Pass and fail criteria
PASS — AccountMFAEnabled = 1. Virtual or hardware MFA device is active on the root account. No finding.
FAIL — CRITICAL — AccountMFAEnabled = 0. No MFA device registered. Root account accessible with password alone. Raise immediately.
WARN — Script cannot connect or IAM credentials lack iam:GetAccountSummary permission. Finding scope limited — escalate access or document limitation.
{ "check_id": "AWS-01", "check_name": "Root Account MFA Status", "cis_reference": "CIS AWS Foundations v2.0 — Control 1.4", "regulation_map": "NIST CSF PR.AC-7 | SOX ITGC AC-01 | PCI DSS 8.5 | ISO 27001 A.9.4", "account_id": "123456789012", "timestamp": "2026-03-02T14:32:07Z", "result": "PASS", "finding": "Root account MFA is enabled.", "risk_rating": "N/A", "remediation": "None required.", "raw": { "AccountMFAEnabled": 1 } }
{ "check_id": "AWS-01", "check_name": "Root Account MFA Status", "cis_reference": "CIS AWS Foundations v2.0 — Control 1.4", "regulation_map": "NIST CSF PR.AC-7 | SOX ITGC AC-01 | PCI DSS 8.5 | ISO 27001 A.9.4", "account_id": "123456789012", "timestamp": "2026-03-02T14:32:07Z", "result": "FAIL", "risk_rating": "CRITICAL", "finding": "Root account MFA is NOT enabled. Full account access requires only a password.", "remediation": "Enable virtual or hardware MFA on root account immediately via IAM console.", "raw": { "AccountMFAEnabled": 0 } }
Remediation
AccountMFAEnabled = 1 and attach PASS output to remediation evidence.▶ Run the Python script
boto3 · live sandbox · JSON + terminal output · <5s runtime · workpaper-ready evidence