Compute instance legacy metadata service endpoint is disabled
OCI compute instance metadata service is configured so legacy IMDS v1 endpoints are disabled, requiring session-authorized IMDS v2 requests for metadata access
Risk
Enabled IMDS v1 permits unauthenticated metadata reads via local access or SSRF, compromising confidentiality of instance credentials, SSH keys, and custom data. Stolen tokens enable cloud API abuse, driving privilege escalation, lateral movement, and unauthorized changes that impact integrity.
Run this check with Prowler
Run in Prowler Cloudprowler oraclecloud --checks compute_instance_legacy_metadata_endpoint_disabledRecommendation
Disable IMDS v1 and require IMDS v2 across all instances. Migrate applications to session-authorized requests and confirm image support. Enforce least privilege for instance principals, restrict untrusted processes from reaching 169.254.169.254, and monitor metadata access to provide defense in depth.
Remediation
CLI
oci compute instance update --instance-id <instance-ocid> --instance-options '{"areLegacyImdsEndpointsDisabled": true}'Terraform
resource "oci_core_instance" "<example_resource_name>" {
instance_options {
are_legacy_imds_endpoints_disabled = true # Critical: disables IMDSv1, allowing only IMDSv2
}
}Other
Check Code
"""Check if Compute Instance Legacy Metadata service endpoint is disabled."""
from prowler.lib.check.models import Check, Check_Report_OCI
from prowler.providers.oraclecloud.services.compute.compute_client import compute_client
class compute_instance_legacy_metadata_endpoint_disabled(Check):
"""Check if Compute Instance Legacy Metadata service endpoint is disabled."""
def execute(self) -> Check_Report_OCI:
"""Execute the compute_instance_legacy_metadata_endpoint_disabled check.
Returns:
List of Check_Report_OCI objects with findings
"""
findings = []
for instance in compute_client.instances:
report = Check_Report_OCI(
metadata=self.metadata(),
resource=instance,
region=instance.region,
resource_name=instance.name,
resource_id=instance.id,
compartment_id=instance.compartment_id,
)
if instance.are_legacy_imds_endpoints_disabled:
report.status = "PASS"
report.status_extended = f"Compute instance {instance.name} has legacy metadata service endpoint disabled."
else:
report.status = "FAIL"
report.status_extended = f"Compute instance {instance.name} has legacy metadata service endpoint enabled or not configured."
findings.append(report)
return findings