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

Craft CMS: allowlist классов в template context

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

Защитная диагностика Craft CMS: allowlist классов в template context по GHSA-957r-qf9p-67xw: runtime inventory, bounded fixture, измеримый verdict, красная линия и evidence bundle без production-данных.

Решение в двух шагах — Craft CMS: allowlist классов в template context

Сначала подтвердите, что runtime действительно использует craftcms/cms в диапазоне «composer:craftcms/cms >= 5.0.0-RC1, < 5.10.6; first patched 5.10.6 | composer:craftcms/cms >= 4.0.0-RC1, < 4.18.2; first patched 4.18.2» и что функция «Craft CMS: allowlist классов в template context» включена. Затем выполните только bounded fixture: Template evaluator заменить symbol resolver spy; проверять synthetic safe DTO и filesystem-capable class names, не открывая файлы. Боль, которую проверяет эта страница: template expression может получить filesystem-capable class constructor. Выходной артефакт — class name / context mode / constructor calls / verdict. GHSA GHSA-957r-qf9p-67xw не заменяет inventory и не доказывает уязвимость конкретной системы.

Карта границы — Craft CMS: allowlist классов в template context

Нарисуйте последовательность Source → Normalize → Authorize/Validate → Side effect. Для «Craft CMS: allowlist классов в template context» особая карта такова: Карточка инвентаризирует доступные globals/functions/classes. PASS означает, что template data создаётся сервером, а пользовательская строка не выбирает runtime class даже вне sandbox mode. На каждой стрелке укажите тип данных, владельца решения и измеримый counter. Если две стадии видят разные представления одной строки или объекта, итог UNKNOWN до устранения неоднозначности.

Подготовка без production-данных — Craft CMS: allowlist классов в template context

Создайте temp directory, in-memory graph/cache/store либо pure adapter, соответствующий протоколу: Template evaluator заменить symbol resolver spy; проверять synthetic safe DTO и filesystem-capable class names, не открывая файлы. Используются только короткие canary labels; IP, токены, customer records, реальные пути и environment values запрещены. Network, shell, database, filesystem и session issuance заменяются spies. Зафиксируйте hash fixture и нулевые counters до control.

Control и boundary-case — Craft CMS: allowlist классов в template context

Control подтверждает достижимость ветки на разрешённом входе. Boundary-case меняет ровно один параметр и должен остановиться до состояния «template expression может получить filesystem-capable class constructor». Запишите class name / context mode / constructor calls / verdict, reason code и monotonic duration. Карточка инвентаризирует доступные globals/functions/classes. PASS означает, что template data создаётся сервером, а пользовательская строка не выбирает runtime class даже вне sandbox mode. Не повышайте размер/глубину после первого превышения, не используйте эксплуатационный payload и не сравнивайте разные ОС как доказательство исправления.

Таблица verdict — Craft CMS: allowlist классов в template context

PASS: применимый runtime подтверждён, control прошёл, boundary остановился до side effect, cleanup доказан. FAIL: та же provenance и наблюдаемое запрещённое состояние. UNKNOWN: отсутствуют версия, configuration snapshot, control, counter или cleanup. NOT_APPLICABLE: package либо entry point доказанно отсутствует. Версия вне диапазона без runtime readback остаётся только inventory clue.

Красная линия — Craft CMS: allowlist классов в template context

Стоп-условие: constructor spy получил неразрешённый class или context mode игнорируется. После остановки не повторяйте тест с большим вводом. Верните disposable state к hash, обнулите spies, освободите buffers/objects и выполните один benign control. Несовпадение state после cleanup блокирует PASS и должно войти в handoff как отдельный дефект harness или компонента.

Самостоятельная польза — Craft CMS: allowlist классов в template context

Фиксирует capability allowlist для template object creation. Не passkey replay: отдельная template-to-runtime capability boundary. Практический результат не сводится к названию CVE: читатель получает class name / context mode / constructor calls / verdict. Карточка инвентаризирует доступные globals/functions/classes. PASS означает, что template data создаётся сервером, а пользовательская строка не выбирает runtime class даже вне sandbox mode. Механическая замена framework, устройства или платформы не создаёт новый intent; совпадающая старая страница становится update/merge-кандидатом.

Минимальный handoff — Craft CMS: allowlist классов в template context

Передайте GHSA GHSA-957r-qf9p-67xw, runtime digest, диапазон «composer:craftcms/cms >= 5.0.0-RC1, < 5.10.6; first patched 5.10.6 | composer:craftcms/cms >= 4.0.0-RC1, < 4.18.2; first patched 4.18.2», entry point, sanitized config, control/boundary rows, counters, verdict, stop reason и cleanup proof. Источник опубликован 2026-08-06, обновлён 2026-09-01; это дата advisory, а не показатель спроса или эксплуатации. После remediation повторите тот же fixture и сравните границу/side-effect counters.

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

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

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

Ответы

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

Ваш ответ

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

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

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