CVE-2021-39156
📋 TL;DR
This vulnerability allows attackers to bypass Istio's URI path-based authorization policies by sending HTTP requests with URL fragments (#fragment) in the path. This affects all Istio deployments using authorization policies to restrict access based on URI paths. The vulnerability is remotely exploitable without authentication.
💻 Affected Systems
- Istio
📦 What is this software?
Istio by Istio
Istio by Istio
Istio by Istio
⚠️ Risk & Real-World Impact
Worst Case
Complete bypass of all URI-based authorization controls, allowing unauthorized access to protected microservices and sensitive data.
Likely Case
Partial authorization bypass enabling access to some protected endpoints that should be restricted.
If Mitigated
Limited impact if additional security layers (network segmentation, application-level auth) are in place.
🎯 Exploit Status
Exploitation requires sending HTTP requests with URL fragments. Public proof-of-concept exists in advisory.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Istio 1.11.1, 1.10.4, 1.9.8
Vendor Advisory: https://istio.io/latest/news/security/istio-security-2021-008
Restart Required: Yes
Instructions:
1. Upgrade Istio control plane to patched version. 2. Restart Istio control plane components. 3. Upgrade data plane (sidecars) to patched version. 4. Restart workloads to apply new sidecars.
🔧 Temporary Workarounds
Lua Filter Workaround
allImplement a Lua filter to normalize URL paths by removing fragments before authorization checks
Refer to Istio advisory for Lua filter implementation details
🧯 If You Can't Patch
- Implement network segmentation to limit access to vulnerable services
- Add application-level authentication/authorization as additional security layer
🔍 How to Verify
Check if Vulnerable:
Check Istio version: kubectl get pods -n istio-system -l app=istiod -o jsonpath='{.items[*].spec.containers[*].image}'
Check Version:
istioctl version
Verify Fix Applied:
Verify upgraded version and test authorization policies with fragment-containing requests
📡 Detection & Monitoring
Log Indicators:
- HTTP requests with # in URL path in Envoy access logs
- Authorization policy denials for previously allowed paths
Network Indicators:
- HTTP traffic with URL fragments to protected endpoints
- Unexpected successful requests to restricted paths
SIEM Query:
source="istio-proxy" AND (url="*#*" OR status="200" AND path="*/protected/*")