{"id":"CVE-2026-120833","kind":"vulnerability","aliases":["CVE-2026-120833"],"related":[],"title":"labbench: crafted data files run code when loaded with read()","description":"labbench before 0.46.1 contains a deserialization of untrusted data vulnerability in read() and read_relational() that passes any file with a .p or .pickle extension to pandas.read_pickle based on the extension alone. Attackers who supply a crafted data file or relational data archive can execute arbitrary code when a user loads it with these functions.","summary":"labbench before 0.46.1 passes any file ending in .p or .pickle to pandas.read_pickle based on the extension alone, in its read() and read_relational() functions. An attacker who supplies a crafted data file or relational data archive can run arbitrary code when a user loads it.","severity":"high","cvss":8.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["data-pipelines","labbench","package","python"],"not_affected_if":["labbench-0.46.1-or-later","no-untrusted-data-files"],"how_to_check":"- Check the installed labbench version with `pip show labbench` and confirm whether it is below `0.46.1`.\n- Search your code and notebooks for calls to `labbench` `read()` or `read_relational()` on files supplied by others.","fix":"- labbench: move to `0.46.1` or later.","status":"open","published_at":"2026-11-03T01:16:52+00:00","first_seen_at":"2026-11-03T01:47:23+00:00","triaged_at":"2026-11-03T01:48:23+00:00","updated_at":"2026-11-03T01:48:23+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-03T01:48:23Z","model":"claude-haiku-5-5","output":{"fix":"- labbench: move to `0.46.1` or later.","reach":"local","title":"labbench: crafted data files run code when loaded with read()","impact":"high","summary":"labbench before 0.46.1 passes any file ending in .p or .pickle to pandas.read_pickle based on the extension alone, in its read() and read_relational() functions. An attacker who supplies a crafted data file or relational data archive can run arbitrary code when a user loads it.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","labbench","data-pipelines"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"code runs as the user loading the crafted file","analyst_note":"","how_to_check":"- Check the installed labbench version with `pip show labbench` and confirm whether it is below `0.46.1`.\n- Search your code and notebooks for calls to `labbench` `read()` or `read_relational()` on files supplied by others.","plain_action":"","needs_analyst":false,"not_affected_if":["labbench-0.46.1-or-later","no-untrusted-data-files"],"who_is_affected":"Teams that load data files with labbench's read() or read_relational() functions, especially files from outside their own organisation. Code that only reads data it generated itself is much less exposed. unknown whether the sources list other exposure conditions.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000668,"input_tokens":4171,"output_tokens":501,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-120833':13A,16A '-2026':12A,15A '0.46.1':25B,71C 'alon':41B,101C 'arbitrari':63B,115C 'archiv':60B,112C 'attack':50B,102C 'base':37B,97C 'code':6A,64B,116C 'contain':72C 'craft':2A,54B,106C 'cve':11A,14A 'data':3A,18B,55B,59B,77C,107C,111C 'data-pipelin':17B 'deseri':74C 'end':29B 'execut':114C 'extens':40B,93C,100C 'file':4A,28B,56B,87C,108C 'function':48B,124C 'labbench':1A,20B,23B,69C 'load':8A,68B,120C 'p':31B,90C 'packag':21B 'pandas.read':35B,95C 'pass':26B,85C 'pickl':33B,36B,92C,96C 'pipelin':19B 'python':22B 'read':10A,44B,46B,80C,82C 'relat':47B,58B,83C,110C 'run':5A,62B 'suppli':52B,104C 'untrust':76C 'user':67B,119C 'vulner':78C","nicknames":[],"mitigations":[],"who_affected":"Teams that load data files with labbench's read() or read_relational() functions, especially files from outside their own organisation. Code that only reads data it generated itself is much less exposed. unknown whether the sources list other exposure conditions.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["datapipelines","high","labbench","package","python"],"first_public_at":"2026-11-03T01:16:52+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-120833","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120833","severity":null,"published_at":"2026-11-03T01:16:52+00:00","modified_at":"2026-11-03T01:16:52+00:00","first_seen_at":"2026-11-03T01:47:23+00:00","fetched_at":"2026-11-03T01:47:23+00:00","note":null}],"documents":[{"id":54857,"url":"https://github.com/usnistgov/labbench/commit/ac9b9b18cba67cb8e85eb563b6bb7dc1092b4c54","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":54858,"url":"https://www.vulncheck.com/advisories/labbench-before-0.46.1-deserialization-of-untrusted-data-via-read-pickle-auto-dispatch","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"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}