VYPR
Unrated severityNVD Advisory· Published Jun 1, 2026· Updated Jun 1, 2026

CVE-2026-45192

CVE-2026-45192

Description

Apache Airflow REST API exposes sensitive connection extras fields not in redaction allowlist; upgrade to 3.2.2.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Apache Airflow REST API exposes sensitive connection extras fields not in redaction allowlist; upgrade to 3.2.2.

Vulnerability

The GET /api/v2/connections/{connection_id} endpoint in Apache Airflow returns the extra JSON blob of a Connection without masking fields that are not in the DEFAULT_SENSITIVE_FIELDS redaction allowlist. Affected versions prior to apache-airflow 3.2.2 allow authenticated users with Connection-read permission to retrieve sensitive credentials such as webhook_url, bearer, dsn, auth_header, and service_key in plaintext [1].

Exploitation

An attacker requires a valid Airflow user or API token with Connection-read permission. By sending a GET request to /api/v2/connections/{connection_id}, the response includes the full extra blob, and any credential field name not explicitly in DEFAULT_SENSITIVE_FIELDS is returned unmasked [1]. No additional privileges or user interaction is needed beyond the authenticated connection-read access.

Impact

Successful exploitation results in disclosure of sensitive credentials stored in Connection extras, including webhook URLs, bearer tokens, database DSNs, custom auth headers, and service keys. This compromises the confidentiality of credential material that may be reused across services [1].

Mitigation

Upgrade to apache-airflow 3.2.2 or later, which extends DEFAULT_SENSITIVE_FIELDS to include the five common field names [1]. As a defense-in-depth measure, store sensitive credential values in a secret-backend rather than inlined into Connection extra fields.

AI Insight generated on Jun 1, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

2
32ac8ad51329

Extend DEFAULT_SENSITIVE_FIELDS with common credential field names (#66673)

https://github.com/apache/airflowJarek PotiukMay 15, 2026via body-scan
2 files changed · +23 1
  • shared/secrets_masker/src/airflow_shared/secrets_masker/secrets_masker.py+6 1 modified
    @@ -54,8 +54,11 @@ def to_dict(self) -> dict[str, Any]: ...
             "access_token",
             "api_key",
             "apikey",
    +        "auth_header",
             "authorization",
    +        "bearer",
             "connection_string",
    +        "dsn",
             "passphrase",
             "passwd",
             "password",
    @@ -64,9 +67,11 @@ def to_dict(self) -> dict[str, Any]: ...
             "proxy_password",
             "proxies",
             "secret",
    +        "service_account",
    +        "service_key",
             "token",
             "keyfile_dict",
    -        "service_account",
    +        "webhook_url",
         }
     )
     """Names of fields (Connection extra, Variable key name etc.) that are deemed sensitive"""
    
  • shared/secrets_masker/tests/secrets_masker/test_secrets_masker.py+17 0 modified
    @@ -817,6 +817,23 @@ class TestShouldHideValueForKey:
                 ("GOOGLE_API_KEY", True),
                 ("GOOGLE_APIKEY", True),
                 (1, False),
    +            # webhook_url / bearer / dsn / auth_header / service_key in DEFAULT_SENSITIVE_FIELDS.
    +            # Matching is case-insensitive substring on the lowercased key, so
    +            # snake_case variants (and underscore-bearing prefixes/suffixes) are
    +            # covered; PascalCase / camelCase variants without underscores are not.
    +            ("webhook_url", True),
    +            ("WEBHOOK_URL", True),
    +            ("slack_webhook_url", True),
    +            ("bearer", True),
    +            ("Bearer", True),
    +            ("auth_bearer", True),
    +            ("dsn", True),
    +            ("DSN", True),
    +            ("auth_header", True),
    +            ("AUTH_HEADER", True),
    +            ("custom_auth_header", True),
    +            ("service_key", True),
    +            ("my_service_key", True),
             ],
         )
         def test_hiding_defaults(self, key, expected_result):
    
cde4885818be

Updating release notes for 3.2.2rc3

https://github.com/apache/airflowvatsrahul1001May 26, 2026Fixed in 3.2.2via release-tag
2 files changed · +5 4
  • RELEASE_NOTES.rst+3 2 modified
    @@ -24,7 +24,7 @@
     
     .. towncrier release notes start
     
    -Airflow 3.2.2 (2026-05-27)
    +Airflow 3.2.2 (2026-05-29)
     --------------------------
     
     Significant Changes
    @@ -81,7 +81,8 @@ Significant Changes
     
     Bug Fixes
     ^^^^^^^^^
    -
    +- Fix ``Callback.handle_event`` triggerer crash when OpenTelemetry metrics receive dict typed tag values (#67527) (#67529)
    +- UI: Rewrite ``modulepreload hrefs`` to the api-server static path (#67548) (#67556)
     - Correctly pre-allocate ``external_executor_id`` with multiple executors on PostgreSQL (#67388) (#67458)
     - Return raw import-error stacktrace when a Dag file has no registered Dag (#67465) (#67478)
     - UI: Fix Expand/Collapse All on XComs and Audit Log JSON cells (#67316) (#67361)
    
  • reproducible_build.yaml+2 2 modified
    @@ -1,2 +1,2 @@
    -release-notes-hash: 6407b48d1054fe3ce68c09bf4435d91d
    -source-date-epoch: 1779745327
    +release-notes-hash: 504288db9a9dc13a0db859232fab98d0
    +source-date-epoch: 1779811737
    

Vulnerability mechanics

No source-code context for this CVE — mechanics is only generated when we can read the actual fix diff. Without that, the four sections (root cause, attack vector, affected code, fix) would be speculation rather than analysis.

References

3

News mentions

0

No linked articles in our index yet.