LiteLLM has a sandbox escape in custom-code guardrail
### Impact The `POST /guardrails/test_custom_code` endpoint runs user-supplied Python inside a hand-rolled sandbox. The sandbox can be escaped using bytecode-level techniques, allowing arbitrary code execution in the proxy process — which runs as root in the default Docker image. **Reaching the endpoint requires a proxy-admin credential** in default configurations. ### Patches Fixed in **`1.83.11`**. The hand-rolled sandbox has been replaced with `RestrictedPython`. Upgrade to `1.83.11` or later. ### Workarounds If upgrading is not immediately possible, block `POST /guardrails/test_custom_code` at your reverse proxy or API gateway. ### References - Patched release: [`v1.83.10-stable`](https://github.com/BerriAI/litellm/releases/tag/v1.83.10-stable)
describes (1)
Related CVEs.
| ID | severity | exploitable | ||
|---|---|---|---|---|
| CVE-2026-40217US | — | Exploit | ||
LiteLLM through 2026-04-08 allows remote attackers to execute arbitrary code via bytecode rewriting at the /guardrails/test_custom_code URI. | ||||
references
External citations — patches, advisories, analysis.
- https://github.com/BerriAI/litellmPACKAGE
- https://github.com/BerriAI/litellm/releases/tag/v1.83.10-stableWEB
- https://github.com/BerriAI/litellm/security/advisories/GHSA-wxxx-gvqv-xp7pWEB
- https://github.com/advisories/GHSA-wxxx-gvqv-xp7pADVISORY
- https://nvd.nist.gov/vuln/detail/CVE-2026-40217ADVISORY
- https://pypi.org/project/litellmPACKAGE
- https://www.x41-dsec.de/lab/advisories/x41-2026-001-litellmWEB
Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.
Free scan