CVE-2024-8901 Overview
CVE-2024-8901 is an authentication bypass vulnerability in the AWS ALB Route Directive Adapter for Istio, a component integrated into the open source Kubeflow project. The adapter implements OpenID Connect (OIDC) authentication using JSON Web Tokens (JWT), but fails to validate the token signer and issuer. An attacker can present a JWT signed by an untrusted entity to spoof OIDC-federated sessions and bypass authentication. The vulnerability is exploitable only when Application Load Balancer (ALB) targets are directly exposed to the internet, contrary to AWS security best practices. The affected repository has been deprecated and is no longer supported.
Critical Impact
Attackers can forge JWTs to impersonate authenticated users and bypass OIDC authentication when ALB targets are exposed to internet traffic.
Affected Products
- AWS ALB Route Directive Adapter for Istio (deprecated, end of life)
- Kubeflow deployments integrating the adapter for OIDC authentication
- Forked or derivative code that inherits the unvalidated JWT logic
Discovery Timeline
- 2024-10-22 - CVE-2024-8901 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2024-8901
Vulnerability Analysis
The AWS ALB Route Directive Adapter for Istio provides an OIDC authentication mechanism intended to validate user sessions established through AWS Application Load Balancer. When ALB performs OIDC authentication, it forwards a signed JWT to the upstream service via the x-amzn-oidc-data header. The adapter parses this JWT to determine the authenticated identity but does not verify that the token was issued by the legitimate ALB instance fronting the service.
The weakness is categorized as [CWE-290]: Authentication Bypass by Spoofing. Because the adapter accepts any well-formed JWT without validating the signer claim against the expected ALB Amazon Resource Name (ARN), an attacker can craft a token signed by an arbitrary key and present it directly to the backend. This is only reachable when backend targets such as EC2 instances or Fargate tasks have public IP addresses, allowing attackers to bypass the ALB entirely.
Root Cause
The root cause is missing signer and issuer validation during JWT verification. The adapter trusts the contents of the JWT payload without cryptographically confirming the token originated from the configured ALB. Trust in the network path replaces trust in the token signature.
Attack Vector
An attacker identifies a Kubeflow or Istio backend reachable on a public IP that bypasses the ALB. The attacker generates a JWT containing arbitrary identity claims, signs it with a self-controlled key, and sends a request directly to the backend with the forged token in the OIDC data header. The adapter accepts the token and grants access as the spoofed user. The vulnerability requires no privileges and no user interaction.
The vulnerability mechanism is described in the AWS Security Bulletin and GitHub Security Advisory.
Detection Methods for CVE-2024-8901
Indicators of Compromise
- Inbound HTTP requests to backend pods or instances on public IP addresses that bypass the configured ALB
- Requests containing x-amzn-oidc-data headers with JWT signer values that do not match the expected ALB ARN
- Authentication events for OIDC-federated identities originating from source IPs outside the ALB egress range
Detection Strategies
- Inspect JWTs received by the adapter and compare the signer claim to the ARN of the ALB fronting the service
- Audit Kubernetes ingress and security group configurations to identify workloads with public IP addresses bypassing ALB
- Correlate authentication logs with VPC Flow Logs to surface requests reaching backends outside the ALB path
Monitoring Recommendations
- Enable AWS VPC Flow Logs and ALB access logs to track which sessions actually traverse the load balancer
- Monitor Kubeflow and Istio authentication logs for anomalous user identities or unexpected issuer values
- Alert on any backend target acquiring a public IP address in environments expected to be private only
How to Mitigate CVE-2024-8901
Immediate Actions Required
- Remove public IP addresses from all ALB target resources including EC2 instances, Fargate tasks, and Kubernetes nodes
- Restrict backend security groups to accept traffic only from the ALB security group
- Migrate away from the deprecated AWS ALB Route Directive Adapter for Istio to a supported authentication component
Patch Information
No patch will be released. The repository has been deprecated and is end of life. Operators must remediate by enforcing network isolation and updating any forked code to validate the JWT signer attribute against the configured ALB ARN. Refer to the GitHub Security Advisory for guidance.
Workarounds
- Place backend services in private subnets and route all traffic through the ALB, blocking direct internet access
- In any forked or derivative implementation, validate that the JWT signer claim matches the ARN of the configured ALB before trusting identity claims
- Replace the adapter with an actively maintained OIDC authentication proxy such as oauth2-proxy configured with strict issuer and audience validation
# Example: validate signer claim matches expected ALB ARN
EXPECTED_ALB_ARN="arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/abcdef"
SIGNER=$(echo "$JWT" | cut -d. -f1 | base64 -d | jq -r .signer)
if [ "$SIGNER" != "$EXPECTED_ALB_ARN" ]; then
echo "Untrusted signer: $SIGNER"
exit 1
fi
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

