{"id":"CVE-2026-120859","kind":"vulnerability","aliases":["CVE-2026-120859"],"related":[],"title":"PyMoDAQ: crafted HDF5, dock or XML files run arbitrary Python code","description":"PyMoDAQ before 4.4.13, and pymodaq_data, pymodaq_gui, and pymodaq_utils before 5.1.15, 5.2.x before 5.2.14, and 5.3.x before 5.3.10, contain deserialization of untrusted data and eval injection vulnerabilities that allow attackers to execute arbitrary code by supplying crafted files that a user opens. Attackers can store pickled objects in HDF5 string nodes that StringARRAY.array_to_string() passes to pickle.loads() when the node is browsed or read, place Python expressions in HDF5 attributes that JsonConverter.json2object() evaluates, supply a .dock file that load_layout_state() unpickles from the Dashboard Load layout action, or embed Python expressions in XML settings files that elt_to_dict() and set_txt_from_elt() evaluate.","summary":"PyMoDAQ and its pymodaq_data, pymodaq_gui and pymodaq_utils packages unpickle or eval data taken from HDF5 attributes, HDF5 string nodes, .dock layout files and XML settings files. A user who opens a crafted file lets an attacker run arbitrary Python code on their machine.","severity":"high","cvss":8.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["hdf5","package","pymodaq","python","scientific-instrumentation"],"not_affected_if":["trusted-files-only","versions-patched"],"how_to_check":"- Check the installed PyMoDAQ version with `pip show pymodaq` and the pymodaq_data, pymodaq_gui and pymodaq_utils versions with `pip show pymodaq_data pymodaq_gui pymodaq_utils`.\n- Look for the packages in lab or instrument-control environments that open shared HDF5, .dock or XML files.","fix":"- PyMoDAQ: move to `4.4.13` or later.\n- pymodaq_data, pymodaq_gui and pymodaq_utils: move to `5.1.15` or later on the 5.1 line, `5.2.14` or later on the 5.2 line, and `5.3.10` or later on the 5.3 line.","status":"open","published_at":"2026-11-05T18:17:05+00:00","first_seen_at":"2026-11-05T18:40:09+00:00","triaged_at":"2026-11-05T18:40:25+00:00","updated_at":"2026-11-05T18:40:25+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-05T18:40:25Z","model":"claude-haiku-5-5","output":{"fix":"- PyMoDAQ: move to `4.4.13` or later.\n- pymodaq_data, pymodaq_gui and pymodaq_utils: move to `5.1.15` or later on the 5.1 line, `5.2.14` or later on the 5.2 line, and `5.3.10` or later on the 5.3 line.","reach":"local","title":"PyMoDAQ: crafted HDF5, dock or XML files run arbitrary Python code","impact":"high","summary":"PyMoDAQ and its pymodaq_data, pymodaq_gui and pymodaq_utils packages unpickle or eval data taken from HDF5 attributes, HDF5 string nodes, .dock layout files and XML settings files. A user who opens a crafted file lets an attacker run arbitrary Python code on their machine.","audience":"developers","category":"package","nicknames":[],"who_cares":["pymodaq","python","scientific-instrumentation","hdf5"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Attacker runs arbitrary Python code on the user's machine","analyst_note":"Confirm the affected version ranges and whether any vendor advisory on github.com names other trigger paths or a workaround.","how_to_check":"- Check the installed PyMoDAQ version with `pip show pymodaq` and the pymodaq_data, pymodaq_gui and pymodaq_utils versions with `pip show pymodaq_data pymodaq_gui pymodaq_utils`.\n- Look for the packages in lab or instrument-control environments that open shared HDF5, .dock or XML files.","plain_action":"","needs_analyst":true,"not_affected_if":["trusted-files-only","versions-patched"],"who_is_affected":"Any installation of PyMoDAQ or the pymodaq_data, pymodaq_gui or pymodaq_utils packages in the affected ranges is exposed when a user opens an attacker-supplied HDF5, .dock or XML file. Teams that only work with their own trusted data files and never open files from others are at lower risk, but the sources do not say whether the flaw is reachable without opening a file.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000846,"input_tokens":4592,"output_tokens":774,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-120859':14A,17A '-2026':13A,16A '4.4.13':73C '5.1.15':83C '5.2':84C '5.2.14':87C '5.3':89C '5.3.10':92C 'action':163C 'allow':103C 'arbitrari':9A,65B,107C 'attack':63B,104C,117C 'attribut':43B,145C 'brows':137C 'code':11A,67B,108C 'contain':93C 'craft':2A,59B,111C 'cve':12A,15A 'dashboard':160C 'data':29B,39B,76C,97C 'deseri':94C 'dict':175C 'dock':4A,47B,151C 'elt':173C,180C 'emb':165C 'eval':38B,99C 'evalu':148C,181C 'execut':106C 'express':142C,167C 'file':7A,49B,53B,60B,112C,152C,171C 'gui':31B,78C 'hdf5':3A,18B,42B,44B,123C,144C 'inject':100C 'instrument':24B 'jsonconverter.json2object':147C 'layout':48B,155C,162C 'let':61B 'load':154C,161C 'machin':70B 'node':46B,125C,135C 'object':121C 'open':57B,116C 'packag':19B,35B 'pass':130C 'pickl':120C 'pickle.loads':132C 'place':140C 'pymodaq':1A,20B,25B,28B,30B,33B,71C,75C,77C,80C 'python':10A,21B,66B,141C,166C 'read':139C 'run':8A,64B 'scientif':23B 'scientific-instrument':22B 'set':52B,170C,177C 'state':156C 'store':119C 'string':45B,124C,129C 'stringarray.array':127C 'suppli':110C,149C 'taken':40B 'txt':178C 'unpickl':36B,157C 'untrust':96C 'user':55B,115C 'util':34B,81C 'vulner':101C 'x':85C,90C 'xml':6A,51B,169C","nicknames":[],"mitigations":[],"who_affected":"Any installation of PyMoDAQ or the pymodaq_data, pymodaq_gui or pymodaq_utils packages in the affected ranges is exposed when a user opens an attacker-supplied HDF5, .dock or XML file. Teams that only work with their own trusted data files and never open files from others are at lower risk, but the sources do not say whether the flaw is reachable without opening a file.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["hdf5","high","package","pymodaq","python","scientificinstrumentation"],"campaign_type":null,"first_public_at":"2026-11-04T14:53:53+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/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-120859","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120859","severity":null,"published_at":"2026-11-05T18:17:05+00:00","modified_at":"2026-11-05T18:17:05+00:00","first_seen_at":"2026-11-05T18:40:09+00:00","fetched_at":"2026-11-05T18:40:09+00:00","note":null}],"documents":[{"id":78679,"url":"https://github.com/PyMoDAQ/PyMoDAQ/commit/041e8a22b3dbe3c986ec0ea3c6b46a22f5efe374","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":78680,"url":"https://github.com/PyMoDAQ/PyMoDAQ/commit/3bf9042a58f5d4870a2b45fe2c9423aafe6b9203","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":78681,"url":"https://github.com/PyMoDAQ/PyMoDAQ/commit/6c7fff74d82624c640bd79513f5b4675ea6d88da","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":78682,"url":"https://github.com/PyMoDAQ/PyMoDAQ/commit/ae0042513eb979c84da690825902658c625718d1","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":78683,"url":"https://github.com/PyMoDAQ/PyMoDAQ/releases/tag/4.4.13","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":78684,"url":"https://github.com/PyMoDAQ/PyMoDAQ/releases/tag/5.1.15","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":78685,"url":"https://github.com/PyMoDAQ/PyMoDAQ/releases/tag/5.2.14","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":78686,"url":"https://github.com/PyMoDAQ/PyMoDAQ/releases/tag/5.3.10","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":78687,"url":"https://github.com/PyMoDAQ/PyMoDAQ/security/advisories/GHSA-jw9g-5c9x-cf84","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-04T14:53:53+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":78688,"url":"https://www.vulncheck.com/advisories/pymodaq-before-5.3.10-arbitrary-code-execution-via-crafted-hdf5-dock-layout-and-xml-settings-files","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}