S3 bucket with versioning enabled does not have MFA delete configured
- Severity
- Low
- Service
- S3
- Check ID
- S3_MFA_DELETE_DISABLED
What this check finds
MFA delete prevents accidental or malicious permanent deletion of object versions. When enabled, delete operations on versioned objects require an MFA token in addition to valid AWS credentials, making ransomware and insider-threat scenarios significantly harder. CIS v5.0 §2.1.2.
Passing looks like: S3 MFA delete configured.
How to fix it
Enable MFA delete on the versioned bucket. This requires root account credentials and cannot be done via the console.
AWS CLI
aws s3api put-bucket-versioning --bucket BUCKET_NAME --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SERIAL_NUMBER TOKEN_VALUE"Note: the root MFA serial number and a current token are required.
Names in capitals are placeholders for your own resource. Review a command before you run it.
Compliance controls it is evidence for
A failing result counts against these controls in KloudLytics; a passing one is evidence towards them. How compliance mapping works
| Framework | Controls |
|---|---|
| CIS AWS Foundations Benchmark v5.0.0 |
|
| PCI-DSS v4.0.1 |
|
| HIPAA Security Rule |
|
| NIST SP 800-53 Rev5 (Moderate) |
|
| NIST Cybersecurity Framework 2.0 |
|
| ISO/IEC 27001:2022 Annex A |
|
Checked on every scan
KloudLytics runs this check each time it scans a connected AWS account, through a read-only role, and lists every affected resource with its region. On Pro and Business a fix is written for the specific resource rather than the general case above. The exact access it needs
More S3 checks
- HighInternet accessible S3 bucket via policy
- HighPublic grant to S3 bucket via ACL
- MediumS3 bucket does not require SSL/HTTPS for all requests
- MediumS3 bucket has incomplete multipart uploads consuming storage
- LowS3 Block Public Access does not block all access types
- LowS3 Block Public Access is not enabled for the account
- LowS3 bucket does not have server-access logging enabled
- LowVPC with private subnets has no S3 endpoint