/

CVE-2026-111160

Severity:

HIGH RISK

(7.5)

Unsafe Deserialization (CWE-502) in LightLLM API Endpoint

CVE-2026-111160

Deferred

Vulnerability type

Category:

Denial of Service

CWE:

CWE-502

Impact:

Inference Worker Denial of Service

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

LightLLM contains an unsafe deserialization flaw in the internal pd_kv_trans_params handling for the /generate endpoint. An unauthenticated attacker may submit crafted parameters that cause deserialization to fail, terminate the inference worker thread, and prevent later requests from completing until the service is restarted.

LightLLM contains an unsafe deserialization flaw in the internal pd_kv_trans_params handling for the /generate endpoint. An unauthenticated attacker may submit crafted parameters that cause deserialization to fail, terminate the inference worker thread, and prevent later requests from completing until the service is restarted.

Affected context

The issue occurs in LightLLM deployments where the /generate endpoint is reachable and processes the internal pd_kv_trans_params field through pickle deserialization. The service may remain responsive to health checks while the inference worker is no longer able to process requests, creating a mismatch between reported health and actual availability.

The issue occurs in LightLLM deployments where the /generate endpoint is reachable and processes the internal pd_kv_trans_params field through pickle deserialization. The service may remain responsive to health checks while the inference worker is no longer able to process requests, creating a mismatch between reported health and actual availability.

Exploit preconditions

  • Attack surface: The LightLLM /generate HTTP endpoint
  • Required access: No authentication, if the endpoint is exposed to the attacker
  • Trigger point: Processing of the pd_kv_trans_params field during inference request handling
  • Why exploitation is possible: Crafted serialized input can cause pickle.loads to raise an unhandled failure in InferSamplingParams, terminating the inference thread and leaving subsequent requests unable to complete
  • Attack surface: The LightLLM /generate HTTP endpoint
  • Required access: No authentication, if the endpoint is exposed to the attacker
  • Trigger point: Processing of the pd_kv_trans_params field during inference request handling
  • Why exploitation is possible: Crafted serialized input can cause pickle.loads to raise an unhandled failure in InferSamplingParams, terminating the inference thread and leaving subsequent requests unable to complete

Why this happens

The vulnerability results from deserializing request-controlled data with a general-purpose object deserialization mechanism. Pickle data is not inherently a safe interchange format for untrusted input, and failures during deserialization may also disrupt worker availability when they are not contained by robust error handling. This maps to CWE-502: Deserialization of Untrusted Data.

The vulnerability results from deserializing request-controlled data with a general-purpose object deserialization mechanism. Pickle data is not inherently a safe interchange format for untrusted input, and failures during deserialization may also disrupt worker availability when they are not contained by robust error handling. This maps to CWE-502: Deserialization of Untrusted Data.

Potential impact

  • The inference worker may stop processing requests
  • Subsequent inference requests could hang or time out
  • Service availability may be reduced while health checks continue to pass
  • Operators may need to restart affected workers
  • Repeated requests could cause sustained denial of service
  • The inference worker may stop processing requests
  • Subsequent inference requests could hang or time out
  • Service availability may be reduced while health checks continue to pass
  • Operators may need to restart affected workers
  • Repeated requests could cause sustained denial of service

General mitigation guidance

Mitigation generally focuses on removing trust in client-supplied serialized objects and containing failures at the request boundary.

Common defensive patterns include:

  • Replacing pickle-based request deserialization with a restricted, data-only format
  • Rejecting or tightly validating internal-only fields such as pd_kv_trans_params
  • Applying strict schemas, type checks, and size limits before processing parameters
  • Catching deserialization and parameter-processing failures without terminating worker threads
  • Separating liveness and readiness checks so failed inference capacity is reported accurately
  • Restricting endpoint exposure through authentication, authorization, network policy, and rate limiting
  • Running inference workers with minimal privileges and isolated process boundaries

Mitigation generally focuses on removing trust in client-supplied serialized objects and containing failures at the request boundary.

Common defensive patterns include:

  • Replacing pickle-based request deserialization with a restricted, data-only format
  • Rejecting or tightly validating internal-only fields such as pd_kv_trans_params
  • Applying strict schemas, type checks, and size limits before processing parameters
  • Catching deserialization and parameter-processing failures without terminating worker threads
  • Separating liveness and readiness checks so failed inference capacity is reported accurately
  • Restricting endpoint exposure through authentication, authorization, network policy, and rate limiting
  • Running inference workers with minimal privileges and isolated process boundaries

How teams detect issues like this

Detection may include static analysis for pickle.loads or equivalent deserialization of request-derived data, along with code review of internal fields accepted by public endpoints. Dynamic testing can verify that malformed parameter representations produce bounded client errors rather than worker termination. Runtime monitoring should correlate request failures, thread exits, queue growth, stalled inference calls, and discrepancies between health responses and actual request processing. API policies can also flag unauthenticated access to administrative or internal parameter fields.

Detection may include static analysis for pickle.loads or equivalent deserialization of request-derived data, along with code review of internal fields accepted by public endpoints. Dynamic testing can verify that malformed parameter representations produce bounded client errors rather than worker termination. Runtime monitoring should correlate request failures, thread exits, queue growth, stalled inference calls, and discrepancies between health responses and actual request processing. API policies can also flag unauthenticated access to administrative or internal parameter fields.

Sources

SourceLink
github.comgithub.com/ModelTC/LightLLM
github.comgithub.com/ModelTC/LightLLM/issues/1629
github.comgithub.com/ModelTC/lightllm/blob/v1.2.0/lightllm/server/api_lightllm.py#L37-L43
github.comgithub.com/ModelTC/lightllm/blob/v1.2.0/lightllm/server/core/objs/sampling_params.py#L356-L357
github.comgithub.com/ModelTC/lightllm/blob/v1.2.0/lightllm/server/router/model_infer/infer_batch.py#L484-L485
vulncheck.comvulncheck.com/advisories/lightllm-through-1.2.0-unauthenticated-dos-via-pd-kv-trans-params-deserialization

Frequently asked

questions

Yes, when the /generate endpoint is reachable by an unauthenticated attacker and accepts the affected internal field.

No. The described condition does not require authentication, although network controls may limit who can reach the endpoint.

Do not deserialize untrusted request data with pickle or another unrestricted object format. Use a constrained data-only representation with strict validation and safely contained error handling.

Restrict internal fields, enforce authentication and network access controls, test malformed inputs, monitor worker health independently from basic liveness checks, and use static analysis to identify unsafe deserialization paths.

Yes, when the /generate endpoint is reachable by an unauthenticated attacker and accepts the affected internal field.

No. The described condition does not require authentication, although network controls may limit who can reach the endpoint.

Do not deserialize untrusted request data with pickle or another unrestricted object format. Use a constrained data-only representation with strict validation and safely contained error handling.

Restrict internal fields, enforce authentication and network access controls, test malformed inputs, monitor worker health independently from basic liveness checks, and use static analysis to identify unsafe deserialization paths.

Find out what's already
exploitable in your codebase.