{"id":"CVE-2026-76185","kind":"vulnerability","aliases":["CVE-2026-76185"],"related":[],"title":"Apache Airflow: secret cache key collisions let one team read another's secrets","description":"Apache Airflow's Task SDK secret cache built its keys from the team name and secret id with unescaped `_` delimiters, so different (team, secret id) pairs could collide. In multi-team deployments a Dag author could read another team's Variable or Connection value by crafting a colliding secret id. Only deployments with both `core.multi_team = True` and `secrets.use_cache = True` are affected.\n\nUsers are advised to upgrade to apache-airflow 3.4.0 or later. Deployments that cannot upgrade can set `secrets.use_cache = False`.","summary":"Apache Airflow's Task SDK builds secret cache keys by joining team name and secret id with unescaped underscores, so different pairs can produce the same key. A Dag author in a multi-team deployment can craft a colliding secret id and read another team's Variable or Connection value.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["apache-airflow","infrastructure","multi-team","secrets","self-hosted"],"not_affected_if":["default-config","secrets-cache-disabled","single-team-deployment"],"how_to_check":"- Check whether `core.multi_team` is set to `True` in the Airflow configuration.\n- Check whether `secrets.use_cache` is set to `True` in the Airflow configuration.\n- Check the installed version with `airflow version` and compare it to `3.4.0`.","fix":"- apache-airflow: upgrade to `3.4.0` or later.\n- Workaround for deployments that cannot upgrade: set `secrets.use_cache = False`.","status":"open","published_at":"2026-11-09T10:17:11+00:00","first_seen_at":"2026-11-09T10:25:49+00:00","triaged_at":"2026-11-09T10:26:40+00:00","updated_at":"2026-11-09T10:26:40+00:00","category":"infrastructure","confidence":0.7,"triage":{"at":"2026-11-09T10:26:40Z","model":"claude-haiku-5-5","output":{"fix":"- apache-airflow: upgrade to `3.4.0` or later.\n- Workaround for deployments that cannot upgrade: set `secrets.use_cache = False`.","reach":"network","title":"Apache Airflow: secret cache key collisions let one team read another's secrets","impact":"high","summary":"Apache Airflow's Task SDK builds secret cache keys by joining team name and secret id with unescaped underscores, so different pairs can produce the same key. A Dag author in a multi-team deployment can craft a colliding secret id and read another team's Variable or Connection value.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["apache-airflow","self-hosted","multi-team","secrets"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"cross-team reads of Variable and Connection secret values","analyst_note":"","how_to_check":"- Check whether `core.multi_team` is set to `True` in the Airflow configuration.\n- Check whether `secrets.use_cache` is set to `True` in the Airflow configuration.\n- Check the installed version with `airflow version` and compare it to `3.4.0`.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["single-team-deployment","secrets-cache-disabled","default-config"],"who_is_affected":"Only deployments that enable both `core.multi_team = True` and `secrets.use_cache = True` are affected, and the risk comes from Dag authors in one team reading another team's secrets. Single-team deployments, or those with the secret cache disabled, can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000759,"input_tokens":4631,"output_tokens":592,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-76185':16A,19A '3.4.0':155C 'advis':148C 'affect':145C 'airflow':2A,22B,32B,83C,154C 'anoth':11A,75B,120C 'apach':1A,21B,31B,82C,153C 'apache-airflow':20B,152C 'author':60B,117C 'build':36B 'built':89C 'cach':4A,38B,88C,142C,165C 'cannot':160C 'collid':70B,109C,130C 'collis':6A 'connect':80B,125C 'core.multi':137C 'could':108C,118C 'craft':68B,128C 'cve':14A,17A 'dag':59B,116C 'delimit':101C 'deploy':66B,114C,134C,158C 'differ':51B,103C 'fals':166C 'host':30B 'id':46B,72B,98C,106C,132C 'infrastructur':23B 'join':41B 'key':5A,39B,57B,91C 'later':157C 'let':7A 'multi':25B,64B,112C 'multi-team':24B,63B,111C 'name':43B,95C 'one':8A 'pair':52B,107C 'produc':54B 'read':10A,74B,119C 'sdk':35B,86C 'secret':3A,13A,27B,37B,45B,71B,87C,97C,105C,131C 'secrets.use':141C,164C 'self':29B 'self-host':28B 'set':163C 'task':34B,85C 'team':9A,26B,42B,65B,76B,94C,104C,113C,121C,138C 'true':139C,143C 'underscor':49B 'unescap':48B,100C 'upgrad':150C,161C 'user':146C 'valu':81B,126C 'variabl':78B,123C","nicknames":[],"mitigations":[],"who_affected":"Only deployments that enable both `core.multi_team = True` and `secrets.use_cache = True` are affected, and the risk comes from Dag authors in one team reading another team's secrets. Single-team deployments, or those with the secret cache disabled, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["apacheairflow","high","infrastructure","multiteam","secrets","selfhosted"],"campaign_type":null,"search_a":"'-2026':15A,18A '-76185':16A,19A 'airflow':2A 'anoth':11A 'apach':1A 'cach':4A 'collis':6A 'cve':14A,17A 'key':5A 'let':7A 'one':8A 'read':10A 'secret':3A,13A 'team':9A","search_b":"'airflow':22B,32B 'anoth':75B 'apach':21B,31B 'apache-airflow':20B 'author':60B 'build':36B 'cach':38B 'collid':70B 'connect':80B 'craft':68B 'dag':59B 'deploy':66B 'differ':51B 'host':30B 'id':46B,72B 'infrastructur':23B 'join':41B 'key':39B,57B 'multi':25B,64B 'multi-team':24B,63B 'name':43B 'pair':52B 'produc':54B 'read':74B 'sdk':35B 'secret':27B,37B,45B,71B 'self':29B 'self-host':28B 'task':34B 'team':26B,42B,65B,76B 'underscor':49B 'unescap':48B 'valu':81B 'variabl':78B","search_c":"'3.4.0':155C 'advis':148C 'affect':145C 'airflow':83C,154C 'anoth':120C 'apach':82C,153C 'apache-airflow':152C 'author':117C 'built':89C 'cach':88C,142C,165C 'cannot':160C 'collid':109C,130C 'connect':125C 'core.multi':137C 'could':108C,118C 'craft':128C 'dag':116C 'delimit':101C 'deploy':114C,134C,158C 'differ':103C 'fals':166C 'id':98C,106C,132C 'key':91C 'later':157C 'multi':112C 'multi-team':111C 'name':95C 'pair':107C 'read':119C 'sdk':86C 'secret':87C,97C,105C,131C 'secrets.use':141C,164C 'set':163C 'task':85C 'team':94C,104C,113C,121C,138C 'true':139C,143C 'unescap':100C 'upgrad':150C,161C 'user':146C 'valu':126C 'variabl':123C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T10:17:11+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-76185","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-76185","severity":null,"published_at":"2026-11-09T10:17:11+00:00","modified_at":"2026-11-09T10:17:11+00:00","first_seen_at":"2026-11-09T10:25:49+00:00","fetched_at":"2026-11-09T10:25:49+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}