{"id":"CVE-2026-120320","kind":"vulnerability","aliases":["CVE-2026-120320"],"related":[],"title":"MoviePilot: unsafe deserialization in workflow fork endpoint allows remote attack","description":"A vulnerability was determined in jxxghp MoviePilot up to 3.1.2. This vulnerability affects the function WorkflowExecutor.restore_context of the file app/chain/workflow.py of the component Workflow Fork Endpoint. Executing a manipulation can lead to deserialization. The attack can be launched remotely. The exploit has been publicly disclosed and may be utilized. Upgrading to version 3.1.3 is able to resolve this issue. This patch is called 6034dcc880c13079aeb398dbe32c346ebcd3a6d2. It is recommended to upgrade the affected component.","summary":"MoviePilot up to 3.1.2 deserializes attacker-supplied data in the Workflow Fork Endpoint, in WorkflowExecutor.restore_context. A remote attacker can send a crafted request to trigger the deserialization, and a public exploit has been disclosed.","severity":"medium","cvss":5.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["moviepilot","package","python","self-hosted"],"not_affected_if":["version-3.1.3-or-later"],"how_to_check":"- Check the installed MoviePilot version and whether it is `3.1.2` or earlier.\n- Confirm whether the Workflow Fork Endpoint is reachable from the network (unknown from sources whether it is enabled by default).","fix":"- MoviePilot: upgrade to `3.1.3` (patch commit 6034dcc880c13079aeb398dbe32c346ebcd3a6d2).","status":"open","published_at":"2026-11-02T02:18:47+00:00","first_seen_at":"2026-11-02T02:23:37+00:00","triaged_at":"2026-11-02T02:24:29+00:00","updated_at":"2026-11-02T02:24:29+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-02T02:24:29Z","model":"claude-haiku-5-5","output":{"fix":"- MoviePilot: upgrade to `3.1.3` (patch commit 6034dcc880c13079aeb398dbe32c346ebcd3a6d2).","reach":"internet","title":"MoviePilot: unsafe deserialization in workflow fork endpoint allows remote attack","impact":"high","summary":"MoviePilot up to 3.1.2 deserializes attacker-supplied data in the Workflow Fork Endpoint, in WorkflowExecutor.restore_context. A remote attacker can send a crafted request to trigger the deserialization, and a public exploit has been disclosed.","audience":"businesses","category":"package","nicknames":[],"who_cares":["moviepilot","self-hosted","python"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"remote code may run on the server through deserialization","analyst_note":"Confirm whether the Workflow Fork Endpoint requires authentication and is enabled by default in MoviePilot, using the upstream advisory or commit 6034dcc880c13079aeb398dbe32c346ebcd3a6d2.","how_to_check":"- Check the installed MoviePilot version and whether it is `3.1.2` or earlier.\n- Confirm whether the Workflow Fork Endpoint is reachable from the network (unknown from sources whether it is enabled by default).","plain_action":"","needs_analyst":true,"not_affected_if":["version-3.1.3-or-later"],"who_is_affected":"MoviePilot installations up to version 3.1.2 that expose the Workflow Fork Endpoint. The sources do not say whether the endpoint is on by default or whether authentication is required, so teams running MoviePilot on a network-reachable host should treat it as exposed until upgraded.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000747,"input_tokens":4222,"output_tokens":650,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-120320':13A,16A '-2026':12A,15A '3.1.2':26B,68C '3.1.3':112C '6034dcc880c13079aeb398dbe32c346ebcd3a6d2':123C 'abl':114C 'affect':71C,130C 'allow':8A 'app/chain/workflow.py':79C 'attack':10A,29B,42B,94C 'attacker-suppli':28B 'call':122C 'compon':82C,131C 'context':39B,75C 'craft':46B 'cve':11A,14A 'data':31B 'deseri':3A,27B,51B,92C 'determin':62C 'disclos':58B,104C 'endpoint':7A,36B,85C 'execut':86C 'exploit':55B,100C 'file':78C 'fork':6A,35B,84C 'function':73C 'host':22B 'issu':118C 'jxxghp':64C 'launch':97C 'lead':90C 'manipul':88C 'may':106C 'moviepilot':1A,17B,23B,65C 'packag':18B 'patch':120C 'public':54B,103C 'python':19B 'recommend':126C 'remot':9A,41B,98C 'request':47B 'resolv':116C 'self':21B 'self-host':20B 'send':44B 'suppli':30B 'trigger':49B 'unsaf':2A 'upgrad':109C,128C 'util':108C 'version':111C 'vulner':60C,70C 'workflow':5A,34B,83C 'workflowexecutor.restore':38B,74C","nicknames":[],"mitigations":[],"who_affected":"MoviePilot installations up to version 3.1.2 that expose the Workflow Fork Endpoint. The sources do not say whether the endpoint is on by default or whether authentication is required, so teams running MoviePilot on a network-reachable host should treat it as exposed until upgraded.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","moviepilot","package","python","selfhosted"],"first_public_at":"2026-11-02T02:18:47+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/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":"cna@vuldb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120320","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120320","severity":null,"published_at":"2026-11-02T02:18:47+00:00","modified_at":"2026-11-02T02:18:47+00:00","first_seen_at":"2026-11-02T02:23:37+00:00","fetched_at":"2026-11-02T02:23:37+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"}