PHP has various global state that temporarily points into request memory. In some scenarios, global state may not be correctly reset, or may be repopulated after being reset. The global state may then refer to request memory even after it has been freed. Subsequent requests may read or branch on this stale state before it is fully initialized. Multiple strategies can trigger this condition and produce remote code execution (RCE).
LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. From version 1.74.2 to before version 1.83.7, two endpoints used to preview an MCP server before saving it — POST /mcp-rest/test/connection and POST /mcp-rest/test/tools/list — accepted a full server configuration in the request body, including the command, args, and env fields used by the stdio transport. When called with a stdio configuration, the endpoints attempted to connect, which spawned the supplied command as a subprocess on the proxy host with the privileges of the proxy process. The endpoints were gated only by a valid proxy API key, with no role check. Any authenticated user — including holders of low-privilege internal-user keys — could therefore run arbitrary commands on the host. This issue has been patched in version 1.83.7.
via cve_org
| Version | Type | Source | Base | Exp | Imp |
|---|---|---|---|---|---|
| 3.1 | Primary | cve.org | 8.8 | — | — |
| 3.1 | Primary | cve.org | 8.8 | — | — |
| 3.1 | Primary | cve.org | 8.8 | — | — |
| 3.1 | Primary | cve.org | 8.8 | — | — |
| 3.1 | Primary | NVD | 8.8 | 2.8 | 5.9 |
| 3.1 | Secondary | NVD | 8.8 | 2.8 | 5.9 |
| 3.1 | Secondary | GHSA | 8.8 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Primary | cve.org | 8.7 | — | — |
| 4.0 | Secondary | GHSA | 8.7 | — | — |
| 4.0 | Secondary | NVD | 8.7 | — | — |
| 4.0 | Secondary | ENISA EUVD | 8.7 | — | — |