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

Twig: SourcePolicy обязан включать callback sandbox

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

Как безопасно проверить Twig: SourcePolicy обязан включать callback sandbox: точная версия, reachability, обратимый fixture, измеримые PASS/FAIL/Unknown и stop-rule без production-данных.

Граница проблемы: Twig: SourcePolicy обязан включать callback sandbox

Самостоятельная пользовательская боль: source-scoped sandbox не применяет Closure-only rule к callback filters sort/filter/map/reduce. Защитное правило для проверки сформулировано заранее: «как безопасно проверить что sandbox decision для каждого callback получает current source и запрещает non closure callable во всех activation modes в twig sandbox sourcepolicy без production данных». GitHub Reviewed Advisory ghsa-2q52-x2ff-qgfr описывает: «Twig: Possible sandbox bypass when using a source policy»; запись опубликована 2026-06-05 и обновлена 2026-06-05. Эти сведения подтверждают технический сигнал и upstream-контекст, но не доказывают наличие затронутой версии, достижимость пути, эксплуатацию конкретной системы или популярность запроса. Поэтому итог по локальной среде начинается как Unknown и меняется только после inventory, reachability и изолированного теста.

Сверьте версии и достижимость для twig-source-policy-callback-sandbox-check

Сначала отделите наличие пакета от достижимости затронутого пути. Boundary из reviewed record и прямого upstream-источника: «composer/twig/twig >= 2.16.0, <= 2.16.1; first patched нет patched release в record | composer/twig/twig >= 3.9.0, < 3.26.0; first patched 3.26.0». Разнесите состояния в таблице: компонента нет; версия вне диапазона; исправление backported; функция выключена; путь недостижим; provenance неясен; нужен fixture. Рабочий набор полей именно для этой темы: sandbox mode, source, filter, callback type, policy decision, callback calls. Banner, lockfile без resolved tree или совпадение имени пакета не являются доказательством. Если схема версий форка не сопоставима с upstream, оставьте Unknown и запросите build provenance вместо категоричного PASS.

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

Безопасный fixture: Twig unit fixture с SourcePolicy включает sandbox для одного dummy template и передаёт безопасный named-callback marker без выполнения команды. До запуска запишите expected invariant, лимиты времени и памяти, допустимые side effects и способ полной очистки. Добавьте положительный control для штатного пути и отрицательный case, который меняет только одну проверяемую границу. Используйте фиктивные identifiers и временное состояние; токены, реальные адреса, пользовательские данные, рабочие конфиги и внешние цели исключены. После каждого case удалите temp-state и повторите малый control: он подтверждает, что отказ относится к механизму, а не к сломанному harness.

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

Артефакт проверки хранит только минимизированные поля: sandbox mode, source, filter, callback type, policy decision, callback calls. Для каждого поля отметьте источник: configuration, измерение, parser output или решение policy. Критерий PASS определён до запуска: non-Closure rejected до invocation, Closure control вызывается ожидаемое число раз. FAIL допустим только если запрещённый эффект наблюдается в изоляции, boundary и runtime-mode совпали, а оба controls дают ожидаемый результат. Во всех остальных случаях ставьте Unknown или Inconclusive. Не прикладывайте сырые логи: достаточно hash fixture, версии, обезличенной матрицы, результата controls и времени проверки.

Проверьте причинность вывода о как безопасно проверить что sandbox decision для каждого callback получает current source

Рецензент должен связать наблюдение «source-scoped sandbox не применяет Closure-only rule к callback filters sort/filter/map/reduce» с конкретной границей «как безопасно проверить что sandbox decision для каждого callback получает current source и запрещает non closure callable во всех activation modes в twig sandbox sourcepolicy без production данных», а не с похожим внешним симптомом. Попросите показать, где в resolved build применяется boundary «composer/twig/twig >= 2.16.0, <= 2.16.1; first patched нет patched release в record | composer/twig/twig >= 3.9.0, < 3.26.0; first patched 3.26.0», почему операция «Twig unit fixture с SourcePolicy включает sandbox для одного dummy template и передаёт безопасный named-callback marker без выполнения команды» обратима и какие значения sandbox mode, source, filter, callback type, policy decision, callback calls получены измерением. Затем отдельно объясните, почему результат «non-Closure rejected до invocation, Closure control вызывается ожидаемое число раз» проверяет и отказ, и штатный control. Если хотя бы одно звено отсутствует, вывод возвращается в Unknown; severity advisory нельзя переносить на локальную установку автоматически.

Особенность механизма twig-source-policy-callback-sandbox-check

SourcePolicy не должна позволять callback обойти sandbox по одному лишь имени фильтра. В fixture передайте безопасный marker разных callable-типов и считайте invocation, не выполняя системных функций. Неподдерживаемый non-Closure отклоняется до вызова, Closure control проходит ровно ожидаемое число раз. Это проверяет типовую границу policy evaluation; пользовательские templates и production renderer в эксперимент не входят.

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

Предпочтительное действие — перейти на исправленную upstream-ветку из boundary «composer/twig/twig >= 2.16.0, <= 2.16.1; first patched нет patched release в record | composer/twig/twig >= 3.9.0, < 3.26.0; first patched 3.26.0», затем повторить тот же fixture и штатный control. Временная мера допустима только если разрывает описанный механизм, имеет владельца, срок действия, наблюдаемый сигнал и проверяемый rollback. Обязательный stop-rule: не передавать системные callables и не рендерить пользовательский template в production.. При его срабатывании эксперимент прекращают, не расширяя доступ и не повышая нагрузку. В обращение к maintainer включите provenance, feature state, матрицу полей и ссылки на reviewed advisory и прямой upstream-источник; эксплуатационные инструкции и данные реальной среды исключите.

Минимальный пакет для поддержки по twig-source-policy-callback-sandbox-check

Соберите короткую причинную карточку: боль — «source-scoped sandbox не применяет Closure-only rule к callback filters sort/filter/map/reduce»; invariant — «как безопасно проверить что sandbox decision для каждого callback получает current source и запрещает non closure callable во всех activation modes в twig sandbox sourcepolicy без production данных»; версия — «composer/twig/twig >= 2.16.0, <= 2.16.1; first patched нет patched release в record | composer/twig/twig >= 3.9.0, < 3.26.0; first patched 3.26.0»; операция — «Twig unit fixture с SourcePolicy включает sandbox для одного dummy template и передаёт безопасный named-callback marker без выполнения команды»; поля — sandbox mode, source, filter, callback type, policy decision, callback calls; PASS — «non-Closure rejected до invocation, Closure control вызывается ожидаемое число раз». Добавьте hash теста, результат positive/negative controls, cleanup result и причину, по которой тест не касается внешней системы. Не включайте IP, токены, реальные имена, ключи, содержимое документов или полные логи. Если direct source подтверждает только release context, так и укажите: он не является доказательством локальной уязвимости. Граница остановки остаётся неизменной: не передавать системные callables и не рендерить пользовательский template в production..

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

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

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

Ответы

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

Ваш ответ

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

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

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