CVE-2023-43810

7.5 HIGH

📋 TL;DR

This vulnerability in OpenTelemetry Python autoinstrumentation allows attackers to cause memory exhaustion by sending HTTP requests with random, long HTTP method values. The unbound cardinality of the 'http_method' label leads to excessive memory consumption when many malicious requests are processed. Affected systems are those using OpenTelemetry Python autoinstrumentation for HTTP handlers without proper HTTP method filtering.

💻 Affected Systems

Products:
  • OpenTelemetry Python autoinstrumentation
Versions: All versions before 0.41b0
Operating Systems: All operating systems running Python
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems using HTTP handler instrumentation without external HTTP method filtering at CDN, load balancer, or middleware level.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete server memory exhaustion leading to denial of service, application crashes, and potential data loss or corruption.

🟠

Likely Case

Degraded performance, increased memory usage, and potential service disruption under sustained attack.

🟢

If Mitigated

Minimal impact with proper HTTP method validation and rate limiting in place.

🌐 Internet-Facing: HIGH - Internet-facing applications are directly exposed to malicious HTTP requests from untrusted sources.
🏢 Internal Only: MEDIUM - Internal systems could still be targeted by authenticated users or compromised internal hosts.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Attack requires sending HTTP requests with unusual method names, which is trivial to automate. No authentication needed for internet-facing applications.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.41b0

Vendor Advisory: https://github.com/open-telemetry/opentelemetry-python-contrib/security/advisories/GHSA-5rv5-6h4r-h22v

Restart Required: Yes

Instructions:

1. Update OpenTelemetry Python autoinstrumentation package to version 0.41b0 or later. 2. Run: pip install --upgrade opentelemetry-instrumentation==0.41b0. 3. Restart your application to apply the fix.

🔧 Temporary Workarounds

HTTP Method Filtering

all

Implement HTTP method validation at CDN, load balancer, or application middleware level to reject unknown or malformed HTTP methods.

Disable HTTP Method Label

all

Configure OpenTelemetry to exclude the http_method label from metrics collection.

OTEL_PYTHON_INSTRUMENTATION_HTTP_CAPTURE_HTTP_METHOD=false

🧯 If You Can't Patch

  • Implement HTTP method validation at network perimeter (CDN/LB) to only allow standard HTTP methods (GET, POST, PUT, DELETE, etc.)
  • Deploy rate limiting and request filtering to block requests with unusually long or random HTTP methods

🔍 How to Verify

Check if Vulnerable:

Check if OpenTelemetry Python autoinstrumentation version is below 0.41b0 and if HTTP handler instrumentation is enabled.

Check Version:

pip show opentelemetry-instrumentation | grep Version

Verify Fix Applied:

Verify OpenTelemetry Python autoinstrumentation version is 0.41b0 or higher and test that HTTP requests with random method names no longer cause memory spikes.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTTP method names in access logs
  • Rapid memory consumption increases
  • OpenTelemetry metrics with unusual http_method values

Network Indicators:

  • HTTP requests with non-standard method names
  • High volume of requests with varying method values

SIEM Query:

source="web_logs" AND http_method NOT IN ("GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "PATCH")

🔗 References

📤 Share & Export