People-first проверка SurrealDB indexed COUNT по ghsa-c8jx-96c9-8xrp: применимость, безопасный fixture для границы «одинаковое field SELECT permission enforcement для full scan и index-count fast path», измеримый контракт и stop-rule без production-данных.
Определите применимость SurrealDB indexed COUNT
Создайте карточку применимости для SurrealDB indexed COUNT: installed version, package source, build digest, feature/config reachability и роль вызывающего субъекта. Reviewed Advisory описывает «SurrealDB: Field-level SELECT permissions bypassed via indexed COUNT fast paths», опубликована 2026-07-01, обновлена 2026-07-01 и задаёт диапазон «surrealdb < 3.1.0; first patched 3.1.0». Эти данные не доказывают состояние конкретного развёртывания. Проверьте vendor backport и commit provenance; при неизвестной сборке оставьте applicability=unknown. Фактическая граница статьи — «одинаковое field SELECT permission enforcement для full scan и index-count fast path», а не общее обсуждение severity или продукта.
Опишите доверительную границу
Сформулируйте отдельную пользовательскую боль: count по догадке о скрытом indexed field выдаёт наличие значения, хотя прямое чтение запрещено. Запишите доверенный субъект, объект, управляющую policy и первый потенциальный побочный эффект. Заранее задайте защитный контракт: индексный и обычный планы возвращают одинаковый permission-filtered результат без hidden-value oracle. Его нельзя подменять отсутствием исключения или HTTP 200: важна стадия до чтения, передачи, allocation, mutation или delivery. Рабочий артефакт — planner / field-visible / predicate-class / matched-before-policy / result-after-policy. В нём нужны только классы и счётчики; значения credentials, содержимое файлов, IP, account identifiers и персональные данные исключаются.
Соберите обратимый стенд
Постройте минимальный обратимый стенд: временный dataset с public и hidden fields, fake record user и planner modes indexed/noindex. Затем выполнить одну и ту же агрегатную проверку обоими планами на synthetic values. Сеть должна быть отключена или замкнута на loopback, filesystem — на disposable temp, state — на in-memory либо transaction rollback. Добавьте normal-control и отрицательный boundary-case, дайте каждому bounded timeout и одинаковую конфигурацию. До проверки запишите digest входа; после опыта оставьте в отчёте result class, side-effect counters и cleanup proof. Не увеличивайте нагрузку и не пытайтесь воспроизвести вредный эффект на чужой системе.
Измерьте контракт до побочного эффекта
Сведите observed в матрицу «planner / field-visible / predicate-class / matched-before-policy / result-after-policy» и сравните с критерием «индексный и обычный планы возвращают одинаковый permission-filtered результат без hidden-value oracle». Для каждого ряда отметьте decision stage, mutation/read/send counter, final state digest и отклонение от expected. Normal-control обязан пройти тот же код, иначе отрицательный результат ничего не говорит о защите. Повторите лишь малый детерминированный набор; расхождение порядка считается отдельным race/cache сигналом. Pass ставится только когда запрет срабатывает раньше чувствительного действия, а разрешённый сценарий сохраняет documented behavior.
Свяжите patch с узким механизмом
Проверьте исправление по механизму, а не по номеру версии: upstream patch должен напрямую обеспечивать «одинаковое field SELECT permission enforcement для full scan и index-count fast path». Сопоставьте pre/post build на том же тестовая заготовка и сравните «planner / field-visible / predicate-class / matched-before-policy / result-after-policy». Для диапазона «surrealdb < 3.1.0; first patched 3.1.0» отдельно запишите vendor patch provenance и release artifact digest. Canary допускается только в лаборатории; production rollout требует отдельного change contract, backup и rollback. Не объявляйте систему безопасной целиком: этот опыт подтверждает один узкий invariant и не говорит об эксплуатации, ущербе, спросе, индексации или позиции страницы.
Остановитесь и подготовьте поддержку
Примените жёсткий stop-rule: остановиться до production index, персональных значений или перебора реальных данных. Красные флаги также включают внешний адрес, реальный credential, privilege prompt, необратимую запись, рост ресурсов, данные не из тестовая заготовка, отсутствие cleanup и изменившийся объект вне test root. При первом флаге примените stop-rule и оставьте статус blocked. Для поддержки соберите для ghsa-c8jx-96c9-8xrp, SurrealDB indexed COUNT, «surrealdb < 3.1.0; first patched 3.1.0», reachability evidence, sanitized matrix, normal-control, stop reason и две прямые ссылки. Не публикуйте payload и чужие логи; неизвестное обозначьте unknown, а не выдуманным фактом.
Используйте минимальное дерево решения
Минимальное дерево решения для SurrealDB indexed COUNT: если версия вне доказанного affected range и patch provenance подтверждён — not-applicable; если ветвь недостижима по документированной конфигурации — not-reachable; если тестовая заготовка даёт «индексный и обычный планы возвращают одинаковый permission-filtered результат без hidden-value oracle» на candidate build — ready-for-reviewed-update; если наблюдается «count по догадке о скрытом indexed field выдаёт наличие значения, хотя прямое чтение запрещено» — fail и эскалация владельцу. Во всех остальных случаях статус unknown. К карточке приложите «planner / field-visible / predicate-class / matched-before-policy / result-after-policy» и criterion «остановиться до production index, персональных значений или перебора реальных данных». Такое дерево не превращает один advisory в универсальную рекомендацию и сохраняет people-first приоритет: минимальное воздействие, ясная остановка и проверяемый ответ.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-c8jx-96c9-8xrp проверено 2026-08-31
- Upstream-репозиторий SurrealDB indexed COUNT проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.