CVE-2026-47213: BoxLite: sandbox timeout bypass enables DoS via SIGALRM

GHSA-xjhv-pp2r-6f82 MEDIUM PoC AVAILABLE CISA: TRACK*
Published May 29, 2026
CISO Take

BoxLite's execution sandbox sends SIGALRM (catchable signal 14) instead of SIGKILL (uncatchable signal 9) when terminating timed-out processes — a one-character code typo that lets any submitted workload survive indefinitely by calling `signal(SIGALRM, SIG_IGN)` before doing anything else. For AI platforms that use BoxLite to execute LLM-generated or user-submitted code — code interpreter features, agentic tool runners, ML evaluation harnesses — this means a single authenticated user can exhaust the sandbox VM's resources and deny service to all tenants. A fully working PoC is published in the GitHub advisory, making exploitation trivial; there are 5 downstream dependents and no patched release yet. Until a fix ships, apply cgroup CPU-time limits and `ulimit -t` at the OS layer as compensating controls, and restrict API submission to trusted identities only.

Sources: GitHub Advisory NVD ATLAS

What is the risk?

Medium severity by CVSS (6.5), but operationally elevated for multi-tenant AI execution environments. The exploit requires only authenticated API access and one line of code — well within script-kiddie capability given the public PoC. Impact is bounded to availability (C:N/I:N/A:H), but in shared AI sandbox deployments a single attacker can starve all concurrent workloads. No patch exists yet, which extends the exposure window. The 5 downstream dependents limit blast radius at the ecosystem level, but any organization running BoxLite in production for AI code execution should treat this as urgent.

How does the attack unfold?

Code Submission
Attacker submits a crafted workload to the BoxLite execution API with a nonzero timeout_ms; the workload registers SIGALRM as SIG_IGN at process start before performing any computation.
AML.T0049
Timeout Signal Bypass
When timeout_ms elapses, BoxLite's watcher sends SIGALRM (signal 14) to the process; the SIG_IGN handler silently discards it and the process continues running past its authorized deadline.
AML.T0097
Resource Exhaustion
The process runs indefinitely, consuming CPU cycles, memory, and process table slots inside the BoxLite VM; multiple parallel bypass requests accelerate resource depletion.
AML.T0034.002
Service Denial
The BoxLite execution service becomes unavailable as VM resources are exhausted, preventing all legitimate AI workloads and agent tool calls from executing.
AML.T0029

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Boxlite pip <= 0.8.2 No patch
2.2K 4 dependents Pushed 6d ago 50% patched ~21d to patch Full package profile →

Do you use Boxlite? You're affected.

How severe is it?

CVSS 3.1
6.5 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 19% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Trivial
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR Low
UI None
S Unchanged
C None
I None
A High

What should I do?

7 steps
  1. No patched version available — monitor GHSA-xjhv-pp2r-6f82 for a release fixing the Signal::SIGALRM → Signal::SIGKILL typo in guest/src/service/exec/timeout.rs.

  2. Apply OS-level hard limits as compensating controls: set ulimit -t <seconds> (CPU time) inside the container so the kernel enforces termination independently of signal delivery.

  3. Configure cgroup cpu.max and memory.max to cap per-workload resource consumption at the container/VM orchestration layer.

  4. Add Docker/container resource constraints (--cpus, --memory, --pids-limit) to all BoxLite VM instances.

  5. Restrict the execution API to authenticated, trusted submitters only — this is a PR:L vulnerability; reducing who can submit workloads reduces attack surface.

  6. If using BoxLite in an AI agent pipeline, implement an external watchdog at the orchestration layer that forcibly kills executions exceeding 2x their configured timeout_ms.

  7. Alert on processes running past their configured deadline as anomaly detection while awaiting patch.

What does CISA's SSVC say?

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 9 - Risk management system
ISO 42001
8.4 - AI system operation
NIST AI RMF
MANAGE 2.2 - Risk response plans
OWASP LLM Top 10
LLM10 - Unbounded Consumption

Frequently Asked Questions

What is CVE-2026-47213?

BoxLite's execution sandbox sends SIGALRM (catchable signal 14) instead of SIGKILL (uncatchable signal 9) when terminating timed-out processes — a one-character code typo that lets any submitted workload survive indefinitely by calling `signal(SIGALRM, SIG_IGN)` before doing anything else. For AI platforms that use BoxLite to execute LLM-generated or user-submitted code — code interpreter features, agentic tool runners, ML evaluation harnesses — this means a single authenticated user can exhaust the sandbox VM's resources and deny service to all tenants. A fully working PoC is published in the GitHub advisory, making exploitation trivial; there are 5 downstream dependents and no patched release yet. Until a fix ships, apply cgroup CPU-time limits and `ulimit -t` at the OS layer as compensating controls, and restrict API submission to trusted identities only.

Is CVE-2026-47213 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2026-47213, increasing the risk of exploitation.

How to fix CVE-2026-47213?

1. No patched version available — monitor GHSA-xjhv-pp2r-6f82 for a release fixing the Signal::SIGALRM → Signal::SIGKILL typo in guest/src/service/exec/timeout.rs. 2. Apply OS-level hard limits as compensating controls: set `ulimit -t <seconds>` (CPU time) inside the container so the kernel enforces termination independently of signal delivery. 3. Configure cgroup `cpu.max` and `memory.max` to cap per-workload resource consumption at the container/VM orchestration layer. 4. Add Docker/container resource constraints (`--cpus`, `--memory`, `--pids-limit`) to all BoxLite VM instances. 5. Restrict the execution API to authenticated, trusted submitters only — this is a PR:L vulnerability; reducing who can submit workloads reduces attack surface. 6. If using BoxLite in an AI agent pipeline, implement an external watchdog at the orchestration layer that forcibly kills executions exceeding 2x their configured timeout_ms. 7. Alert on processes running past their configured deadline as anomaly detection while awaiting patch.

What systems are affected by CVE-2026-47213?

This vulnerability affects the following AI/ML architecture patterns: AI code execution sandboxes, agent frameworks, model serving, training pipelines.

What is the CVSS score for CVE-2026-47213?

CVE-2026-47213 has a CVSS v3.1 base score of 6.5 (MEDIUM). The EPSS exploitation probability is 0.27%.

What is the AI security impact?

Affected AI Architectures

AI code execution sandboxesagent frameworksmodel servingtraining pipelines

MITRE ATLAS Techniques

AML.T0029 Denial of AI Service
AML.T0034.002 Agentic Resource Consumption
AML.T0049 Exploit Public-Facing Application
AML.T0097 Virtualization/Sandbox Evasion

Compliance Controls Affected

EU AI Act: Article 9
ISO 42001: 8.4
NIST AI RMF: MANAGE 2.2
OWASP LLM Top 10: LLM10

What are the technical details?

Original Advisory

Boxlite is a sandbox service that allows users to create lightweight virtual machines (Boxes) and launch OCI containers within them to run untrusted code. In versions 0.8.2 and prior, Boxlite allows users to configure a timeout for services running inside the virtual machine. When the timeout is triggered, Boxlite sends a signal to kill the process. However, instead of using the uncatchable SIGKILL signal, Boxlite uses the catchable SIGALRM signal. Malicious code running inside the sandbox can exploit this vulnerability to continue running after the timeout is triggered, leading to resource exhaustion within the virtual machine and affecting the availability of the Boxlite service. This issue has been patched via commit 28159fc.

Exploitation Scenario

An attacker with authenticated access to an AI platform using BoxLite (e.g., an AI code interpreter or agentic tool executor) submits a Python workload that immediately calls `signal.signal(signal.SIGALRM, signal.SIG_IGN)` before running a compute-intensive infinite loop. When the configured timeout fires, BoxLite sends SIGALRM to the process — which silently discards it and continues consuming CPU and memory. By submitting dozens of these requests in parallel, the attacker exhausts the BoxLite VM's resources, causing all legitimate AI workloads to queue indefinitely and effectively taking the execution service offline for all users. In an agentic AI context, a compromised or adversarial agent could trigger this automatically to sabotage competing agent executions or inflate cloud compute costs for the victim organization.

Weaknesses (CWE)

CWE-404 — Improper Resource Shutdown or Release: The product does not release or incorrectly releases a resource before it is made available for re-use.

  • [Requirements] Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid. For example, languages such as Java, Ruby, and Lisp perform automatic garbage collection that releases memory for objects that have been deallocated.
  • [Implementation] It is good practice to be responsible for freeing all resources you allocate and to be consistent with how and where you free memory in a function. If you allocate memory that you intend to free upon completion of the function, you must be sure to free the memory at all exit points for that function including error conditions.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Timeline

Published
May 29, 2026
Last Modified
June 11, 2026
First Seen
May 30, 2026

Related Vulnerabilities