{"id":"GHSA-9cqf-439c-j96r","summary":"Kedro has Arbitrary Code Execution via Malicious Logging Configuration","details":"### Impact\n\nThis is a **critical remote code execution (RCE)** vulnerability caused by unsafe use of `logging.config.dictConfig()` with user-controlled input.\n\nKedro 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.\n\n---\n\n### Patches\n\nThe vulnerability is fixed by introducing validation that rejects the unsafe `()` factory key in logging configurations before passing them to `dictConfig()`.\n\n#### Fixed in\n- Kedro 1.3.0\n\nUsers should upgrade to this version as soon as possible.\n\n---\n\n### Workarounds\n\nIf upgrading is not immediately possible:\n\n- Do not allow untrusted input to control the `KEDRO_LOGGING_CONFIG` environment variable  \n- Restrict write access to logging configuration files  \n- Avoid using externally supplied or dynamically generated logging configs  \n- Manually validate logging YAML to ensure it does not contain the `()` key  \n\nThese mitigations reduce risk but do not fully eliminate it.\n\n---\n\n### References\n\n- Python logging configuration documentation: https://docs.python.org/3/library/logging.config.html#logging-config-dictschema  \n- CWE-94: Code Injection — https://cwe.mitre.org/data/definitions/94.html","aliases":["CVE-2026-35171","PYSEC-2026-72"],"modified":"2026-06-06T00:30:08.713758212Z","published":"2026-04-03T03:48:48Z","database_specific":{"github_reviewed_at":"2026-04-03T03:48:48Z","nvd_published_at":"2026-04-06T18:16:43Z","cwe_ids":["CWE-502","CWE-94"],"severity":"CRITICAL","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/kedro-org/kedro/security/advisories/GHSA-9cqf-439c-j96r"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-35171"},{"type":"PACKAGE","url":"https://github.com/kedro-org/kedro"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/kedro/PYSEC-2026-72.yaml"}],"affected":[{"package":{"name":"kedro","ecosystem":"PyPI","purl":"pkg:pypi/kedro"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.3.0"}]}],"versions":["0.14.0","0.14.1","0.14.2","0.14.3","0.15.0","0.15.1","0.15.2","0.15.3","0.15.4","0.15.5","0.15.6","0.15.7","0.15.8","0.15.9","0.16.0","0.16.1","0.16.2","0.16.3","0.16.4","0.16.5","0.16.6","0.17.0","0.17.1","0.17.2","0.17.3","0.17.4","0.17.5","0.17.6","0.17.7","0.18.0","0.18.1","0.18.10","0.18.11","0.18.12","0.18.13","0.18.14","0.18.2","0.18.3","0.18.4","0.18.5","0.18.6","0.18.7","0.18.8","0.18.9","0.19.0","0.19.1","0.19.10","0.19.11","0.19.12","0.19.13","0.19.14","0.19.15","0.19.2","0.19.3","0.19.4","0.19.5","0.19.6","0.19.7","0.19.8","0.19.9","1.0.0","1.0.0rc1","1.0.0rc2","1.0.0rc3","1.1.0","1.1.1","1.2.0"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-9cqf-439c-j96r/GHSA-9cqf-439c-j96r.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}