{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "apache-airflow",
"purl": "pkg:pypi/apache-airflow"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.2.2"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1.10.0",
"1.10.1",
"1.10.10",
"1.10.10rc1",
"1.10.10rc2",
"1.10.10rc3",
"1.10.10rc4",
"1.10.10rc5",
"1.10.11",
"1.10.11rc1",
"1.10.11rc2",
"1.10.12",
"1.10.12rc1",
"1.10.12rc2",
"1.10.12rc3",
"1.10.12rc4",
"1.10.13",
"1.10.13rc1",
"1.10.14",
"1.10.14rc1",
"1.10.14rc2",
"1.10.14rc3",
"1.10.14rc4",
"1.10.15",
"1.10.15rc1",
"1.10.1b1",
"1.10.1rc2",
"1.10.2",
"1.10.2b2",
"1.10.2rc1",
"1.10.2rc2",
"1.10.2rc3",
"1.10.3",
"1.10.3b1",
"1.10.3b2",
"1.10.3rc1",
"1.10.3rc2",
"1.10.4",
"1.10.4b2",
"1.10.4rc1",
"1.10.4rc2",
"1.10.4rc3",
"1.10.4rc4",
"1.10.4rc5",
"1.10.5",
"1.10.5rc1",
"1.10.6",
"1.10.6rc1",
"1.10.6rc2",
"1.10.7",
"1.10.7rc1",
"1.10.7rc2",
"1.10.7rc3",
"1.10.8",
"1.10.8rc1",
"1.10.9",
"1.10.9rc1",
"1.8.1",
"1.8.2",
"1.8.2rc1",
"1.9.0",
"2.0.0",
"2.0.0b1",
"2.0.0b2",
"2.0.0b3",
"2.0.0rc1",
"2.0.0rc2",
"2.0.0rc3",
"2.0.1",
"2.0.1rc1",
"2.0.1rc2",
"2.0.2",
"2.0.2rc1",
"2.1.0",
"2.1.0rc1",
"2.1.0rc2",
"2.1.1",
"2.1.1rc1",
"2.1.2",
"2.1.2rc1",
"2.1.3",
"2.1.3rc1",
"2.1.4",
"2.1.4rc1",
"2.1.4rc2",
"2.10.0",
"2.10.0b1",
"2.10.0b2",
"2.10.0rc1",
"2.10.1",
"2.10.1rc1",
"2.10.2",
"2.10.2rc1",
"2.10.3",
"2.10.3rc1",
"2.10.3rc2",
"2.10.4",
"2.10.4rc1",
"2.10.5",
"2.10.5rc1",
"2.11.0",
"2.11.0rc1",
"2.11.1",
"2.11.1rc1",
"2.11.1rc2",
"2.11.2",
"2.11.2rc1",
"2.2.0",
"2.2.0b1",
"2.2.0b2",
"2.2.0rc1",
"2.2.1",
"2.2.1rc1",
"2.2.1rc2",
"2.2.2",
"2.2.2rc1",
"2.2.2rc2",
"2.2.3",
"2.2.3rc1",
"2.2.3rc2",
"2.2.4",
"2.2.4rc1",
"2.2.5",
"2.2.5rc1",
"2.2.5rc2",
"2.2.5rc3",
"2.3.0",
"2.3.0b1",
"2.3.0rc1",
"2.3.0rc2",
"2.3.1",
"2.3.1rc1",
"2.3.2",
"2.3.2rc1",
"2.3.2rc2",
"2.3.3",
"2.3.3rc1",
"2.3.3rc2",
"2.3.3rc3",
"2.3.4",
"2.3.4rc1",
"2.4.0",
"2.4.0b1",
"2.4.0rc1",
"2.4.1",
"2.4.1rc1",
"2.4.2",
"2.4.2rc1",
"2.4.3",
"2.4.3rc1",
"2.5.0",
"2.5.0rc1",
"2.5.0rc2",
"2.5.0rc3",
"2.5.1",
"2.5.1rc1",
"2.5.1rc2",
"2.5.2",
"2.5.2rc1",
"2.5.2rc2",
"2.5.3",
"2.5.3rc1",
"2.5.3rc2",
"2.6.0",
"2.6.0b1",
"2.6.0rc1",
"2.6.0rc2",
"2.6.0rc3",
"2.6.0rc4",
"2.6.0rc5",
"2.6.1",
"2.6.1rc1",
"2.6.1rc2",
"2.6.1rc3",
"2.6.2",
"2.6.2rc1",
"2.6.2rc2",
"2.6.3",
"2.6.3rc1",
"2.7.0",
"2.7.0b1",
"2.7.0rc1",
"2.7.0rc2",
"2.7.1",
"2.7.1rc1",
"2.7.1rc2",
"2.7.2",
"2.7.2rc1",
"2.7.3",
"2.7.3rc1",
"2.8.0",
"2.8.0b1",
"2.8.0rc1",
"2.8.0rc2",
"2.8.0rc3",
"2.8.0rc4",
"2.8.1",
"2.8.1rc1",
"2.8.2",
"2.8.2rc1",
"2.8.2rc2",
"2.8.2rc3",
"2.8.3",
"2.8.3rc1",
"2.8.4",
"2.8.4rc1",
"2.9.0",
"2.9.0b1",
"2.9.0b2",
"2.9.0rc1",
"2.9.0rc2",
"2.9.0rc3",
"2.9.1",
"2.9.1rc1",
"2.9.1rc2",
"2.9.2",
"2.9.2rc1",
"2.9.3",
"2.9.3rc1",
"3.0.0",
"3.0.0b4",
"3.0.0rc1",
"3.0.0rc1.post1",
"3.0.0rc1.post2",
"3.0.0rc1.post3",
"3.0.0rc1.post4",
"3.0.0rc2",
"3.0.0rc3",
"3.0.0rc4",
"3.0.1",
"3.0.1rc1",
"3.0.2",
"3.0.2rc1",
"3.0.2rc2",
"3.0.3",
"3.0.3rc1",
"3.0.3rc2",
"3.0.3rc3",
"3.0.3rc4",
"3.0.3rc5",
"3.0.3rc6",
"3.0.4",
"3.0.4rc1",
"3.0.4rc2",
"3.0.5",
"3.0.5rc1",
"3.0.5rc2",
"3.0.5rc3",
"3.0.6",
"3.0.6rc1",
"3.0.6rc2",
"3.1.0",
"3.1.0b1",
"3.1.0b2",
"3.1.0rc1",
"3.1.0rc2",
"3.1.1",
"3.1.1rc1",
"3.1.1rc2",
"3.1.2",
"3.1.2rc1",
"3.1.2rc2",
"3.1.3",
"3.1.3rc1",
"3.1.4",
"3.1.4rc1",
"3.1.4rc2",
"3.1.5",
"3.1.5rc1",
"3.1.6",
"3.1.6rc1",
"3.1.7",
"3.1.7rc1",
"3.1.7rc2",
"3.1.8",
"3.1.8rc1",
"3.1.8rc2",
"3.2.0",
"3.2.0b1",
"3.2.0b2",
"3.2.0rc1",
"3.2.0rc2",
"3.2.1",
"3.2.1rc1",
"3.2.1rc2",
"3.2.1rc3",
"3.2.2rc1",
"3.2.2rc2",
"3.2.2rc3"
]
}
],
"aliases": [
"CVE-2026-42358",
"GHSA-33g2-gx67-c2h3"
],
"details": "A bug in Apache Airflow\u0027s Variable response masker caused nested-key redaction (triggered by secret-suffixed key names like `password`, `token`, `secret`, `api_key`) to be bypassed when the JSON value\u0027s nesting depth exceeded the shared secrets masker\u0027s recursion limit: the masker returned the original nested item before checking the sensitive key name. An authenticated UI/API user with Variable read permission could harvest plaintext secret values stored under sensitive keys nested deep enough to exceed the masker\u0027s depth cap. Affects deployments that store sensitive values inside deeply-nested JSON Variables. This is a residual gap in the fix for CVE-2026-32690 (which covered shallower nesting via `max_depth=1`); the depth-limit boundary itself was not raised, so the same key-name bypass pattern reappears beyond the recursion cap. Users who already upgraded for CVE-2026-32690 should additionally upgrade to `apache-airflow` 3.2.2 or later to cover the deep-nesting path.",
"id": "PYSEC-2026-2343",
"modified": "2026-07-13T16:03:25.973079Z",
"published": "2026-07-13T15:35:22.914647Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-42358"
},
{
"type": "WEB",
"url": "https://github.com/apache/airflow/pull/65912"
},
{
"type": "PACKAGE",
"url": "https://github.com/apache/airflow"
},
{
"type": "WEB",
"url": "https://lists.apache.org/thread/33635mv3zjb75wn5453c5yf9trs8x2om"
},
{
"type": "PACKAGE",
"url": "https://pypi.org/project/apache-airflow"
},
{
"type": "ADVISORY",
"url": "https://github.com/advisories/GHSA-33g2-gx67-c2h3"
}
],
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
}
],
"summary": "Apache Airflow Vulnerable to Exposure of Sensitive Information to an Unauthorized Actor"
}