Description
InternLM LMDeploy 0.9.0 through 0.18.0 contains an unauthenticated remote code execution vulnerability that allows remote attackers to run OS commands by sending pickled data to the /update_weights endpoint. Attackers can submit a base64-encoded crafted pickle in serialized_named_tensors, which ForkingPickler.loads deserializes without validation, executing commands as the api_server process.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| InternLM | lmdeploy | 0.9.0 – ≤ 0.18.0 | — |
References
- GitHub Issue #4698 issue-tracking
- https://github.com/InternLM/lmdeploy product
- https://github.com/InternLM/lmdeploy/blob/v0.18.0/lmdeploy/serve/openai/endpoints/management.py#L55-L60 technical-description
- https://github.com/InternLM/lmdeploy/blob/v0.18.0/lmdeploy/turbomind/turbomind.py#L345 technical-description
- https://github.com/InternLM/lmdeploy/pull/4964 patch issue-tracking
- VulnCheck Advisory: LMDeploy 0.9.0 through 0.18.0 Unauthenticated RCE via /update_weights Pickle Deserialization third-party-advisory