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

Arc: DuckDB I/O functions должны подчиняться RBAC

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

Как безопасно проверить Arc: DuckDB I/O functions должны подчиняться RBAC: точная версия, reachability, обратимый fixture, измеримые PASS/FAIL/Unknown и stop-rule без production-данных.

Граница проблемы: Arc: DuckDB I/O functions должны подчиняться RBAC

Самостоятельная пользовательская боль: scalar/table I/O function читает локальный файл, хотя token не имеет разрешения на соответствующий источник. Защитное правило для проверки сформулировано заранее: «как безопасно проверить что user sql проходит ast allowlist файловые сетевые и extension i o functions запрещены независимо от позиции в выражении в arc user sql validation без production данных». GitHub Reviewed Advisory ghsa-p2j4-c4g6-rpf5 описывает: «Arc has an authenticated arbitrary local-file read via DuckDB I/O functions that bypasses RBAC table-level checks»; запись опубликована 2026-06-08 и обновлена 2026-06-08. Эти сведения подтверждают технический сигнал и upstream-контекст, но не доказывают наличие затронутой версии, достижимость пути, эксплуатацию конкретной системы или популярность запроса. Поэтому итог по локальной среде начинается как Unknown и меняется только после inventory, reachability и изолированного теста.

Сверьте версии и достижимость для arc-duckdb-io-function-rbac-allowlist

Сначала отделите наличие пакета от достижимости затронутого пути. Boundary из reviewed record и прямого upstream-источника: «go/github.com/basekick-labs/arc < 0.0.0-20260520141557-91bdc29d1a02; first patched 0.0.0-20260520141557-91bdc29d1a02». Разнесите состояния в таблице: компонента нет; версия вне диапазона; исправление backported; функция выключена; путь недостижим; provenance неясен; нужен fixture. Рабочий набор полей именно для этой темы: AST node, function class, token permissions, validator verdict, engine calls, file reads. Banner, lockfile без resolved tree или совпадение имени пакета не являются доказательством. Если схема версий форка не сопоставима с upstream, оставьте Unknown и запросите build provenance вместо категоричного PASS.

Обратимый тест без production-данных: AST node

Безопасный fixture: parser/unit fixture проверяет список harmless function names и dummy path внутри temporary directory; query engine и реальные файлы не запускаются. До запуска запишите expected invariant, лимиты времени и памяти, допустимые side effects и способ полной очистки. Добавьте положительный control для штатного пути и отрицательный case, который меняет только одну проверяемую границу. Используйте фиктивные identifiers и временное состояние; токены, реальные адреса, пользовательские данные, рабочие конфиги и внешние цели исключены. После каждого case удалите temp-state и повторите малый control: он подтверждает, что отказ относится к механизму, а не к сломанному harness.

Зафиксируйте доказательство по полям file reads

Артефакт проверки хранит только минимизированные поля: AST node, function class, token permissions, validator verdict, engine calls, file reads. Для каждого поля отметьте источник: configuration, измерение, parser output или решение policy. Критерий PASS определён до запуска: каждый I/O function blocked до DuckDB execution, engine/file counters равны нулю. FAIL допустим только если запрещённый эффект наблюдается в изоляции, boundary и runtime-mode совпали, а оба controls дают ожидаемый результат. Во всех остальных случаях ставьте Unknown или Inconclusive. Не прикладывайте сырые логи: достаточно hash fixture, версии, обезличенной матрицы, результата controls и времени проверки.

Проверьте причинность вывода о как безопасно проверить что user sql проходит ast allowlist файловые сетевые и extension i

Рецензент должен связать наблюдение «scalar/table I/O function читает локальный файл, хотя token не имеет разрешения на соответствующий источник» с конкретной границей «как безопасно проверить что user sql проходит ast allowlist файловые сетевые и extension i o functions запрещены независимо от позиции в выражении в arc user sql validation без production данных», а не с похожим внешним симптомом. Попросите показать, где в resolved build применяется boundary «go/github.com/basekick-labs/arc < 0.0.0-20260520141557-91bdc29d1a02; first patched 0.0.0-20260520141557-91bdc29d1a02», почему операция «parser/unit fixture проверяет список harmless function names и dummy path внутри temporary directory; query engine и реальные файлы не запускаются» обратима и какие значения AST node, function class, token permissions, validator verdict, engine calls, file reads получены измерением. Затем отдельно объясните, почему результат «каждый I/O function blocked до DuckDB execution, engine/file counters равны нулю» проверяет и отказ, и штатный control. Если хотя бы одно звено отсутствует, вывод возвращается в Unknown; severity advisory нельзя переносить на локальную установку автоматически.

Особенность механизма arc-duckdb-io-function-rbac-allowlist

Проверка Arc должна работать на уровне разобранного AST, а не на сравнении сырой SQL-строки. Классифицируйте функции чтения файлов, расширений и сетевых источников до передачи запроса DuckDB; алиасы и регистр не должны менять решение. Recording engine обязан остаться с нулём вызовов для запрещённых узлов. Такой тест проверяет именно разрыв между table-level RBAC и I/O surface, не читая ни одного настоящего файла.

Обновление, повторная проверка и граница остановки

Предпочтительное действие — перейти на исправленную upstream-ветку из boundary «go/github.com/basekick-labs/arc < 0.0.0-20260520141557-91bdc29d1a02; first patched 0.0.0-20260520141557-91bdc29d1a02», затем повторить тот же fixture и штатный control. Временная мера допустима только если разрывает описанный механизм, имеет владельца, срок действия, наблюдаемый сигнал и проверяемый rollback. Обязательный stop-rule: не указывать системные пути, не загружать расширения и не выполнять SQL на production.. При его срабатывании эксперимент прекращают, не расширяя доступ и не повышая нагрузку. В обращение к maintainer включите provenance, feature state, матрицу полей и ссылки на reviewed advisory и прямой upstream-источник; эксплуатационные инструкции и данные реальной среды исключите.

Минимальный пакет для поддержки по arc-duckdb-io-function-rbac-allowlist

Соберите короткую причинную карточку: боль — «scalar/table I/O function читает локальный файл, хотя token не имеет разрешения на соответствующий источник»; invariant — «как безопасно проверить что user sql проходит ast allowlist файловые сетевые и extension i o functions запрещены независимо от позиции в выражении в arc user sql validation без production данных»; версия — «go/github.com/basekick-labs/arc < 0.0.0-20260520141557-91bdc29d1a02; first patched 0.0.0-20260520141557-91bdc29d1a02»; операция — «parser/unit fixture проверяет список harmless function names и dummy path внутри temporary directory; query engine и реальные файлы не запускаются»; поля — AST node, function class, token permissions, validator verdict, engine calls, file reads; PASS — «каждый I/O function blocked до DuckDB execution, engine/file counters равны нулю». Добавьте hash теста, результат positive/negative controls, cleanup result и причину, по которой тест не касается внешней системы. Не включайте IP, токены, реальные имена, ключи, содержимое документов или полные логи. Если direct source подтверждает только release context, так и укажите: он не является доказательством локальной уязвимости. Граница остановки остаётся неизменной: не указывать системные пути, не загружать расширения и не выполнять SQL на production..

Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.

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

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

Ответы

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

Ваш ответ

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

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

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