Безопасная проверка Jackson ignore policy по ghsa-5jmj-h7xm-6q6v: применимость, обратимый опыт для границы «contextual filtered BeanPropertyMap survives case-insensitive map rebuild», матрица результата и stop-rule без production-данных.
Отделите advisory от установки Jackson ignore policy
Сначала отделите факт advisory от гипотезы о своей установке Jackson ignore policy. Зафиксируйте package source, исполняемая среда version, build digest, feature/config reachability и роль, которая достигает ветви. GitHub Reviewed Advisory сообщает «jackson-databind has case-insensitive deserialization bypasses per-property @JsonIgnoreProperties», даты 2026-06-23/2026-07-16 и границы «com.fasterxml.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | tools.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | com.fasterxml.jackson.core:jackson-databind >= 2.8.0, < 2.18.9; first patched 2.18.9 | com.fasterxml.jackson.core:jackson-databind >= 2.19.0, < 2.21.5; first patched 2.21.5 | com.fasterxml.jackson.core:jackson-databind >= 2.22.0, < 2.22.1; first patched 2.22.1». Это не подтверждает affected code в конкретной сборке: fork и vendor backport требуют commit provenance. Пока provenance или reachability неизвестны, статус только unknown, без вывода об эксплуатации, популярности или ущербе.
Назовите отдельный защитный invariant
Опишите один узкий invariant: contextual filtered BeanPropertyMap survives case-insensitive map rebuild. Отдельная боль пользователя: per-property @JsonIgnoreProperties удаляет поле, но contextual rebuild восстанавливает его при иной casing. Укажите субъект, объект, trust boundary, решение policy и самый ранний чувствительный side effect. Pass-критерий задайте заранее: ignored field remains unreachable under every casing; allowed sibling still works. Он отличается от общего «ошибки нет»: защита обязана сработать до read, send, execute, write, cache commit, credential issue или process exit. Решающий артефакт — input-casing / contextual-map / ignored-present / writes / allowed-control; в нём нет имён, IP, содержимого файлов и персональных данных.
Проведите дифференциальный обратимый опыт
Создайте обратимый контрольное окружение: minimal nested DTO, ignored field and name variants exact/lower/upper without sensitive values. Затем deserialize variants with case-insensitive mode and compare property mutation counter. Все значения синтетические, сеть отключена либо loopback-only, filesystem ограничен mkdtemp, persistence — in-memory или rollback transaction. Добавьте positive control и boundary case, одинаковый timeout и deterministic ordering. До запуска оставьте в отчёте input digest и expected row; после — result class, counters, final-state digest и cleanup proof. Нагрузочный или эксплуатационный вариант не нужен и запрещён.
Прочитайте матрицу до side effect
Заполните матрицу «input-casing / contextual-map / ignored-present / writes / allowed-control» строка за строкой. Сопоставьте observed с правилом «ignored field remains unreachable under every casing; allowed sibling still works», отдельно отмечая stage решения и факт любого побочного эффекта. Positive control обязан пройти тот же код: иначе deny может означать сломанный контрольное окружение. Для гонки или cache/state темы изменяйте только детерминированный interleaving и повторяйте малое число раз. Green возможен, когда безопасный сценарий работает, пограничный отклонён раньше действия, а state digest соответствует ожидаемому.
Подтвердите механизм исправления
Проверьте patch provenance по смыслу: diff следует контракту и реализовать «contextual filtered BeanPropertyMap survives case-insensitive map rebuild», а не просто изменить номер релиза. На одном тестовая заготовка сравните текущую и candidate build и оставьте в отчёте «input-casing / contextual-map / ignored-present / writes / allowed-control». Диапазон «com.fasterxml.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | tools.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | com.fasterxml.jackson.core:jackson-databind >= 2.8.0, < 2.18.9; first patched 2.18.9 | com.fasterxml.jackson.core:jackson-databind >= 2.19.0, < 2.21.5; first patched 2.21.5 | com.fasterxml.jackson.core:jackson-databind >= 2.22.0, < 2.22.1; first patched 2.22.1» используйте как фильтр, не как доказательство. Если update требует rollout, эта статья не разрешает production change: нужен отдельный контракт с backup, canary, readiness и rollback. Не обещайте, что один фикс закрывает весь класс риска или даёт поисковый результат.
Примените stop-rule и privacy boundary
Stop-rule: остановить опыт до production model, secrets или permissive global mapper changes. Также завершите опыт при внешнем адресе, real credential, privilege prompt, данных вне тестовая заготовка, необратимой записи, росте ресурсов, отсутствии normal control или cleanup. Статус будет blocked, а не «почти прошёл». Для сопровождения передайте ghsa-5jmj-h7xm-6q6v, Jackson ignore policy, version/build provenance, «com.fasterxml.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | tools.jackson.core:jackson-databind >= 3.1.0, < 3.1.4; first patched 3.1.4 | com.fasterxml.jackson.core:jackson-databind >= 2.8.0, < 2.18.9; first patched 2.18.9 | com.fasterxml.jackson.core:jackson-databind >= 2.19.0, < 2.21.5; first patched 2.21.5 | com.fasterxml.jackson.core:jackson-databind >= 2.22.0, < 2.22.1; first patched 2.22.1», sanitized «input-casing / contextual-map / ignored-present / writes / allowed-control», expected/observed, stop reason и прямые source URLs. Не публикуйте payload, чужие логи, конфиги и приватные ссылки.
Завершите деревом решения
Дерево решения для Jackson ignore policy: proven patched/non-affected build — not-applicable; недостижимая по документированной конфигурации ветвь — not-reachable; candidate build выполняет «ignored field remains unreachable under every casing; allowed sibling still works» — ready-for-reviewed-update; наблюдается «per-property @JsonIgnoreProperties удаляет поле, но contextual rebuild восстанавливает его при иной casing» — fail и эскалация владельцу. Иначе unknown. К каждому листу приложите один факт из «input-casing / contextual-map / ignored-present / writes / allowed-control» и criterion «остановить опыт до production model, secrets или permissive global mapper changes». Такой ответ самостоятельный: он решает конкретный intent через reversible test, matrix, red flags и минимальный support packet, а не размножает страницу заменой бренда.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-5jmj-h7xm-6q6v проверено 2026-08-31
- Upstream-репозиторий Jackson ignore policy проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.