LearnCTEM.com, Best CTEM Learning Platform
CVE Intelligence Hub

CVE-2026-120499: h5io Deserialization of Untrusted Data Vulnerability

CVE-2026-120499 explained: high Deserialization of Untrusted Data in h5io. CVSS 8.5. Affected versions, detection, fixes and CTEM priority.

Last updated: Nov 5, 2026

CVSS
8.5 HIGH
EPSS
n/a
CISA KEV
Not listed
CWE
CWE-95

Sources: National Vulnerability Database, CVE.org, CISA KEV, FIRST EPSS

CVE-2026-120499 Overview

h5io before 0.2.6 contains a code injection vulnerability in read_hdf5() that allows attackers to execute arbitrary code by supplying a crafted HDF5 file. Attackers can store Python code in a node titled timezone, which _triage_read() passes to eval() with builtins reachable, name an arbitrary module in class or custom-object nodes that _import_class() imports, or place pickled objects in pd_dataframe or pd_series nodes that pandas deserializes on read.

Critical Impact

Local or adjacent, unauthenticated attackers who persuade a user to act can exploit this Deserialization of Untrusted Data in h5io. The CVSS base score is 8.5 (High).

Affected Products

  • h5io: see the vendor advisory for the exact affected versions

Discovery Timeline

  • 2026-11-05: CVE-2026-120499 published to the National Vulnerability Database by disclosure@vulncheck.com
  • 2026-11-05: last updated in the NVD database

Technical Details for CVE-2026-120499

Vulnerability Analysis

CVE-2026-120499 is a Deserialization of Untrusted Data weakness (CWE-95, CWE-502: Deserialization of Untrusted Data) in h5io. Based on its CVSS vector, the flaw needs local or adjacent access, needs no login, and relies on a user taking an action. The application rebuilds objects from attacker controlled data, which can run code.

With a CVSS base score of 8.5, apply the vendor fix and confirm exposure on internet facing and business critical assets first.

Root Cause

The weakness is classified as CWE-95, CWE-502: Deserialization of Untrusted Data. The application rebuilds objects from attacker controlled data, which can run code.

Attack Vector

Based on the CVSS vector, the flaw needs local or adjacent access, needs no login, and relies on a user taking an action. Attack complexity is low complexity.

No exploitation in the wild is confirmed by CISA at the time of the last update. Check the references below for any vendor or researcher proof of concept.

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

Detection Methods for CVE-2026-120499

Detection Strategies

  • Inventory every instance of h5io and compare the running version with the affected range above.
  • Check external attack surface scans for internet facing instances of the component.
  • Run an authenticated vulnerability scan once your scanner ships a check for this CVE.

Monitoring Recommendations

  • Forward h5io application, access and audit logs to your SIEM for retrospective hunting.
  • Alert on new processes, configuration changes or outbound connections from the affected service.
  • Track the vendor advisory and the CISA KEV catalog for changes in exploitation status.

How to Mitigate CVE-2026-120499

Immediate Actions Required

  • Apply the fixed version of h5io named in the vendor advisory.
  • Prioritize internet facing and business critical instances first.
  • Rescan after the change to confirm the exposure is closed.

Patch Information

Use the fixed version listed in the vendor advisory for h5io.

Workarounds

  • If patching must wait, restrict network access to the affected service and place it behind authentication or a web application firewall rule.

CWE References

Technical References

This entry is built directly from NVD, CISA KEV and EPSS data. Verify fixed versions in the vendor advisory before you deploy.

Frequently asked questions

CVE-2026-120499 is a high severity Deserialization of Untrusted Data in h5io with a CVSS score of 8.5. Apply the vendor fix and confirm exposure on internet facing and business critical assets first.

Related CVEs

CRITICAL9.9
CVE-2026-27702
Budibase

Budibase is a low code platform for creating internal tools, workflows, and admin panels. Prior to version 3.30.4, an unsafe `eval()` vulnerability in Budibase's view filtering implementation allows any authenticated user (including free tier accounts) to execute arbitrary JavaScript code on the server. This vulnerability ONLY affects Budibase Cloud (SaaS) - self-hosted deployments use native CouchDB views and are not vulnerable. The vulnerability exists in `packages/server/src/db/inMemoryView.ts` where user-controlled view map functions are directly evaluated without sanitization. The primary impact comes from what lives inside the pod's environment: the `app-service` pod runs with secrets baked into its environment variables, including `INTERNAL_API_KEY`, `JWT_SECRET`, CouchDB admin credentials, AWS keys, and more. Using the extracted CouchDB credentials, we verified direct database access, enumerated all tenant databases, and confirmed that user records (email addresses) are readable. Version 3.30.4 contains a patch.

Feb 25, 2026
CRITICAL9.8
CVE-2026-4851
Casiano Grid

GRID::Machine versions through 0.127 for Perl allows arbitrary code execution via unsafe deserialization. GRID::Machine provides Remote Procedure Calls (RPC) over SSH for Perl. The client connects to remote hosts to execute code on them. A compromised or malicious remote host can execute arbitrary code back on the client through unsafe deserialization in the RPC protocol. read_operation() in lib/GRID/Machine/Message.pm deserialises values from the remote side using eval() $arg .= '$VAR1'; my $val = eval "no strict; $arg"; # line 40-41 $arg is raw bytes from the protocol pipe. A compromised remote host can embed arbitrary perl in the Dumper-formatted response: $VAR1 = do { system("..."); }; This executes on the client silently on every RPC call, as the return values remain correct. This functionality is by design but the trust requirement for the remote host is not documented in the distribution.

Mar 29, 2026
CRITICAL9.5
CVE-2026-27493
N8n

n8n is an open source workflow automation platform. Prior to versions 2.10.1, 2.9.3, and 1.123.22, a second-order expression injection vulnerability existed in n8n's Form nodes that could allow an unauthenticated attacker to inject and evaluate arbitrary n8n expressions by submitting crafted form data. When chained with an expression sandbox escape, this could escalate to remote code execution on the n8n host. The vulnerability requires a specific workflow configuration to be exploitable. First, a form node with a field interpolating a value provided by an unauthenticated user, e.g. a form submitted value. Second, the field value must begin with an `=` character, which caused n8n to treat it as an expression and triggered a double-evaluation of the field content. There is no practical reason for a workflow designer to prefix a field with `=` intentionally — the character is not rendered in the output, so the result would not match the designer's expectations. If added accidentally, it would be noticeable and very unlikely to persist. An unauthenticated attacker would need to either know about this specific circumstance on a target instance or discover a matching form by chance. Even when the preconditions are met, the expression injection alone is limited to data accessible within the n8n expression context. Escalation to remote code execution requires chaining with a separate sandbox escape vulnerability. The issue has been fixed in n8n versions 2.10.1, 2.9.3, and 1.123.22. Users should upgrade to one of these versions or later to remediate the vulnerability. If upgrading is not immediately possible, administrators should consider the following temporary mitigations. Review usage of form nodes manually for above mentioned preconditions, disable the Form node by adding `n8n-nodes-base.form` to the `NODES_EXCLUDE` environment variable, and/or disable the Form Trigger node by adding `n8n-nodes-base.formTrigger` to the `NODES_EXCLUDE` environment variable. These workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.

Feb 25, 2026
CRITICAL9.4
CVE-2026-69264
Flowiseai Flowise

Prior to 3.1.3, Flowise CSVAgent interpolates an attacker-controlled segment of the csvFile data URI directly into a Python source-code template that is then executed by Pyodide. Because Pyodide is loaded with the default js bridge to globalThis, which on Node.js exposes eval and dynamic import, the attacker can break out of the Python string literal, hand a JavaScript string to js.eval, dynamically import Node built-in modules such as fs and child_process, and execute arbitrary file I/O or OS commands as the Flowise process. The two validator paths around this code, validatePythonCodeForDataFrame and validateCustomReadCSVFunction, are never applied to the bootstrap template. A workspace user with chatflows:create or agentflows/chatflows update permission can plant a CSV Agent node with a crafted csvFile; once the chatflow is exposed via POST /api/v1/prediction/:id, any unauthenticated request triggers host remote code execution. This issue is fixed in version 3.1.3.

Aug 4, 2026
CRITICAL9.4
CVE-2026-39932
Open-Emr Openemr

OpenEMR through 8.2.0 contains a remote code execution vulnerability in the document category tree component (library/classes/Tree.class.php) that allows authenticated administrators to execute arbitrary operating system commands by injecting PHP payloads into the categories database table. Attackers can chain arbitrary SQL execution to alter the id column type to VARCHAR and insert a malicious PHP payload, which is then executed via an unsanitized eval() call whenever any page instantiates CategoryTree, including unauthenticated and low-privilege pages, resulting in command execution as the web server user.

Aug 3, 2026
CRITICAL9.3
CVE-2026-35002
Agno

Agno versions prior to 2.3.24 contain an arbitrary code execution vulnerability in the model execution component that allows attackers to execute arbitrary Python code by manipulating the field_type parameter passed to eval(). Attackers can influence the field_type value in a FunctionCall to achieve remote code execution.

Apr 2, 2026
Your next credential

Earn your free CTEM certification.

Learn to scope, prioritize, validate and mobilize fixes for CVEs like CVE-2026-120499 with a free CTEM certification.

Free to takePublicly verifiable

Beginner / Practitioner / Program Leader

Explore certifications