Как безопасно проверить 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-границы и отсутствие рекламных обещаний затем перепроверены.
Источники и проверка
- GitHub Reviewed Advisory ghsa-p2j4-c4g6-rpf5 проверено 2026-08-31
- Прямой upstream-источник для Arc: DuckDB I/O functions должны подчиняться RBAC проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.