Cognito pool with a weak password policy

Six characters, no symbols, no MFA — defaults nobody revisited.

1 resource · AWS::Cognito::UserPool
Your stack
Ready when you are

Press Run. The stack loaded here fails in a way worth seeing.

What the engine finds5 findings

Not examples — Cognito pool with a weak password policy was run through the real engine when this page was built, and this is what it returned.

2 intent checks failed· 3 informational
intent 2info 3
MfaConfiguration is OFF.INTENT
MinimumLength is below 8.INTENT
3 informational findingspassword policy is, mfa is not, advanced security mode
Password policy is too weakAwsSolutions-COG1

A short password policy makes credential-stuffing cheap, and this pool is the front door to every account.

passwordPolicy: { minLength: 12, requireSymbols: true, requireDigits: true }
Full rule text

The Cognito user pool does not have a password policy that minimally specify a password length of at least 8 characters, as well as requiring uppercase, numeric, and special characters. Strong password policies increase system security by encouraging users to create reliable and secure passwords. AwsSolutions-COG1 guide →

MFA is not requiredAwsSolutions-COG2

The Cognito user pool does not require MFA. Multi-factor authentication (MFA) increases security for the application by adding another authentication method, and not relying solely on user name and password.

Full rule text

The Cognito user pool does not require MFA. Multi-factor authentication (MFA) increases security for the application by adding another authentication method, and not relying solely on user name and password.

Advanced security mode is offAwsSolutions-COG3

The Cognito user pool does not have AdvancedSecurityMode set to ENFORCED. Advanced security features enable the system to detect and act upon malicious sign-in attempts.

Full rule text

The Cognito user pool does not have AdvancedSecurityMode set to ENFORCED. Advanced security features enable the system to detect and act upon malicious sign-in attempts.

Presets

Or start from a stack that fails interestingly

Public S3 bucket

The single most common AI-generated CDK mistake: a bucket left open to the world.

3 rules · 2 intent checks
From Concepts · S3 · Granting public read access
Security group open to 0.0.0.0/0

SSH open to the entire internet — the classic copy-paste ingress rule.

2 rules · 1 intent check
From Concepts · EC2 · Opening the security group for HTTP
S3 static website

Website hosting straight off a bucket — no CDN, no TLS, no access logging.

3 rules · 2 intent checks
Unencrypted RDS instance

A database with storage encryption off and backups barely configured.

6 rules · 2 intent checks
Wildcard IAM policy

Action "*" on Resource "*" — the permission grant that ends incident reviews.

1 rule · 2 intent checks
Public API Gateway with no authorizer

A REST API wired to Lambda, wide open, with no access logging.

7 rules · 1 intent check
DynamoDB table without point-in-time recovery

Fast to write, impossible to restore — no PITR, no encryption choice.

1 rule · 1 intent check
CloudFront distribution allowing HTTP

A CDN that will happily serve your site unencrypted, with no logging.

6 rules · 1 intent check
Unencrypted SQS queue

A queue with no server-side encryption and no dead-letter queue.

2 rules · 2 intent checks
VPC without flow logs

Network traffic no one can reconstruct after the fact.

1 rule · 1 intent check
Cognito pool with a weak password policy

Six characters, no symbols, no MFA — defaults nobody revisited.

3 rules · 2 intent checks
Clean serverless data layerPasses

The one that passes. Encrypted, recoverable, with a dead-letter queue — what good looks like.

no findings — this is what passing looks like