API Backfill Apache Airflow авторизовал запрос по идентификатору Dag, предоставленному вызывающей стороной, всякий раз, когда сегмент пути `backfill_id` не удалось проанализировать. Зависимость авторизации анализировала его с помощью `int()`, в то время как обработчик маршрута анализировал его как `NonNegativeInt` pydantic, который принимает значения, которые `int()` отклоняет (`1.0` приводит к `1`); FastAPI разрешает зависимости перед проверкой конечной точки, поэтому они действовали с разными дагами. Таким образом, аутентифицированный пользователь, имеющий разрешение на редактирование любого отдельного дага, может читать, приостанавливать и отменять обратные заполнения, принадлежащие любому другому дагу, включая перевод запусков другого дага в очередь в статус «неудачно».
Никакой конфигурации, отличной от заданной по умолчанию, не требуется, а идентификаторы обратной засыпки являются последовательными, поэтому найти цель тривиально. Пользователям рекомендуется перейти на apache-airflow 3.3.1 или новее, который анализирует идентификатор обратной заполнения с тем же типом, который объявлен в маршрутах.
Показать оригинальное описание (EN)
Apache Airflow's Backfill API authorized a request against a Dag id supplied by the caller whenever the `backfill_id` path segment failed to parse. The authorization dependency parsed it with `int()` while the route handler parsed it as pydantic's `NonNegativeInt`, which accepts values `int()` rejects (`1.0` coerces to `1`); FastAPI resolves dependencies before endpoint validation, so the two acted on different Dags. An authenticated user holding edit permission on any single Dag could therefore read, pause and cancel backfills belonging to any other Dag, including moving another Dag's queued runs to `failed`. No non-default configuration is required and backfill ids are sequential, so finding a target is trivial. Users are advised to upgrade to apache-airflow 3.3.1 or later, which parses the backfill id with the same type the routes declare.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Apache Airflow
cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*
|
— |
3.3.1
|