{"id":"CVE-2026-119706","kind":"vulnerability","aliases":["CVE-2026-119706"],"related":[],"title":"LMDeploy: unauthenticated pickle upload to /update_weights runs OS commands","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.","summary":"InternLM LMDeploy versions 0.9.0 through 0.18.0 deserialize pickled data sent to the /update_weights endpoint without validation. A remote attacker can send a crafted pickle and run OS commands as the api_server process.","severity":"critical","cvss":9.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-inference","ai-tooling","lmdeploy","python","self-hosted"],"not_affected_if":["no-network-exposure","versions-outside-range"],"how_to_check":"- Check the installed LMDeploy version with `pip show lmdeploy`, and look for it in any requirements or lock files.\n- Look for an exposed `/update_weights` endpoint on servers running `lmdeploy serve api_server`.","fix":"- Move to a version outside `0.9.0` through `0.18.0`; the fixed version is unknown from the sources.","status":"open","published_at":"2026-10-30T16:17:51+00:00","first_seen_at":"2026-10-30T16:31:26+00:00","triaged_at":"2026-10-30T16:31:44+00:00","updated_at":"2026-10-30T16:31:44+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-10-30T16:31:44Z","model":"claude-haiku-5-5","output":{"fix":"- Move to a version outside `0.9.0` through `0.18.0`; the fixed version is unknown from the sources.","reach":"internet","title":"LMDeploy: unauthenticated pickle upload to /update_weights runs OS commands","impact":"high","summary":"InternLM LMDeploy versions 0.9.0 through 0.18.0 deserialize pickled data sent to the /update_weights endpoint without validation. A remote attacker can send a crafted pickle and run OS commands as the api_server process.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["lmdeploy","python","ai-inference","self-hosted"],"confidence":0.8,"fix_status":"unknown","needs_auth":"unknown","worst_case":"Attacker runs OS commands as the api_server process remotely.","analyst_note":"Find the fixed LMDeploy version and whether the endpoint is on by default; check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-119706 and the upstream repository advisory.","how_to_check":"- Check the installed LMDeploy version with `pip show lmdeploy`, and look for it in any requirements or lock files.\n- Look for an exposed `/update_weights` endpoint on servers running `lmdeploy serve api_server`.","plain_action":"","needs_analyst":true,"not_affected_if":["versions-outside-range","no-network-exposure"],"who_is_affected":"Teams running LMDeploy's api_server with the update_weights endpoint reachable from the network are exposed. The sources do not say whether authentication or a non-default setting is needed to reach the endpoint, so treat any reachable instance as exposed. Local-only deployments with no network access to the API can skip it.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"critical"},"cost_usd":0.00074,"input_tokens":4174,"output_tokens":645,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-119706':12A,15A '-2026':11A,14A '/update_weights':6A,39B,86C '0.18.0':32B,64C '0.9.0':30B,62C 'ai':17B,20B 'ai-infer':16B 'ai-tool':19B 'allow':73C 'api':57B,110C 'attack':45B,75C,88C 'base64':93C 'base64-encoded':92C 'code':69C 'command':9A,54B,79C,107C 'contain':65C 'craft':49B,95C 'cve':10A,13A 'data':35B,83C 'deseri':33B,103C 'encod':94C 'endpoint':40B,87C 'execut':70C,106C 'forkingpickler.loads':102C 'host':26B 'infer':18B 'internlm':27B,60C 'lmdeploy':1A,22B,28B,61C 'name':99C 'os':8A,53B,78C 'pickl':3A,34B,50B,82C,96C 'process':59B,112C 'python':23B 'remot':44B,68C,74C 'run':7A,52B,77C 'self':25B 'self-host':24B 'send':47B,81C 'sent':36B 'serial':98C 'server':58B,111C 'submit':90C 'tensor':100C 'tool':21B 'unauthent':2A,67C 'upload':4A 'valid':42B,105C 'version':29B 'vulner':71C 'without':41B,104C","nicknames":[],"mitigations":[],"who_affected":"Teams running LMDeploy's api_server with the update_weights endpoint reachable from the network are exposed. The sources do not say whether authentication or a non-default setting is needed to reach the endpoint, so treat any reachable instance as exposed. Local-only deployments with no network access to the API can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T16:17:51+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119706","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119706","severity":null,"published_at":"2026-10-30T16:17:51+00:00","modified_at":"2026-10-30T16:17:51+00:00","first_seen_at":"2026-10-30T16:31:26+00:00","fetched_at":"2026-10-30T16:31:26+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}