CVE-2026-35171
Arbitrary Code Execution via Malicious Logging Configuration in Kedro
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.8
Arbitrary Code Execution via Malicious Logging Configuration in Kedro
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
- Record
CVE-2026-35171- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-94, CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2026-19418
9.8
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
- Record
EUVD-2026-19418- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-9cqf-439c-j96r
9.8
Kedro has Arbitrary Code Execution via Malicious Logging Configuration
Impact
This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input.
Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup.
Patches
The vulnerability is fixed by introducing validation that rejects the unsafe () factory key in logging configurations before passing them to dictConfig().
Fixed in
- Kedro 1.3.0
Users should upgrade to this version as soon as possible.
Workarounds
If upgrading is not immediately possible:
- Do not allow untrusted input to control the
KEDRO_LOGGING_CONFIGenvironment variable - Restrict write access to logging configuration files
- Avoid using externally supplied or dynamically generated logging configs
- Manually validate logging YAML to ensure it does not contain the
()key
These mitigations reduce risk but do not fully eliminate it.
References
- Python logging configuration documentation: https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
- CWE-94: Code Injection — https://cwe.mitre.org/data/definitions/94.html
- Record
GHSA-9cqf-439c-j96r- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-94, CWE-502
- Updated
- 2026-11-02
NVD
9.8
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
- Record
CVE-2026-35171- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-94, CWE-502
- Updated
- 2026-11-02
OSV
9.8
Arbitrary Code Execution via Malicious Logging Configuration in Kedro
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
- Record
CVE-2026-35171- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502, CWE-94
- Updated
- 2026-11-02
OSVGHSA-9cqf-439c-j96r
9.8
Kedro has Arbitrary Code Execution via Malicious Logging Configuration
Impact
This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input.
Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup.
Patches
The vulnerability is fixed by introducing validation that rejects the unsafe () factory key in logging configurations before passing them to dictConfig().
Fixed in
- Kedro 1.3.0
Users should upgrade to this version as soon as possible.
Workarounds
If upgrading is not immediately possible:
- Do not allow untrusted input to control the
KEDRO_LOGGING_CONFIGenvironment variable - Restrict write access to logging configuration files
- Avoid using externally supplied or dynamically generated logging configs
- Manually validate logging YAML to ensure it does not contain the
()key
These mitigations reduce risk but do not fully eliminate it.
References
- Python logging configuration documentation: https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
- CWE-94: Code Injection — https://cwe.mitre.org/data/definitions/94.html
- Record
GHSA-9cqf-439c-j96r- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502, CWE-94
- Updated
- 2026-11-02
OSVPYSEC-2026-72
9.8
Kedro is a toolbox for production-ready data science. Prior to 1.3.0, Kedro allows the logging configuration file path to be set via the KEDRO_LOGGING_CONFIG environment variable and loads it without validation. The logging configuration schema supports the special () key, which enables arbitrary callable instantiation. An attacker can exploit this to execute arbitrary system commands during application startup. This is a critical remote code execution (RCE) vulnerability caused by unsafe use of logging.config.dictConfig() with user-controlled input. This vulnerability is fixed in 1.3.0.
- Record
PYSEC-2026-72- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
kedroPyPI |
before 1.3.0 | 1.3.0 |
kedroPyPI |
before 1.3.0, plus listed versions 0.14.00.14.10.14.20.14.30.15.0 Show 45 moreShow less0.15.10.15.20.15.30.15.40.15.50.15.60.15.70.15.80.15.90.16.00.16.10.16.20.16.30.16.40.16.50.16.60.17.00.17.10.17.20.17.30.17.40.17.50.17.60.17.70.18.00.18.10.18.100.18.110.18.120.18.130.18.140.18.20.18.30.18.40.18.50.18.60.18.70.18.80.18.90.19.00.19.10.19.100.19.110.19.120.19.13 |
1.3.0 |
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-35171 is a critical vulnerability (CVSS 9.8) in Kedro-org Kedro, published April 3, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.73%, the 54th percentile. Fixed in kedro 1.3.0.
References
github.com/kedro-org/kedro/security/advisories/GHSA-9cqf-439c-j96r
nvd.nist.gov/vuln/detail/CVE-2026-35171
github.com/pypa/advisory-database/tree/main/vulns/kedro/PYSEC-2026-72.yaml
github.com/advisories/GHSA-9cqf-439c-j96r
github.com/CVEProject/cvelistV5/tree/main/cves/2026/35xxx/CVE-2026-35171.json
github.com/kedro-org/kedro
Left out here: 17 versions. The JSON record has them.