ECS instance has latest OS patches applied
Alibaba Cloud Security Center checks for the latest updates in Linux and Windows systems running on ECS instances. Keeping virtual machines updated with the latest OS patches addresses specific bugs, improves general stability, and fixes security vulnerabilities. This check verifies that all known vulnerabilities detected by Security Center have been patched on each ECS instance.
Risk
Unpatched systems are vulnerable to known security exploits and can be compromised by attackers leveraging publicly disclosed vulnerabilities. Failure to apply patches in a timely manner increases the risk of unauthorized access, malware infection, and data breaches, impacting the confidentiality, integrity, and availability of the system.
Run this check with Prowler
Run in Prowler Cloudprowler alibabacloud --checks ecs_instance_latest_os_patches_appliedRecommendation
Regularly review and apply OS patches on all ECS instances using the Alibaba Cloud Security Center vulnerability management feature to maintain a strong security posture.
Remediation
CLI
aliyun sas FixCheckWarnings --CheckIds <check_ids>Other
Check Code
from prowler.lib.check.models import Check, CheckReportAlibabaCloud
from prowler.providers.alibabacloud.services.ecs.ecs_client import ecs_client
from prowler.providers.alibabacloud.services.securitycenter.securitycenter_client import (
securitycenter_client,
)
class ecs_instance_latest_os_patches_applied(Check):
"""Check if the latest OS patches for all Virtual Machines are applied."""
def execute(self) -> list[CheckReportAlibabaCloud]:
findings = []
# Check each ECS instance for vulnerabilities
for instance in ecs_client.instances:
# Only check running instances
if instance.status.lower() not in ["running", "starting"]:
continue
report = CheckReportAlibabaCloud(
metadata=self.metadata(), resource=instance
)
report.region = instance.region
report.resource_id = instance.id
report.resource_arn = f"acs:ecs:{instance.region}:{ecs_client.audited_account}:instance/{instance.id}"
# Check if instance has vulnerabilities
instance_key = f"{instance.region}:{instance.id}"
vulnerability = securitycenter_client.instance_vulnerabilities.get(
instance_key
)
if vulnerability:
if vulnerability.has_vulnerabilities:
report.status = "FAIL"
report.status_extended = (
f"ECS instance {instance.name if instance.name else instance.id} "
f"has {vulnerability.vulnerability_count} unpatched vulnerabilities. "
"Latest OS patches are not applied."
)
else:
report.status = "PASS"
report.status_extended = (
f"ECS instance {instance.name if instance.name else instance.id} "
"has all latest OS patches applied."
)
findings.append(report)
return findings