All vulnerabilities
CVE-2026-106441GHSA-c3wx-c55w-pxjqPYSEC-2026-4221

hydra-core: Hydra logging configuration permits unsafe callable resolution

hydra-ecosystem hydra-corepipLibraries & packages
CVSS
7.8High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 5% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in1.3.6Also 1.4.0.dev9GitHub
Published6 Oct 2026Updated 15 Oct 2026CVE List

What fixes it

  • 1.3.6hydra-core, pipGitHub
  • 1.4.0.dev9hydra-core, pipGitHub
  • 1.3.6hydra-core, PyPIOSVpip install "hydra-core>=1.3.6"
  • 1.4.0.dev9hydra-core, PyPIOSVpip install "hydra-core>=1.4.0.dev9"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

Summary

Hydra passed its Python logging configuration to logging.config.dictConfig(). Python's logging configurator can resolve and invoke importable classes and factories named by configuration, including handler class values and formatter, filter, handler, queue, and listener () factories.

This logging path was not mediated by Hydra's target policy. In versions that already protected instantiate(), logging resolution bypassed those controls because it did not use instantiate().

An attacker who can control a Hydra logging configuration can use a custom class or factory to execute code with the application's privileges when Hydra configures logging.

Fix

Hydra now applies its target policy to callable resolution and invocation in Hydra-configured Python logging. It authorizes custom factories, handlers, formatters, filters, queues, listeners, aliases, discovery results, and callable results before they can be used.

Hydra 1.3.6 uses the hardened blacklist. The Hydra 1.3 blacklist is a best-effort, defense-in-depth measure. It is not a complete security boundary and does not make untrusted logging configuration safe.

Hydra 1.4.0.dev9 introduces the execution whitelist as the recommended primary boundary, with the blacklist retained as a deprecated compatibility fallback. When an execution whitelist is supplied, Hydra automatically permits targets used by its built-in logging configurations, while custom logging integrations must be explicitly authorized by trusted Python code. If no whitelist is supplied, Hydra warns and preserves legacy fallback behavior.

Remediation

Upgrade to Hydra 1.3.6, or to Hydra 1.4.0.dev9 or later when testing the 1.4 prerelease line.

On Hydra 1.3, do not compose logging configuration from untrusted sources. On Hydra 1.4 and later, constrain custom logging targets with a narrow execution whitelist supplied by trusted Python code. The execution whitelist controls callable selection; it is not general validation of all logging settings.

For Hydra 1.4 execution-whitelist configuration, see:

https://hydra.cc/docs/advanced/execution_whitelist/

Text from GitHub Advisory Database

Affected versions 62

  • hydra-core, pip< 1.3.6GitHub
  • hydra-core, pip>= 1.4.0.dev0, < 1.4.0.dev9GitHub
  • hydraaffected: < 1.3.6CVE List
  • hydraaffected: >= 1.4.0.dev0, < 1.4.0.dev9CVE List
  • hydra-core, PyPIfrom first release, fixed in 1.3.6OSV
  • hydra-core, PyPI0.1.4OSV
  • hydra-core, PyPI0.1.5OSV
  • hydra-core, PyPI0.1.5rc1OSV
  • hydra-core, PyPI0.10.0OSV
  • hydra-core, PyPI0.11.0OSV
  • hydra-core, PyPI0.11.0rc1OSV
  • hydra-core, PyPI0.11.1OSV
  • hydra-core, PyPI0.11.1rc1OSV
  • hydra-core, PyPI0.11.2OSV
  • hydra-core, PyPI0.11.2rc1OSV
  • hydra-core, PyPI0.11.3OSV
  • hydra-core, PyPI0.9.0OSV
  • hydra-core, PyPI1.0.0OSV
  • hydra-core, PyPI1.0.0rc1OSV
  • hydra-core, PyPI1.0.0rc2OSV
  • hydra-core, PyPI1.0.0rc3OSV
  • hydra-core, PyPI1.0.0rc4OSV
  • hydra-core, PyPI1.0.1OSV
  • hydra-core, PyPI1.0.2OSV
  • hydra-core, PyPI1.0.3OSV
  • hydra-core, PyPI1.0.4OSV
  • hydra-core, PyPI1.0.5OSV
  • hydra-core, PyPI1.0.6OSV
  • hydra-core, PyPI1.0.7OSV
  • hydra-core, PyPI1.1.0OSV
  • hydra-core, PyPI1.1.0.dev1OSV
  • hydra-core, PyPI1.1.0.dev2OSV
  • hydra-core, PyPI1.1.0.dev3OSV
  • hydra-core, PyPI1.1.0.dev4OSV
  • hydra-core, PyPI1.1.0.dev5OSV
  • hydra-core, PyPI1.1.0.dev6OSV
  • hydra-core, PyPI1.1.0.dev7OSV
  • hydra-core, PyPI1.1.0rc1OSV
  • hydra-core, PyPI1.1.1OSV
  • hydra-core, PyPI1.1.2OSV
  • hydra-core, PyPI1.1.2.dev0OSV
  • hydra-core, PyPI1.2.0OSV
  • hydra-core, PyPI1.2.0.dev1OSV
  • hydra-core, PyPI1.2.0.dev2OSV
  • hydra-core, PyPI1.2.0.dev3OSV
  • hydra-core, PyPI1.2.0.dev4OSV
  • hydra-core, PyPI1.2.0.dev5OSV
  • hydra-core, PyPI1.3.0OSV
  • hydra-core, PyPI1.3.0.dev0OSV
  • hydra-core, PyPI1.3.0.dev1OSV
  • hydra-core, PyPI1.3.1OSV
  • hydra-core, PyPI1.3.2OSV
  • hydra-core, PyPI1.3.3OSV
  • hydra-core, PyPI1.3.4OSV
  • hydra-core, PyPI1.3.5OSV
  • hydra-core, PyPIfrom 1.4.0.dev0, fixed in 1.4.0.dev9OSV
  • hydra-core, PyPI1.4.0.dev1OSV
  • hydra-core, PyPI1.4.0.dev3OSV
  • hydra-core, PyPI1.4.0.dev4OSV
  • hydra-core, PyPI1.4.0.dev5OSV
  • hydra-core, PyPI1.4.0.dev6OSV
  • hydra-core, PyPI1.4.0.dev8OSV

References 7