К обсуждениям

Kimai Timesheet API: проверка team scope при смене проекта

Редакция VOne Технологии

Защитная диагностика Kimai Timesheet API: проверка team scope при смене проекта по GHSA-vrr2-g9gh-c3jc: runtime inventory, bounded regression, измеримый verdict, красная линия и пакет данных для владельца.

Ответ и граница применимости — Kimai Timesheet API: проверка team scope при смене проекта

Задача этой страницы — проверить что Kimai PATCH и POST timesheet не принимают проект вне команд пользователя через query builder. Сначала подтвердите фактически загруженный kimai/kimai, его digest, диапазон «Packagist:kimai/kimai <= 2.56.0; first patched 2.57.0» и включённый entry point. Затем нужен только ограниченный regression: В in-memory repository создать две команды и synthetic timesheet; persistence заменить mutation spy. Боль: владение собственной записью времени может ошибочно подменить проверку доступа к новому проекту. Итоговый артефакт: матрица actor team / old project / requested project / query predicate / mutation verdict с обратимым тестом. GHSA GHSA-vrr2-g9gh-c3jc задаёт проверяемый ориентир, но не доказывает состояние вашей установки.

Карта решения — Kimai Timesheet API: проверка team scope при смене проекта

Разделите путь на Source → Parse/Normalize → Policy → Side effect. Специальная инварианта материала: Право на исходный timesheet и право на новый project вычисляются отдельно и пересекаются непосредственно перед mutation. На каждой границе укажите представление данных, владельца решения и counter. Candidate становится NOT_APPLICABLE только при доказанном отсутствии package или entry point; неизвестная runtime-версия означает UNKNOWN, а не безопасность.

Подготовка безопасного стенда — Kimai Timesheet API: проверка team scope при смене проекта

Соберите temp directory, in-memory repository/cache либо pure adapter. Примените протокол: В in-memory repository создать две команды и synthetic timesheet; persistence заменить mutation spy. Используйте короткие canary labels; пользовательские записи, токены, IP, реальные конфиги, production routes и environment dump запрещены. Network, shell, database, filesystem, browser и session issuance замените spies. До control сохраните hash fixture и нулевые counters.

Control и одна переменная — Kimai Timesheet API: проверка team scope при смене проекта

Разрешённый control подтверждает, что harness достигает нужной ветки. Boundary-case меняет ровно один параметр и обязан остановиться до состояния «владение собственной записью времени может ошибочно подменить проверку доступа к новому проекту». Сохраните поля матрица actor team / old project / requested project / query predicate / mutation verdict с обратимым тестом, reason code и monotonic duration. Право на исходный timesheet и право на новый project вычисляются отдельно и пересекаются непосредственно перед mutation. Не наращивайте размер/глубину после первого превышения и не используйте эксплуатационные payload.

Вердикт без догадок — Kimai Timesheet API: проверка team scope при смене проекта

PASS: runtime и entry point подтверждены, control прошёл, boundary остановлен до side effect, cleanup доказан. FAIL: та же provenance и наблюдаемый запрещённый counter/state. UNKNOWN: нет digest, конфигурации, control, точки наблюдения или восстановления. NOT_APPLICABLE: компонент либо функция доказанно отсутствуют. Номер patched release без runtime readback не является PASS.

Красная линия и восстановление — Kimai Timesheet API: проверка team scope при смене проекта

Немедленный стоп: чужой project прошёл predicate, mutation spy сработал либо rollback не восстановил исходную связь. После стопа не повторяйте проверку с большим вводом. Верните disposable state к исходному hash, освободите объекты и выполните один benign control. Ненулевой неожиданный counter сети, процессов, файлов, записей или сессий блокирует PASS и фиксируется отдельно.

Почему нужен отдельный материал — Kimai Timesheet API: проверка team scope при смене проекта

Разделяет право редактировать timesheet и право привязать его к выбранному project, включая повторную авторизацию перед сохранением. Не общий IDOR: самостоятельная многообъектная граница own-timesheet permission и team-scoped project assignment. Поэтому механическая замена framework, ОС или устройства не создаёт новый URL. Практическая самостоятельность выражена в deliverable «матрица actor team / old project / requested project / query predicate / mutation verdict с обратимым тестом» и в инварианте: Право на исходный timesheet и право на новый project вычисляются отдельно и пересекаются непосредственно перед mutation. Совпадающий старый intent должен стать update/merge-кандидатом.

Минимальный handoff — Kimai Timesheet API: проверка team scope при смене проекта

Передайте владельцу GHSA GHSA-vrr2-g9gh-c3jc, runtime digest, границу «Packagist:kimai/kimai <= 2.56.0; first patched 2.57.0», entry point, sanitized config, control/boundary rows, counters, verdict, stop reason и cleanup proof. Advisory опубликована 2026-07-13, обновлена 2026-07-13; эти даты отражают свежесть источника, а не популярность запроса или факт эксплуатации. После remediation повторите тот же fixture и сравните state transition.

Материал подготовлен редакцией VOne с помощью автоматизированного черновика; версии, даты, границы и ссылки вручную сверены по GitHub Advisory Database и прямой upstream-странице. Текст самостоятельный, не копирует источник и не содержит эксплуатационных шагов.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.