RAM password policy has lowercase letter requirement
Alibaba Cloud RAM password policies can be used to enforce password complexity requirements. It is recommended that the password policy require at least one lowercase letter to increase the character diversity of passwords. This enhances account resiliency against brute force logon attempts and dictionary attacks.
Risk
Without requiring lowercase letters in the password policy, users may create passwords with limited character diversity. Weak passwords without sufficient character variety are more susceptible to dictionary attacks and automated password cracking tools, potentially compromising the confidentiality of user accounts and the resources they have access to.
Run this check with Prowler
Run in Prowler Cloudprowler alibabacloud --checks ram_password_policy_lowercaseRecommendation
Configure the RAM password policy to require at least one lowercase letter to improve password complexity.
Remediation
CLI
aliyun ram SetPasswordPolicy --RequireLowercaseCharacters trueTerraform
resource "alicloud_ram_password_policy" "example" {
require_lowercase_characters = true
}Other
Check Code
from prowler.lib.check.models import Check, CheckReportAlibabaCloud
from prowler.providers.alibabacloud.services.ram.ram_client import ram_client
class ram_password_policy_lowercase(Check):
"""Check if RAM password policy requires at least one lowercase letter."""
def execute(self) -> list[CheckReportAlibabaCloud]:
findings = []
if ram_client.password_policy:
report = CheckReportAlibabaCloud(
metadata=self.metadata(), resource=ram_client.password_policy
)
report.region = ram_client.region
report.resource_id = f"{ram_client.audited_account}-password-policy"
report.resource_arn = (
f"acs:ram::{ram_client.audited_account}:password-policy"
)
if ram_client.password_policy.require_lowercase_characters:
report.status = "PASS"
report.status_extended = (
"RAM password policy requires at least one lowercase letter."
)
else:
report.status = "FAIL"
report.status_extended = "RAM password policy does not require at least one lowercase letter."
findings.append(report)
return findings