fix(page): server-side cycle check in movePage (RT-21) #67
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Источник: red-team-аудит, RT-21 (
docs/red-team-report.md).Что происходит
Серверный
movePage(apps/server/src/core/page/page.service.ts:949-965) не проверяет, что страницу не двигают внутрь её собственного поддерева. Через MCP/REST/агента (или быстрый drag) можно создать циклическую структуру, которая персистится и рассылается всем.Фикс
Перед
updatePageпройти предков target вверх; если встретили перемещаемую страницу — reject (реюз ancestor-CTE изgetPageBreadCrumbs):Цена / приоритет
+1 ancestor-CTE на move; проверка в сервисе авторитетна для всех путей записи.
Ghost referenced this issue2026-06-21 14:10:35 +03:00