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

Budibase groups API: проверка RBAC на чтение

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

Защитная диагностика Budibase GET /api/global/groups по ghsa-4qcj-m5wp-jmf4: применимость, ролевой in-memory control, момент deny, измеримый verdict, stop-rule и минимальный пакет для владельца.

Короткий ответ — Budibase groups API: проверка RBAC на чтение

Проверка отвечает на один вопрос: проверить, что Budibase groups API выдаёт метаданные групп только ролям с отдельным разрешением управления группами. Advisory ghsa-4qcj-m5wp-jmf4 — свежий inventory-сигнал, но не доказательство состояния вашей инсталляции. Сначала зафиксируйте package lock, image digest и фактически обслуживающий запрос worker. Затем сравните две роли на одном tenant fixture. Боль конкретна: пользователь с базовой ролью может получить перечень tenant-групп, role mappings и memberships без требуемого административного права. Нужен воспроизводимый результат «матрица actor role / middleware decision / repository calls / response fields / tenant id», а не вывод по названию роли или одному HTTP status.

Какая граница доступа проверяется

Путь решения: authenticated role → route middleware → groups permission → response projection. Для каждого перехода запишите владельца identity, источник роли, требуемую permission и момент первого обращения к repository. Инварианта: BASIC actor получает deny до чтения group store, а административный control видит только разрешённую tenant-проекцию. Здесь не проверяются mutation endpoints, login, лицензирование функций или права другого tenant. Если route не зарегистрирован, component отсутствует — это NOT_APPLICABLE; если неизвестны effective middleware или runtime digest — UNKNOWN, а не PASS.

Инвентаризация до ролевого теста

Сопоставьте SBOM и runtime readback с диапазоном «@budibase/server: introduced 0, last affected 3.38.1». Убедитесь, что запрос идёт в worker route Budibase GET /api/global/groups, а не в gateway-cache или fork. Сохраните список middleware в порядке выполнения и reason code: AFFECTED_PATH, PATCHED_PATH, COMPONENT_ABSENT либо PROVENANCE_UNKNOWN. Исправленный номер версии без проверки effective route недостаточен: backport, vendored bundle или старый container могут изменить применимость.

Безопасный локальный RBAC control

В локальном worker fixture создать одну обезличенную группу и два test principals, basic и admin, затем запросить endpoint через in-memory http client. Не используйте реальные имена, email, memberships или production token. Identity provider и repository замените fake-объектами, response body храните только как список названий полей и digest. Перед запросами обнулите counters. Сначала admin control подтверждает достижимость route, затем BASIC boundary-case меняет только роль. После каждой строки сбрасывайте fixture.

Что записать в матрицу

Сохраните матрица actor role / middleware decision / repository calls / response fields / tenant id, HTTP code, reason code и digest fixture. Admin control не доказывает безопасность BASIC пути: важен момент deny относительно repository read. Ожидается: BASIC actor получает deny до чтения group store, а административный control видит только разрешённую tenant-проекцию. Если response скрыт, но repository уже прочитан, отметьте частичный FAIL для принципа минимальных данных. Если fake repository или middleware recorder не подключён, результат UNKNOWN — увеличивать привилегии или переносить тест на production нельзя.

PASS, FAIL и UNKNOWN

PASS требует подтверждённого runtime, успешного admin control, deny для BASIC до repository read, минимальной admin-проекции и cleanup. FAIL фиксируется, если BASIC actor получил group metadata или repository counter вырос до deny. UNKNOWN означает нехватку digest, effective role mapping, route trace или надёжного recorder. Один 401/403 недостаточен без уверенности, что ответ дал нужный middleware; один пустой JSON также не доказывает отсутствие внутреннего чтения.

Stop-rule и восстановление

Немедленно остановитесь, если BASIC actor получил group metadata или repository counter вырос до deny. Не расширяйте тест на другие tenant, не перебирайте идентификаторы и не сохраняйте ответ с group metadata. Удалите тестовую группу и principals, сравните repository counters и state digest с baseline, закройте in-memory client. Любая оставшаяся запись или обращение к внешнему identity provider блокирует PASS. После обновления повторите ровно ту же двухстрочную матрицу.

Почему это отдельный intent

Проверяет read-authority и response projection одного каталожного endpoint, а не tenant scope БД, создание групп или общую аутентификацию. Передайте владельцу ghsa-4qcj-m5wp-jmf4, digest, effective route/middleware order, диапазон «@budibase/server: introduced 0, last affected 3.38.1», матрица actor role / middleware decision / repository calls / response fields / tenant id, verdict, stop reason и cleanup proof. Advisory опубликована 2026-07-24 и обновлена 2026-08-12. Эти даты подтверждают свежесть технического источника, но не поисковый спрос, эксплуатацию или применимость к конкретному deployment.

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

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

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

Ответы

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

Ваш ответ

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

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

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