Vikunja — это автономная платформа управления задачами с открытым исходным кодом. До версии 2.2.1 TaskAttachment.ReadOne() запрашивает вложения только по идентификатору («WHERE id = ?»), игнорируя идентификатор задачи из URL-пути. Проверка разрешений в CanRead() подтверждает доступ к задаче, указанной в URL-адресе, но ReadOne() загружает другое вложение, которое может принадлежать задаче в другом проекте.
Это позволяет любому аутентифицированному пользователю загружать или удалять любое вложение в системе, предоставляя свой собственный доступный идентификатор задачи с идентификатором целевого вложения. Идентификаторы вложений представляют собой последовательные целые числа, что упрощает перечисление. Версия 2.2.1 исправляет проблему.
Показать оригинальное описание (EN)
Vikunja is an open-source self-hosted task management platform. Prior to version 2.2.1, `TaskAttachment.ReadOne()` queries attachments by ID only (`WHERE id = ?`), ignoring the task ID from the URL path. The permission check in `CanRead()` validates access to the task specified in the URL, but `ReadOne()` loads a different attachment that may belong to a task in another project. This allows any authenticated user to download or delete any attachment in the system by providing their own accessible task ID with a target attachment ID. Attachment IDs are sequential integers, making enumeration trivial. Version 2.2.1 patches the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1