Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish malicious ESPnet model bundle
-
DeliveryVictim loads untrusted bundle
-
ExploitHydra instantiates crafted _target_
-
ExecutionArbitrary callable executes in process
-
ImpactAttacker achieves code execution on host
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a victim to obtain and load an untrusted/attacker-supplied ESPnet model bundle through the espnet3 Inference Model Handler (build_model → read_bundle), where the bundle's inference config (conf/inference.yaml) contains an attacker-controlled |
| Impact | This is a CWE-502 deserialization/arbitrary-instantiation flaw in ESPnet's espnet3 Inference Model Handler (build_model / read_bundle), where Hydra's instantiate() recursively resolves and calls any |
| Exploit ScenarioDerived | An attacker publishes a malicious ESPnet model bundle whose conf/inference.yaml sets a crafted |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Arbitrary Python object instantiation in ESPnet's espnet3 Inference Model Handler allows an attacker who supplies a crafted model bundle to execute code on the machine that loads it, with assessed impact of high confidentiality, integrity and availability loss. The bundle's inference config carries an attacker-chosen _target_ value that Hydra's instantiate() resolves and calls, including targets nested inside arguments, and pre-fix ESPnet applied no namespace restriction to what could be built. Exploitation requires the victim to obtain and load the untrusted bundle (user interaction, no authentication required), publicly available exploit code exists, and ESPnet versions up to 202610.post2 are affected with an upstream fix merged as PR #6829; note that the published CVSS 4.0 base score of 2.1 reflects a low-impact/threat-adjusted rating and is materially lower than the assessed CVSS 3.1 vector of AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply espnet/espnet commit f217b24f06de55e332cab10231469d5890dbbe00 (PR https://github.com/espnet/espnet/pull/6829, issue https://github.com/espnet/espnet/issues/6828) or upgrade to the first ESPnet release containing it once published. The commit restricts bundle _target_ values to espnet2./espnet3. class targets (checked by literal prefix and by resolved origin), recursively scans nested _target_ keys, denylists torch.load, torch.jit.load, torch.serialization.load, builtins.eval/exec/__import__, os.system and subprocess run/Popen/call/check_output, and applies the same validation to the backend_class argument in espnet3/systems/base/backend_inference.py; backporting only the loading.py change leaves the backend_class route open. Compensating controls until the patch is deployed: do not load model bundles from untrusted publishers, and treat any downloaded bundle as executable code - inspect conf/inference.yaml and reject configs containing unexpected _target_ keys (nested ones included) or non-ESPnet targets, noting this is manual and bypassable. Keep the default trust_user_code=False path, and be aware that setting trust_user_code=True explicitly disables the new target checks, so it must never be enabled for third-party bundles; note also that the fix does not constrain arguments passed to allowed classes or OmegaConf resolvers, so untrusted bundles remain risky even when patched. Where bundles must be processed from third parties, run inference in a disposable container or VM with no credentials mounted, no outbound network access, and a read-only filesystem - an operational tax that trades convenience for containment rather than preventing instantiation.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ESPnet is a speech processing toolkit whose espnet3 line publishes and loads self-contained model bundles: a bundle contains conf/inference.yaml plus weights, and espnet3.api.inference.loading.read_bundle (reached via build_model in the publication/inference_model.py path) builds the model from that config using Hydra's instantiate() over an OmegaConf tree. Hydra's instantiate() treats every _target_ key as a dotted import path, imports the referenced module (running its top-level code) and calls the referenced callable with the supplied arguments; instantiation is recursive, so a _target_ sitting inside an argument of another node is executed just like the top-level one. The root cause class is CWE-502 (deserialization of untrusted data): an attacker-controlled config is effectively a program, letting a bundle name os.system, subprocess.run, builtins.eval, torch.load or any other reachable callable and thereby execute code with the loader's privileges. The upstream fix (commit f217b24f06de55e332cab10231469d5890dbbe00) hardens three things: _iter_targets walks the whole config tree to collect nested _target_ strings; _disallowed_targets enforces an allowlist of espnet2./espnet3. prefixes both on the literal name and on the resolved object's __module__.__qualname__ (to block namespace escapes such as a path through an allowed module that re-exports os), requires the resolved object to be a class (which removes module functions like espnet2.bin.launch.main), and explicitly denylists torch.load, torch.jit.load, torch.serialization.load, builtins.eval/exec/__import__, os.system and several subprocess entry points; finally, backend_inference.py applies the same validation to a backend_class argument that can originate from a bundle's inference.yaml. The patch authors note the remaining surface: arguments passed to an allowed class and OmegaConf resolvers are separate, still-untrusted vectors, so the fix narrows rather than fully sandboxes bundle loading.
Know when Espnet gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Loading an untrusted bundle lets Hydra instantiate arbitrary callables (RCE), so C/I/A:H; no prior auth (PR:N) but the victim must load the bundle, hence UI:R.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability was found in ESPnet up to 202610.post2. This affects the function build_model of the file espnet3/publication/inference_model.py of the component Inference Model Handler. The manipulation of the argument _target_ results in deserialization. It is possible to launch the attack remotely. The exploit has been made public and could be used. The patch is identified as f217b24f06de55e332cab10231469d5890dbbe00. It is best practice to apply a patch to resolve this issue.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
EUVD-2026-104089
GHSA-v5q2-hr9p-q4jv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB