Back to Checks
ElastiCache Redis replication group with engine version < 6.0 has Redis OSS AUTH enabled
elasticache_redis_replication_group_auth_enabled
Service: elasticacheSeverity: medium
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:Other
Amazon ElastiCache Redis replication groups running versions prior to 6.0 are evaluated for the use of AUTH tokens. For 6.0+, the finding indicates ACL/RBAC configuration should be reviewed instead of token-based AUTH.
Risk
Without AUTH on pre-6.0 clusters, clients can run unauthenticated commands, enabling data reads/writes, key deletion, and cache poisoning. This threatens confidentiality and integrity, and can facilitate lateral movement via stolen or injected session data.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks elasticache_redis_replication_group_auth_enabledRecommendation
Apply defense in depth:
- For versions <
6.0, enable AUTH with strong, rotated tokens and require in-transit encryption. - For
6.0+, prefer RBAC/ACLs with least-privilege, deny-by-default roles. - Restrict network access to trusted sources and audit access regularly.
Remediation
CLI
aws elasticache modify-replication-group --replication-group-id <example_resource_id> --auth-token <AUTH_TOKEN> --auth-token-update-strategy SET --apply-immediatelyTerraform
# Terraform: enable Redis AUTH on an existing replication group
resource "aws_elasticache_replication_group" "<example_resource_name>" {
replication_group_id = "<example_resource_id>"
description = "enable-auth"
transit_encryption_enabled = true # CRITICAL: required to use AUTH
auth_token = "<AUTH_TOKEN>" # CRITICAL: enables Redis AUTH
auth_token_update_strategy = "SET" # CRITICAL: adds token; enables AUTH
}NativeIaC
# CloudFormation: enable Redis AUTH on an existing replication group
Resources:
<example_resource_name>:
Type: AWS::ElastiCache::ReplicationGroup
Properties:
ReplicationGroupId: <example_resource_id>
ReplicationGroupDescription: enable-auth
TransitEncryptionEnabled: true # CRITICAL: required to use AUTH
AuthToken: <AUTH_TOKEN> # CRITICAL: enables Redis AUTH
AuthTokenUpdateStrategy: SET # CRITICAL: adds token; enables AUTHOther
1In the AWS Console, go to ElastiCache > Redis replication groups
2Select the replication group <example_resource_id> and click Modify
3Under Access control, choose Redis OSS AUTH and enter <AUTH_TOKEN>
4Check Apply immediately and click Modify
5Wait for status to return to Available; AUTH is now enabled
Check Code
from packaging import version
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.elasticache.elasticache_client import (
elasticache_client,
)
class elasticache_redis_replication_group_auth_enabled(Check):
def execute(self):
findings = []
for repl_group in elasticache_client.replication_groups.values():
report = Check_Report_AWS(metadata=self.metadata(), resource=repl_group)
if version.parse(repl_group.engine_version) < version.parse("6.0"):
if not repl_group.auth_token_enabled:
report.status = "FAIL"
report.status_extended = f"Elasticache Redis replication group {repl_group.id}(v{repl_group.engine_version}) does not have AUTH enabled."
else:
report.status = "PASS"
report.status_extended = f"Elasticache Redis replication group {repl_group.id}(v{repl_group.engine_version}) does have AUTH enabled."
else:
report.status = "MANUAL"
report.status_extended = f"Elasticache Redis replication group {repl_group.id} has version {repl_group.engine_version} which supports Redis ACLs. Please review the ACL configuration."
findings.append(report)
return findings