Vikunja — это автономная платформа управления задачами с открытым исходным кодом. До версии 2.4.0 POST /api/v1/projects/{project}/views/{view}/buckets/{bucket}/tasks принимает указанный в теле идентификатор Task_id, но TaskBucket.CanUpdate в pkg/models/kanban_task_bucket.go авторизует только проект, представление и сегмент из URL-адреса. Затем updateTaskBucket вызывает Task.ReadOne без отдельной проверки разрешений задачи, возвращает содержимое задачи жертвы и может обновить состояние выполненной задачи, когда злоумышленник выбирает сегмент выполненной задачи.
Поскольку идентификаторы задач представляют собой глобальные последовательные значения, прошедший проверку подлинности пользователь может перечислять межклиентские задачи и изменять метаданные их завершения с помощью маршрутов версии 1 и версии 2, которые используют эту модель. Эта проблема исправлена в версии 2.4.0.
Показать оригинальное описание (EN)
Vikunja is an open-source self-hosted task management platform. Prior to 2.4.0, POST /api/v1/projects/{project}/views/{view}/buckets/{bucket}/tasks accepts a body supplied task_id but TaskBucket.CanUpdate in pkg/models/kanban_task_bucket.go authorizes only the project, view, and bucket from the URL. updateTaskBucket then calls Task.ReadOne without a separate task permission check, returns the victim task contents, and can update the task done state when the attacker chooses a done bucket. Because task identifiers are global sequential values, an authenticated user can enumerate cross-tenant tasks and modify their completion metadata through both the v1 and v2 routes that share this model. This issue is fixed in version 2.4.0.
Характеристики атаки
Последствия
Строка CVSS v3.1