---
id: CVE-2026-40861
aliases:
  - GHSA-89cj-xrpx-j79m
  - BIT-airflow-2026-40861
  - PYSEC-2026-181
title: Apache Airflow has a Link Following issue
summary: Apache Airflow has a Link Following issue
severity: medium
cvss: 6.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N'
vendor: apache-airflow
product: apache-airflow
ecosystem: pip
affected:
  - apache-airflow < 3.2.2
patched:
  - apache-airflow 3.2.2
published: '2026-06-01'
updated: '2026-07-09'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/GHSA-89cj-xrpx-j79m'
references:
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-40861'
  - url: 'https://github.com/apache/airflow/pull/65325'
  - url: 'https://github.com/apache/airflow'
  - url: >-
      https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow/PYSEC-2026-181.yaml
  - url: 'https://lists.apache.org/thread/823334db2559xjlwt59gpzjz47thnscl'
  - url: 'http://www.openwall.com/lists/oss-security/2026/05/31/1'
tags:
  - osv
  - pip
epss: 0.00758
epssPercentile: 0.53221
ingestedAt: '2026-07-10T13:49:10.618Z'
---

## Overview

A Dag author could either (a) create a symlink under their task's log directory pointing to an arbitrary file readable by the API server process (read-path attack — e.g. `/etc/passwd` or `airflow.cfg`) or (b) supply a `task_id` containing `..` sequences accepted by the Task SDK's `KEY_REGEX` (write-path attack), and in both cases the FileTaskHandler resolves the log path outside the configured `base_log_folder`, leaking or overwriting arbitrary files. Only affects deployments where the worker log folder is shared with the API server. Users are advised to upgrade to `apache-airflow` 3.2.2 or later. As a defense-in-depth mitigation, deploy the worker and API server with separate log volumes so that worker-controlled paths cannot reach the API server's filesystem.

## Affected packages

- `apache-airflow < 3.2.2`

## Remediation

Upgrade to a patched release:

- `apache-airflow 3.2.2`
