CVE-2026-116588: dd-trace-py: ReDoS in query-string obfuscation causes DoS
AWAITING NVDDatadog's Python APM client (dd-trace-py, 1.5.0 up to 3.19.9 and 4.15.6) uses a default regex to obfuscate URL query strings that can backtrack catastrophically, so a single crafted request can pin a CPU core and stall the service. Because the processing runs synchronously in the request path and is enabled by default in the HTTP tracing integrations, any internet-facing Python service instrumented with dd-trace-py, including AI inference APIs and LLM gateways built on FastAPI, Flask or Django, can be knocked offline by an unauthenticated attacker. No EPSS score, public exploit, Nuclei template or KEV listing exists yet, and the blast radius (downstream dependents) is unknown, but ReDoS payloads are trivial to craft once the fix commits are public. Upgrade to 3.19.9 or 4.15.6 now; if you cannot, restrict query strings in span tags or customize the obfuscation regex, and alert on abnormal CPU and latency spikes on traced endpoints.
What is the risk?
High for availability only. The flaw is remotely reachable with no authentication or user interaction, and is on by default in affected HTTP integrations. There is no confidentiality or integrity impact. Exploit code is not public and there is no KEV or SSVC signal, but the fix commits reveal the vulnerable pattern, making weaponization easy. Exposure is highest for internet-facing, single-threaded or low-concurrency Python workers, such as model-serving endpoints, where one stuck request blocks others. No CVSS or EPSS score is available.
How does the attack unfold?
How severe is it?
What should I do?
1 step1) Upgrade ddtrace to 3.19.9 (3.x line) or 4.15.6 (4.x line). 2) Inventory services with ddtrace installed (pip list, SBOM, container scans) and prioritize internet-facing ones. 3) Workaround if patching is delayed: disable inclusion of query strings in URL span tags or override the default query-string obfuscation regex with a safe pattern, and apply WAF or gateway limits on query string length. 4) Detection: alert on sustained 100% CPU in worker processes, spikes in p99 latency, and requests with unusually long or repetitive query strings in access logs. 5) Use worker timeouts and health-check based restarts to limit blast radius.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-116588?
Datadog's Python APM client (dd-trace-py, 1.5.0 up to 3.19.9 and 4.15.6) uses a default regex to obfuscate URL query strings that can backtrack catastrophically, so a single crafted request can pin a CPU core and stall the service. Because the processing runs synchronously in the request path and is enabled by default in the HTTP tracing integrations, any internet-facing Python service instrumented with dd-trace-py, including AI inference APIs and LLM gateways built on FastAPI, Flask or Django, can be knocked offline by an unauthenticated attacker. No EPSS score, public exploit, Nuclei template or KEV listing exists yet, and the blast radius (downstream dependents) is unknown, but ReDoS payloads are trivial to craft once the fix commits are public. Upgrade to 3.19.9 or 4.15.6 now; if you cannot, restrict query strings in span tags or customize the obfuscation regex, and alert on abnormal CPU and latency spikes on traced endpoints.
Is CVE-2026-116588 actively exploited?
No confirmed active exploitation of CVE-2026-116588 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-116588?
1) Upgrade ddtrace to 3.19.9 (3.x line) or 4.15.6 (4.x line). 2) Inventory services with ddtrace installed (pip list, SBOM, container scans) and prioritize internet-facing ones. 3) Workaround if patching is delayed: disable inclusion of query strings in URL span tags or override the default query-string obfuscation regex with a safe pattern, and apply WAF or gateway limits on query string length. 4) Detection: alert on sustained 100% CPU in worker processes, spikes in p99 latency, and requests with unusually long or repetitive query strings in access logs. 5) Use worker timeouts and health-check based restarts to limit blast radius.
What systems are affected by CVE-2026-116588?
This vulnerability affects the following AI/ML architecture patterns: Model serving, LLM API gateways, RAG pipelines, Agent frameworks, MLOps services.
What is the CVSS score for CVE-2026-116588?
No CVSS score has been assigned yet.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029Denial of AI ServiceAML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
Datadog dd-trace-py is the Datadog Python APM client. From 1.5.0 until 3.19.9 and 4.15.6, the default query-string obfuscation regular expression can exhibit excessive backtracking while synchronously processing attacker-controlled URL query strings for HTTP span metadata. A remote attacker can cause prolonged CPU consumption, request latency, and service unavailability in affected HTTP tracing integrations that include query strings in URL span tags. The vulnerable processing is enabled by default for those integrations. This issue is fixed in versions 3.19.9 and 4.15.6.
Exploitation Scenario
An attacker finds a public LLM inference or RAG API written in Python and traced with Datadog APM. They send a handful of concurrent GET requests with very long, specially crafted query strings that trigger catastrophic backtracking in the obfuscation regex. Each request ties up a worker's CPU synchronously, exhausting the worker pool, so legitimate inference and retrieval requests time out and the service becomes unavailable. Repeating the requests keeps the service down at negligible attacker cost.
Weaknesses (CWE)
CWE-1333Inefficient Regular Expression ComplexityPrimaryCWE-1333Inefficient Regular Expression ComplexityCWE-1333 — Inefficient Regular Expression Complexity: The product uses a regular expression with a worst-case computational complexity that is inefficient and possibly exponential.
- [Architecture and Design] Use regular expressions that do not support backtracking, e.g. by removing nested quantifiers.
- [System Configuration] Set backtracking limits in the configuration of the regular expression implementation, such as PHP's pcre.backtrack_limit. Also consider limits on execution time for the process.
Source: MITRE CWE corpus.
References
- github.com/DataDog/dd-trace-py/commit/63ddc3cb07d8813ded7a8b3ab5b8d0f5470e4bfd
- github.com/DataDog/dd-trace-py/commit/83ea39845dd95bfb9b8e247c62b3d22fc5dce1ce
- github.com/DataDog/dd-trace-py/commit/a6d73607ea45ecd67152630f64b0945556972ed8
- github.com/DataDog/dd-trace-py/pull/20857
- github.com/DataDog/dd-trace-py/pull/20862
- github.com/DataDog/dd-trace-py/pull/20880
- github.com/DataDog/dd-trace-py/releases/tag/v3.19.9
- github.com/DataDog/dd-trace-py/releases/tag/v4.15.6
- github.com/DataDog/dd-trace-py/security/advisories/GHSA-3633-r77q-h3v3
Timeline
Related Vulnerabilities
CVE-2026-3366010.0TensorFlow: type confusion NPD in tensor conversion
Same attack type: DoSCVE-2023-256689.8TensorFlow: unauthenticated RCE via heap buffer overflow
Same attack type: DoSCVE-2022-235879.8TensorFlow: integer overflow in Grappler enables RCE
Same attack type: DoSCVE-2022-359399.8TensorFlow: ScatterNd OOB write enables RCE/crash
Same attack type: DoSCVE-2022-419009.8TensorFlow: heap OOB RCE in FractionalMaxPool op
Same attack type: DoS