CVE-2026-45426
NiskieCVSS 3.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
W Apache Airflow, aby wykorzystać podatność, atakujący musi być już uwierzytelnionym workerem Airflow posiadającym ważny JWT serwera logów wystawiony dla co najmniej jednego Daga. Serwer logów Airflow autoryzował tokeny JWT względem identyfikatorów Dag, stosując Pythonowe `str.lstrip()` do żądanego segmentu ścieżki podczas weryfikacji claimu `sub` w JWT. `str.lstrip()` usuwa dowolny znak z *zestawu* znaków z lewej strony (nie prefiks), więc JWT wystawiony dla Daga o nazwie np. `dag_a` autoryzowałby dostęp do logów każdego innego Daga, którego nazwa zaczynała się od dowolnego podzbioru znaków `{d, a, g, _}` (np. `dag_attacker`, `aaaa_target`, `_dag_secret`). Taki uwierzytelniony worker mógł wyliczyć i odczytać logi workerów innych Dagów, których nazwy dzieliły tę klasę znaków, wyciekając dane wyjściowe zadań i ślady błędów poza udokumentowaną granicę izolacji na Dag.
Ocena ryzyka
W środowiskach wielodziałowych, gdzie izolacja logów na Dag jest kluczowa, podatność umożliwia nieautoryzowany dostęp do logów innych Dagów, co może prowadzić do wycieku wrażliwych danych, takich jak dane wyjściowe zadań i komunikaty błędów.
Rekomendacja
Zaleca się aktualizację Apache Airflow do wersji 3.2.2 lub nowszej, która naprawia tę podatność poprzez prawidłową walidację prefiksu ścieżki zamiast użycia `str.lstrip()`.
Oryginalny opis (angielski, źródło NVD)
Exploitation requires the attacker to already be an authenticated Airflow worker holding a valid Log-server JWT issued for at least one Dag. Apache Airflow's Log server authorized JWT tokens against Dag IDs by applying Python's `str.lstrip()` to the requested path segment when verifying the JWT's `sub` claim. `str.lstrip()` strips any of a *set* of characters from the left (not a prefix), so a JWT issued for a Dag named e.g. `dag_a` would authorize log access to any other Dag whose name began with any subset of the characters `{d, a, g, _}` (e.g. `dag_attacker`, `aaaa_target`, `_dag_secret`). Such an authenticated worker could enumerate and read worker logs of other Dags whose names happened to share that character-class prefix, leaking task output and error traces beyond the documented per-Dag isolation boundary. Affects deployments relying on per-Dag log-access scoping (multi-team, shared-executor, shared-worker topologies). Users are advised to upgrade to `apache-airflow` 3.2.2 or later.

