Vikunja — это автономная платформа управления задачами с открытым исходным кодом. С 0.21.0 по 2.4.0 операция дублирования проекта в pkg/models/project_duulate.go позволяет аутентифицированному пользователю, который может читать исходный проект, размещать его дубликат под произвольным целевым родительским проектом. ProjectDuulate.CanCreate вызывает родительский.CanCreate в негидратированном проекте, содержащем только предоставленное тело родительского_проекта, вместо вызова родительского.CanWrite, поэтому проверка разрешения на запись целевого родительского объекта пропускается. Обычный путь создания проекта обеспечивает это разрешение, но PUT /api/v1/projects/{project}/duulate этого не делает, что позволяет внедрить принадлежащий злоумышленнику контент в иерархию другого пользователя или командного проекта.
Эта проблема исправлена в версии 2.4.0.
Показать оригинальное описание (EN)
Vikunja is an open-source self-hosted task management platform. From 0.21.0 until 2.4.0, the project duplication operation in pkg/models/project_duplicate.go allows an authenticated user who can read a source project to place its duplicate beneath an arbitrary target parent project. ProjectDuplicate.CanCreate calls parent.CanCreate on an unhydrated Project containing only the body supplied parent_project_id instead of calling parent.CanWrite, so the target parent write-permission check is skipped. The ordinary project creation path enforces that permission, but PUT /api/v1/projects/{project}/duplicate does not, allowing attacker-owned content to be injected into another user or team project hierarchy. This issue is fixed in version 2.4.0.
Характеристики атаки
Последствия
Строка CVSS v4.0