MLflow CrewAI autologging stores LLM provider API keys in traces
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Information disclosure
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Partial Red Hat: 1 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-200.
Summary
MLflow from 2.19.0 before 3.17.0 records CrewAI Agent objects through mlflow.crewai.autolog() without removing credentials nested inside them (CWE-312). The Agent llm field is converted to a string that contains the LLM provider API key, which is then stored in trace spans. An attacker with low privileges who can send traces to the MLflow backend or a configured OTLP destination can make plaintext provider credentials available to trace readers.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
Description from the CNA
MLflow is an open source AI engineering platform for agents, large language models, and machine learning models. From 2.19.0 until 3.17.0, mlflow.crewai.autolog() records CrewAI Agent objects without consistently sanitizing nested credential-bearing values. mlflow/crewai/autolog.py::_get_agent_attributes() converts the Agent llm field to a string that includes the provider API key, while mlflow/crewai/autolog.py::_construct_full_inputs() expands the Agent object into mlflow.spanInputs. Applications can therefore send plaintext provider credentials to the MLflow trace backend or a configured OTLP destination, where trace readers can obtain them. This issue is fixed in version 3.17.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| MLflow | mlflow | 2.19.0 to before 3.17.0 | 3.17.0 | Patch available | CNA |
| — | mlflow (PyPI) | 2.19.0 to before 3.17.0 | 3.17.0 | Patch available | GHSA-j7qq-vr8c-xvw3 |
- mlflow VendorMLflow Affected 2.19.0 to before 3.17.0 Fixed in 3.17.0 Patch available CNA
- mlflow (PyPI) Vendor— Affected 2.19.0 to before 3.17.0 Fixed in 3.17.0 Patch available GHSA-j7qq-vr8c-xvw3
Remediation
Upgrade the mlflow package to 3.17.0, which fixes this issue in both the vendor and PyPI listings. Red Hat rates this Moderate, and Red Hat's plan for Red Hat OpenShift AI (RHOAI) is none available.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
- Fix · CNA mlflow (mlflow) Fixed in 3.17.0
- Fix · GHSA-j7qq-vr8c-xvw3 mlflow (PyPI) Fixed in 3.17.0 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat OpenShift AI (RHOAI) | Affected | No fix yet: Fix deferred |
Timeline
- 2026-10-27 Threatist record created from CVE-2026-116691
- 2026-10-27 Alias added: GHSA-j7qq-vr8c-xvw3
- 2026-10-28 Priority changed: MEDIUM → LOW
- 2026-11-03 CISA SSVC decision points changed
- 2026-11-03 Priority changed: LOW → MEDIUM
- 2026-11-03 Affected versions changed · Red Hat
- 2026-11-03 CVSS score added · Red Hat
References
More MLflow vulnerabilities
- TI-2026-46366 Server-side request forgery in mlflow KEVCVSS 3.1CRITICAL 9.3
- TI-2023-03518 Absolute Path Traversal in mlflow/mlflow CVSS 3.1CRITICAL 10.0
- TI-2023-01113 Path Traversal: '\..\filename' in mlflow/mlflow CVSS 3.1CRITICAL 9.8
- TI-2025-31759 Redis Lua Use-After-Free may lead to remote code execution CVSS 3.1CRITICAL 10.0
- TI-2026-81527 Code execution via scorer deserialization in MLflow servers CVSS 3.1CRITICAL 9.8
- TI-2025-14028 Command Injection in mlflow/mlflow CVSS 3.1CRITICAL 10.0
Sources
- CVE-2026-116691 · CVE Program
- CVE-2026-116691 · NVD
- FIRST EPSS
- GHSA-j7qq-vr8c-xvw3 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-116691 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences