Защитная проверка django-cms по GHSA-8qj2-c6q4-f399: версия, обратимый fixture, PASS/FAIL/Unknown, stop-rule и обезличенный пакет доказательств.
Что проверить для django-cms
Сначала зафиксируйте наблюдаемую границу, а не пытайтесь воспроизвести атаку. Низкопривилегированный staff не должен получать структуру placeholder чужого объекта. Короткий ответ: подтвердите фактический набор и границу «pip/django-cms < 5.0.9 → 5.0.9», затем повторите только обратимую проверку: на тестовом сайте сравнить разрешённый PageContent и закрытый объект через штатный endpoint без реальных данных. Не используйте production, чужие данные или вредоносные payload. GitHub Advisory Database указывает severity medium и обновление 2026-08-20; это приоритет для инвентаризации, а не доказательство атаки или массового спроса. Запишите digest сборки, resolved dependency и положение затронутой функции. Если набор транзитивный, имя образа или процесса не заменяет lock-файл, SBOM либо provenance артефакта.
Как определить применимость версии
Зафиксированная advisory-контур: pip/django-cms < 5.0.9 → 5.0.9. Сопоставляйте её с реально загруженной библиотекой, а не только с manifest исходников. Разделите исход на `not_present`, `outside_range`, `affected_candidate`, `patched_or_backported` и `unknown`. Для fork архивируйте upstream commit и описание backport. Для категории `auth` отдельно отметьте, достигается ли соответствующий путь из доверенной зоны. Если branch или package не удаётся однозначно сопоставить, остановитесь на Unknown и не подменяйте факт общим советом «обновить всё».
Обратимый тест без опасного воспроизведения
Рекомендуемый fixture: на тестовом сайте сравнить разрешённый PageContent и закрытый объект через штатный endpoint без реальных данных. До запуска подготовьте пустой временный контекст, ограничьте время и ресурсы, отключите внешнюю сеть и отметьте expected result. Сначала повторите benign positive control, который доказывает работоспособность функции. Затем один отрицательный случай, проверяющий только заявленную границу. Не переносите в fixture токены, персональные данные, реальные пути, production-конфигурацию или опубликованные proof-of-concept. После теста удалите временные сущности и подтвердите отсутствие изменения исходного состояния.
Критерии PASS, FAIL и Unknown
Практический артефакт: карта role–content type–object owner–status–structure disclosure. PASS означает, что разрешённый control работает, а пограничный случай отклонён до нежелательного состояния. FAIL фиксируется только при работающем control и наблюдаемом нарушении заявленной границы. Unknown обязателен, если dependency не доказана, test harness не достиг нужного пути, результат нельзя прочитать обратно или ограничитель сам оборвал проверку. Для `auth` дополнительно отметьте время, память, нормализованный путь, субъект доступа либо контекст вывода — только те колонки, которые относятся к механизму.
План обновления и stop-rule
Если сборка попадает в затронутый диапазон, используйте поддерживаемую исправленную ветку из primary source и повторите тот же fixture до и после изменения. Не меняйте одновременно dependency, proxy, права и формат данных: иначе результат потеряет причинность. Stop-rule: немедленно завершите тест при росте ресурсов вне лимита, неожиданном сетевом обращении, записи за пределами временного каталога, попытке затронуть чужой объект или появлении реальных секретов. WAF, отсутствие жалоб и статус active не равны исправлению GHSA-8qj2-c6q4-f399.
Что приложить к запросу поддержки
Сохраните GHSA-8qj2-c6q4-f399, package name, resolved version, artifact digest, ветку и commit, feature state, hash синтетического fixture, verdicts control и negative case, а также итог PASS/FAIL/Unknown. Приложите ссылки на GitHub Advisory Database и primary upstream source, но не вставляйте большие фрагменты чужого текста. Отдельная боль: низкопривилегированный staff не должен получать структуру placeholder чужого объекта. Результат — карта role–content type–object owner–status–structure disclosure. Механизм GHSA-8qj2-c6q4-f399 (django CMS: Missing authorization in `render_object_structure` discloses non-PageContent placeholder structure to low-privileged staff) не совпадает с соседними intent и требует собственного набора наблюдений. Такой набор позволяет maintainer повторить решение без доступа к production. Если advisory, локальная сборка и regression test расходятся, перечислите расхождение как Unknown вместо предположения о безопасности.
Контрольная карточка GHSA-8qj2-c6q4-f399 для auth
Карточка именно этого решения связывает вопрос «низкопривилегированный staff не должен получать структуру placeholder чужого объекта» с проверкой «на тестовом сайте сравнить разрешённый PageContent и закрытый объект через штатный endpoint без реальных данных». В первой строке укажите django-cms, затем границу pip/django-cms < 5.0.9 → 5.0.9. Во второй строке архивируйте исходный сигнал: django CMS: Missing authorization in `render_object_structure` discloses non-PageContent placeholder structure to low-privileged staff. Третья строка — ожидаемый практический результат «карта role–content type–object owner–status–structure disclosure». Для этого механизма не подходят доказательства соседних страниц: название продукта, общий статус службы, один HTTP 200, отсутствие жалоб или скриншот интерфейса не отвечают на заявленный вопрос. Отдельно отметьте, какой benign control подтверждает достижимость пути, какое наблюдение считается отказом до побочного эффекта и при каком условии решение становится Unknown. Пакет не должен содержать токены, реальные имена, адреса узлов, содержимое документов, дампы памяти или полный production-log. Финальная подпись включает дату 2026-08-31, GHSA-8qj2-c6q4-f399, digest сборки и ссылку на upstream. Так другой специалист проверит категорию auth по тем же полям, не повторяя опасный сценарий и не получая доступ к данным пользователя.
Минимальный record для повторной проверки django-cms-render-object-structure-authorization
Низкопривилегированный staff не должен получать структуру placeholder чужого объекта. Рабочее действие для этой карточки: на тестовом сайте сравнить разрешённый PageContent и закрытый объект через штатный endpoint без реальных данных. Ожидаемый артефакт: карта role–content type–object owner–status–structure disclosure. Upstream формулировка механизма: django CMS: Missing authorization in `render_object_structure` discloses non-PageContent placeholder structure to low-privileged staff. Компонентная граница: pip/django-cms < 5.0.9 → 5.0.9. Для authorization boundary создают два пустых scope и минимальную роль. Positive control подтверждает разрешённое действие в своём scope; negative case обращается к синтетическому объекту соседнего scope. Фиксируют subject, object, action, policy source, решение и неизменность объекта. Admin и production-аккаунты в fixture не участвуют. Цепочка наблюдения «django → cms → render → object → structure → authorization» задаёт названия колонок и порядок read-back. Машиночитаемые ключи record: django-cms-render-object-structure-authorization-baseline, django-cms-render-object-structure-authorization-inventory, django-cms-render-object-structure-authorization-control, django-cms-render-object-structure-authorization-boundary, django-cms-render-object-structure-authorization-fixture, django-cms-render-object-structure-authorization-deadline, django-cms-render-object-structure-authorization-readback, django-cms-render-object-structure-authorization-sideeffects, django-cms-render-object-structure-authorization-verdict, django-cms-render-object-structure-authorization-provenance, django-cms-render-object-structure-authorization-rollback, django-cms-render-object-structure-authorization-timestamp, django-cms-render-object-structure-authorization-owner, django-cms-render-object-structure-authorization-digest, django-cms-render-object-structure-authorization-unknownreason. После обновления повторяется тот же fixture, поэтому изменение django-cms можно отделить от изменения окружения. Для GHSA-8qj2-c6q4-f399 verdict остаётся Unknown при пропущенном control, несовпадающей ветке либо недоступном read-back.
Материал подготовлен редакцией VOne с помощью ИИ; версии, источники, безопасный fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.
Источники и проверка
- GitHub Advisory Database GHSA-8qj2-c6q4-f399 проверено 2026-08-31
- Primary upstream source for django-cms проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.