CVE-2026-75156
CRITICAL(9.1)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- CVSS 9.1 — Kritisch
Erwähnungen (letzte 60 Tage)
EPSS-Score
0.2%
Exploit-Wahrscheinlichkeit (30 Tage)
CVSS Score
9.1
Technische Schwere
Beschreibung
Apache Airflow FAB provider versions 3.7.3 through 3.8.0 do not validate the issuer or audience of Azure AD `id_token`s during OAuth login. Deployments are affected only when the FAB auth manager is configured with Azure AD as an OAuth provider. Because the signing keys are fetched from Microsoft's **multi-tenant** JWKS endpoint, an `id_token` minted in *any* Azure tenant — including one the attacker creates — passes signature verification, and the username and role assignments are then read from that attacker-controlled token. Anyone able to register an Azure tenant can therefore authenticate to the Airflow UI with no prior access to the deployment. The fix for **CVE-2026-59243** was incomplete, and this advisory closes the remaining gap: that fix made the provider verify the `id_token` signature, but did not add issuer or audience checks. Operators who already applied the CVE-2026-59243 fix are **still affected and must upgrade again** — 3.7.3 is the release that shipped that fix, so every version containing it falls inside this affected range. Upgrade to apache-airflow-providers-fab `3.8.1` or later.
Erkennung & Indikatoren
Ausnutzung
In den geprüften Quellen nicht genannt
Threat-Hunting-Queries
Detection focuses on unusual or unauthorized Azure AD OAuth login attempts to Apache Airflow, specifically looking for logins from unexpected tenants or with unusual role assignments. This requires logging of OAuth authentication events within Airflow and potentially correlating with Azure AD sign-in logs.
Sentinel/Defender KQL
// This query requires detailed logging of Airflow authentication events, specifically OAuth logins.
// Look for successful logins where the 'issuer' or 'tenant ID' in the token does not match expected values.
// This is a conceptual query as specific log sources and fields for Airflow OAuth are not provided.
AirflowLogs
| where LogType == "OAuthLogin"
| where OAuthProvider == "AzureAD"
| extend Issuer = extractjson("$.id_token.iss", TokenClaims, typeof(string))
| extend TenantId = extractjson("$.id_token.tid", TokenClaims, typeof(string))
| where Issuer !contains "<YOUR_EXPECTED_AZURE_TENANT_ID>" // Replace with your expected tenant ID or domain
or TenantId !contains "<YOUR_EXPECTED_AZURE_TENANT_ID>"
| project TimeGenerated, UserName, OAuthProvider, Issuer, TenantId, ClientIP, UserAgent, TokenClaims
| sort by TimeGenerated descSplunk SPL
# This query requires detailed logging of Airflow authentication events, specifically OAuth logins.
# Look for successful logins where the 'issuer' or 'tenant ID' in the token does not match expected values.
# This is a conceptual query as specific log sources and fields for Airflow OAuth are not provided.
source="airflow_logs" LogType="OAuthLogin" OAuthProvider="AzureAD"
| spath input=TokenClaims path=id_token.iss output=Issuer
| spath input=TokenClaims path=id_token.tid output=TenantId
| where NOT (match(Issuer, ".*<YOUR_EXPECTED_AZURE_TENANT_ID>.*") OR match(TenantId, ".*<YOUR_EXPECTED_AZURE_TENANT_ID>.*"))
| table _time, UserName, OAuthProvider, Issuer, TenantId, ClientIP, UserAgent, TokenClaimsSigma
title: Apache Airflow Azure AD OAuth Issuer/Audience Bypass
id: 00000000-0000-0000-0000-000000000001
status: experimental
description: Detects potential exploitation of CVE-2026-75156 in Apache Airflow where Azure AD id_tokens are not properly validated.
author: SecBoard
date: 2026/08/18
references:
- https://github.com/apache/airflow/pull/71735
logsource:
product: airflow
service: auth
detection:
selection:
LogType: 'OAuthLogin'
OAuthProvider: 'AzureAD'
# This assumes 'Issuer' and 'TenantId' fields are extracted from the token claims in logs.
# Adjust field names based on actual log schema.
# Replace '<YOUR_EXPECTED_AZURE_TENANT_ID>' with your organization's Azure AD tenant ID or domain.
# This is a conceptual rule and requires specific log field mapping.
Issuer|contains|all:
- 'sts.windows.net/'
- 'login.microsoftonline.com/'
Issuer|not contains: '<YOUR_EXPECTED_AZURE_TENANT_ID>'
TenantId|not contains: '<YOUR_EXPECTED_AZURE_TENANT_ID>'
condition: selection
level: highElastic ES|QL
// This query requires detailed logging of Airflow authentication events, specifically OAuth logins.
// Look for successful logins where the 'issuer' or 'tenant ID' in the token does not match expected values.
// This is a conceptual query as specific log sources and fields for Airflow OAuth are not provided.
FROM airflow_logs
| WHERE LogType == "OAuthLogin" AND OAuthProvider == "AzureAD"
| WITH
extract_json(TokenClaims, '$.id_token.iss') AS Issuer,
extract_json(TokenClaims, '$.id_token.tid') AS TenantId
| WHERE NOT (Issuer LIKE '%<YOUR_EXPECTED_AZURE_TENANT_ID>%' OR TenantId LIKE '%<YOUR_EXPECTED_AZURE_TENANT_ID>%')
| SELECT @timestamp, UserName, OAuthProvider, Issuer, TenantId, ClientIP, UserAgent, TokenClaims
| ORDER BY @timestamp DESCSecBoard-generated · behavioral · requires customization — Von SecBoard erzeugt und nicht in einer Zielumgebung validiert. Vor dem Einsatz an die eigene Protokollierung anpassen.
Indikatoren
Domains (1)
- login.microsoftonline.com
Übernommen wurden nur Indikatoren, die wörtlich in einer Hersteller- oder Research-Quelle standen.