CVE-2026-106440
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Hydra is a framework for elegantly configuring complex applications. From 1.2.0 until 1.3.0 and 1.4.0.dev10, the hydra-optuna-sweeper package accepts a configuration-controlled dotted path in hydra.sweeper.custom_search_space, resolves it with hydra.utils.get_method(), and later invokes the returned callable in the Hydra controller process. Because get_method() is a trusted-input lookup helper and does not apply the execution policy used by instantiate(), an attacker who controls Optuna sweep configuration or command-line overrides can select importable Python code for execution with the application's privileges, including bypassing a trusted execution whitelist on affected Hydra 1.4 development releases. This issue is fixed in versions 1.3.0 and 1.4.0.dev10.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.8
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Hydra is a framework for elegantly configuring complex applications. From 1.2.0 until 1.3.0 and 1.4.0.dev10, the hydra-optuna-sweeper package accepts a configuration-controlled dotted path in hydra.sweeper.custom_search_space, resolves it with hydra.utils.get_method(), and later invokes the returned callable in the Hydra controller process. Because get_method() is a trusted-input lookup helper and does not apply the execution policy used by instantiate(), an attacker who controls Optuna sweep configuration or command-line overrides can select importable Python code for execution with the application's privileges, including bypassing a trusted execution whitelist on affected Hydra 1.4 development releases. This issue is fixed in versions 1.3.0 and 1.4.0.dev10.
- Record
CVE-2026-106440- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
EUVDEUVD-2026-93661
7.8
Hydra is a framework for elegantly configuring complex applications. From 1.2.0 until 1.3.0 and 1.4.0.dev10, the hydra-optuna-sweeper package accepts a configuration-controlled dotted path in hydra.sweeper.custom_search_space, resolves it with hydra.utils.get_method(), and later invokes the returned callable in the Hydra controller process. Because get_method() is a trusted-input lookup helper and does not apply the execution policy used by instantiate(), an attacker who controls Optuna sweep configuration or command-line overrides can select importable Python code for execution with the application's privileges, including bypassing a trusted execution whitelist on affected Hydra 1.4 development releases. This issue is fixed in versions 1.3.0 and 1.4.0.dev10.
- Record
EUVD-2026-93661- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-5jjj-9xc3-rm56
7.8
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Summary
hydra-optuna-sweeper accepted a configuration-controlled dotted path in
hydra.sweeper.custom_search_space, resolved it with the lower-level
hydra.utils.get_method() API, and later invoked the returned callable.
Hydra's object-lookup helpers intentionally trust their input and do not apply
the execution policy used by instantiate() and logging configuration. As a
result, untrusted Optuna multirun configuration could select installed Python
code for execution in the Hydra controller process.
Impact
Exploitation requires control of an application's Optuna sweep configuration or command-line overrides and an importable callable in the application's environment. Selected code runs with the privileges of the application.
On affected Hydra 1.4 development releases, this path bypasses an execution whitelist provided by trusted application code. Hydra 1.3 has no execution-whitelist security boundary; there, the same change restores the legacy blocklist as defense in depth.
Fix
The Optuna sweeper now resolves the configured callback through
hydra.utils.instantiate() as a partial callable. On Hydra 1.4, the active
execution whitelist therefore authorizes the callback before use. On Hydra
1.3, the legacy blocklist is applied as defense in depth.
The public get_object(), get_method(), get_static_method(), and
get_class() helpers remain lower-level trusted-input APIs. Their documentation
now warns against passing values derived from untrusted configuration and
directs config-driven construction to instantiate().
Affected versions
- Package:
hydra-optuna-sweeper - Stable affected range:
>= 1.2.0, < 1.3.0 - Stable fixed version:
1.3.0 - Development affected range:
>= 1.4.0.dev4, < 1.4.0.dev10 - Development fixed version:
1.4.0.dev10
The feature was introduced in 1.2.0 and is absent from the 1.1 release line.
The 1.4 development line was affected from 1.4.0.dev4 through 1.4.0.dev9.
Workaround
Treat Optuna sweep configuration and command-line overrides as trusted. Do not
set custom_search_space from externally controlled input or allow untrusted
users to place modules on the application import path.
Reported by zx (GitHub: @manus-pi).
- Record
GHSA-5jjj-9xc3-rm56- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
NVD
7.8
Hydra is a framework for elegantly configuring complex applications. From 1.2.0 until 1.3.0 and 1.4.0.dev10, the hydra-optuna-sweeper package accepts a configuration-controlled dotted path in hydra.sweeper.custom_search_space, resolves it with hydra.utils.get_method(), and later invokes the returned callable in the Hydra controller process. Because get_method() is a trusted-input lookup helper and does not apply the execution policy used by instantiate(), an attacker who controls Optuna sweep configuration or command-line overrides can select importable Python code for execution with the application's privileges, including bypassing a trusted execution whitelist on affected Hydra 1.4 development releases. This issue is fixed in versions 1.3.0 and 1.4.0.dev10.
- Record
CVE-2026-106440- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
OSV
7.8
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Hydra is a framework for elegantly configuring complex applications. From 1.2.0 until 1.3.0 and 1.4.0.dev10, the hydra-optuna-sweeper package accepts a configuration-controlled dotted path in hydra.sweeper.custom_search_space, resolves it with hydra.utils.get_method(), and later invokes the returned callable in the Hydra controller process. Because get_method() is a trusted-input lookup helper and does not apply the execution policy used by instantiate(), an attacker who controls Optuna sweep configuration or command-line overrides can select importable Python code for execution with the application's privileges, including bypassing a trusted execution whitelist on affected Hydra 1.4 development releases. This issue is fixed in versions 1.3.0 and 1.4.0.dev10.
- Record
CVE-2026-106440- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
OSVGHSA-5jjj-9xc3-rm56
7.8
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Summary
hydra-optuna-sweeper accepted a configuration-controlled dotted path in
hydra.sweeper.custom_search_space, resolved it with the lower-level
hydra.utils.get_method() API, and later invoked the returned callable.
Hydra's object-lookup helpers intentionally trust their input and do not apply
the execution policy used by instantiate() and logging configuration. As a
result, untrusted Optuna multirun configuration could select installed Python
code for execution in the Hydra controller process.
Impact
Exploitation requires control of an application's Optuna sweep configuration or command-line overrides and an importable callable in the application's environment. Selected code runs with the privileges of the application.
On affected Hydra 1.4 development releases, this path bypasses an execution whitelist provided by trusted application code. Hydra 1.3 has no execution-whitelist security boundary; there, the same change restores the legacy blocklist as defense in depth.
Fix
The Optuna sweeper now resolves the configured callback through
hydra.utils.instantiate() as a partial callable. On Hydra 1.4, the active
execution whitelist therefore authorizes the callback before use. On Hydra
1.3, the legacy blocklist is applied as defense in depth.
The public get_object(), get_method(), get_static_method(), and
get_class() helpers remain lower-level trusted-input APIs. Their documentation
now warns against passing values derived from untrusted configuration and
directs config-driven construction to instantiate().
Affected versions
- Package:
hydra-optuna-sweeper - Stable affected range:
>= 1.2.0, < 1.3.0 - Stable fixed version:
1.3.0 - Development affected range:
>= 1.4.0.dev4, < 1.4.0.dev10 - Development fixed version:
1.4.0.dev10
The feature was introduced in 1.2.0 and is absent from the 1.1 release line.
The 1.4 development line was affected from 1.4.0.dev4 through 1.4.0.dev9.
Workaround
Treat Optuna sweep configuration and command-line overrides as trusted. Do not
set custom_search_space from externally controlled input or allow untrusted
users to place modules on the application import path.
Reported by zx (GitHub: @manus-pi).
- Record
GHSA-5jjj-9xc3-rm56- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
OSVPYSEC-2026-4224
7.8
Hydra: Optuna custom_search_space can resolve and execute untrusted callables via get_method
Summary
hydra-optuna-sweeper accepted a configuration-controlled dotted path in
hydra.sweeper.custom_search_space, resolved it with the lower-level
hydra.utils.get_method() API, and later invoked the returned callable.
Hydra's object-lookup helpers intentionally trust their input and do not apply
the execution policy used by instantiate() and logging configuration. As a
result, untrusted Optuna multirun configuration could select installed Python
code for execution in the Hydra controller process.
Impact
Exploitation requires control of an application's Optuna sweep configuration or command-line overrides and an importable callable in the application's environment. Selected code runs with the privileges of the application.
On affected Hydra 1.4 development releases, this path bypasses an execution whitelist provided by trusted application code. Hydra 1.3 has no execution-whitelist security boundary; there, the same change restores the legacy blocklist as defense in depth.
Fix
The Optuna sweeper now resolves the configured callback through
hydra.utils.instantiate() as a partial callable. On Hydra 1.4, the active
execution whitelist therefore authorizes the callback before use. On Hydra
1.3, the legacy blocklist is applied as defense in depth.
The public get_object(), get_method(), get_static_method(), and
get_class() helpers remain lower-level trusted-input APIs. Their documentation
now warns against passing values derived from untrusted configuration and
directs config-driven construction to instantiate().
Affected versions
- Package:
hydra-optuna-sweeper - Stable affected range:
>= 1.2.0, < 1.3.0 - Stable fixed version:
1.3.0 - Development affected range:
>= 1.4.0.dev4, < 1.4.0.dev10 - Development fixed version:
1.4.0.dev10
The feature was introduced in 1.2.0 and is absent from the 1.1 release line.
The 1.4 development line was affected from 1.4.0.dev4 through 1.4.0.dev9.
Workaround
Treat Optuna sweep configuration and command-line overrides as trusted. Do not
set custom_search_space from externally controlled input or allow untrusted
users to place modules on the application import path.
Reported by zx (GitHub: @manus-pi).
- Record
PYSEC-2026-4224- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
hydra-optuna-sweeperPyPI |
1.2.0 up to 1.3.0 | 1.3.0 |
hydra-optuna-sweeperPyPI |
1.4.0.dev4 up to 1.4.0.dev10 | 1.4.0.dev10 |
hydra-optuna-sweeperPyPI |
1.2.0 up to 1.3.0, plus listed versions 1.3.0.dev0 |
1.3.0 |
hydra-optuna-sweeperPyPI |
1.4.0.dev4 up to 1.4.0.dev10, plus listed versions 1.4.0.dev51.4.0.dev61.4.0.dev71.4.0.dev81.4.0.dev9 |
1.4.0.dev10 |
hydra-optuna-sweeperPyPI |
1.2.0 up to 1.3.0, 1.4.0.dev4 up to 1.4.0.dev10, plus listed versions 1.3.0.dev01.4.0.dev51.4.0.dev61.4.0.dev71.4.0.dev81.4.0.dev9 |
1.3.01.4.0.dev10 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-106440 is a high vulnerability (CVSS 7.8) in Hydra-ecosystem Hydra, published October 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.27%, the 19th percentile. Fixed in hydra-optuna-sweeper 1.3.0.
References
github.com/hydra-ecosystem/hydra/security/advisories/GHSA-5jjj-9xc3-rm56
github.com/hydra-ecosystem/hydra/commit/0dd18084589a3d3e577d1f1a8a48fb485c94a5e6
github.com/hydra-ecosystem/hydra/commit/4720dfca2bde27fa140ec287a05709668fbdf168
github.com/hydra-ecosystem/hydra/releases/tag/v1.3.7
nvd.nist.gov/vuln/detail/CVE-2026-106440
github.com/advisories/GHSA-5jjj-9xc3-rm56
github.com/CVEProject/cvelistV5/tree/main/cves/2026/106xxx/CVE-2026-106440.json
github.com/hydra-ecosystem/hydra
pypi.org/project/hydra-optuna-sweeper