Защитная диагностика Spring Security WebFlux по GHSA-c4q5-6c82-3qpw: version inventory, обратимый fixture, PASS/FAIL/Unknown, stop-rule и минимальный пакет доказательств без production-данных.
Короткий ответ: какая граница важна в Spring Security WebFlux
Проверять нужно не продукт целиком, а конкретный инвариант: WebFlux firewall и matcher chain должны канонизировать path до выбора permit/deny rule. Пользовательская боль здесь одна — static resource path может получить другое authorization-решение, чем соседний защищённый route. Запись GHSA-c4q5-6c82-3qpw задаёт инвентарную отсечку «Spring Security WebFlux: 5.0.0–5.7.12, 5.8.0–5.8.14, 6.0.0–6.0.12, 6.1.0–6.1.10, 6.2.0–6.2.6, 6.3.0–6.3.3; исправления: 5.7.13, 5.8.15, 6.0.13, 6.1.11, 6.2.7, 6.3.4», но номер версии не является диагнозом. Наличие пакета означает только candidate: ещё нужно доказать runtime artifact, включённую функцию и достижимый путь. Отсутствие жалоб, зелёный health и название образа ничего не говорят об этой границе. Практический ответ строится вокруг отдельного наблюдения «request path | canonical path | matcher | anonymous status | handler calls | verdict» и прекращается по условию «защищённый resource доступен анонимно, matcher расходится с canonical path или прочитан реальный файл». Это сохраняет тему узкой и не превращает её в повтор общего security-чеклиста.
Проверьте применимость до эксперимента
Найдите Spring Security WebFlux в resolved lock, SBOM или фактически загруженном binary и свяжите результат с digest либо revision. Сопоставьте его с «Spring Security WebFlux: 5.0.0–5.7.12, 5.8.0–5.8.14, 6.0.0–6.0.12, 6.1.0–6.1.10, 6.2.0–6.2.6, 6.3.0–6.3.3; исправления: 5.7.13, 5.8.15, 6.0.13, 6.1.11, 6.2.7, 6.3.4». Получаются четыре честных исхода: absent — компонента в runtime нет; out_of_range — доказанная версия не входит в указанную область; candidate — область совпала и функция доступна; unknown — provenance или reachability не подтверждены. Для backport отдельно приложите commit и regression test. Не повышайте unknown до pass по дате сборки, vendor banner или одному ответу HTTP.
Безопасное наблюдение для GHSA-c4q5-6c82-3qpw
Используйте только обратимый сценарий: MockWebTestClient проверяет публичный control, защищённый static path и inert encoded-marker; реальные файлы, пользователи и listener не нужны. Сначала выполните штатный control, иначе отказ boundary-case может означать сломанный стенд. Работайте в disposable-процессе или namespace без production snapshot, учётных данных, персональных объектов и открытого egress. До старта зафиксируйте разрешённые файлы, network scope, timeout, CPU/RSS budget и способ cleanup. После шага прочитайте состояние обратно и сравните только синтетические маркеры. Не переносите из advisory exploit-код, реальные идентификаторы или опасную нагрузку.
Матрица результата и критерий остановки
Рабочая строка этой статьи: request path | canonical path | matcher | anonymous status | handler calls | verdict. PASS допустим, когда control достигает целевой функции, boundary-case управляемо отклонён, а readback и side-effect diff чисты. FAIL фиксируется только при работающем control и прямом нарушении инварианта «WebFlux firewall и matcher chain должны канонизировать path до выбора permit/deny rule». UNKNOWN обязателен при неизвестной сборке, неполной телеметрии, раннем limiter, неоднозначном состоянии или невозможности безопасно воспроизвести ветку. Stop-condition задаётся заранее: защищённый resource доступен анонимно, matcher расходится с canonical path или прочитан реальный файл. После него тест не расширяют и не пытаются добиться результата большей нагрузкой.
Как доказать исправление без лишних изменений
Для candidate или FAIL сверьте remediation на upstream-странице GHSA-c4q5-6c82-3qpw и используйте поддерживаемую версию либо документированный backport; inventory-ориентир остаётся «Spring Security WebFlux: 5.0.0–5.7.12, 5.8.0–5.8.14, 6.0.0–6.0.12, 6.1.0–6.1.10, 6.2.0–6.2.6, 6.3.0–6.3.3; исправления: 5.7.13, 5.8.15, 6.0.13, 6.1.11, 6.2.7, 6.3.4». Если patched release не названа, не выдумывайте её: временно изолируйте функцию и согласуйте отдельную миграцию. На том же fixture сохраните pre/post artifact digest, повторите control и boundary-case, затем сравните матрицу «request path | canonical path | matcher | anonymous status | handler calls | verdict». Canary допустим только после чистого cleanup и отдельного rollback. Не меняйте одновременно proxy, права, storage или формат данных — иначе причина результата потеряется.
Минимальный handoff владельцу Spring Security WebFlux
Передайте GHSA-c4q5-6c82-3qpw, resolved package, границу «Spring Security WebFlux: 5.0.0–5.7.12, 5.8.0–5.8.14, 6.0.0–6.0.12, 6.1.0–6.1.10, 6.2.0–6.2.6, 6.3.0–6.3.3; исправления: 5.7.13, 5.8.15, 6.0.13, 6.1.11, 6.2.7, 6.3.4», artifact digest, feature state, hash fixture, budgets, одну заполненную строку «request path | canonical path | matcher | anonymous status | handler calls | verdict», verdict PASS/FAIL/UNKNOWN и причину unknown. Ссылки на GitHub Advisory Database и upstream источник нужны для повторной проверки, но длинные фрагменты не копируются. Укажите, что вывод относится только к боли «static resource path может получить другое authorization-решение, чем соседний защищённый route». Удалите hostnames, IP, usernames, cookies, tokens, конфиги и содержимое пользовательских объектов. Для независимого журнала достаточно полей `spring-webflux-static-resource-authorization-parity-artifact`, `spring-webflux-static-resource-authorization-parity-control`, `spring-webflux-static-resource-authorization-parity-boundary`, `spring-webflux-static-resource-authorization-parity-readback`, `spring-webflux-static-resource-authorization-parity-sideeffects`, `spring-webflux-static-resource-authorization-parity-stop`, `spring-webflux-static-resource-authorization-parity-verdict`, `spring-webflux-static-resource-authorization-parity-cleanup`; значения секретов в них запрещены.
Материал подготовлен редакцией VOne с помощью ИИ; даты, версии, первичные источники, обратимый fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.
Источники и проверка
- GitHub Advisory Database GHSA-c4q5-6c82-3qpw проверено 2026-09-01
- Primary upstream source for Spring Security WebFlux проверено 2026-09-01
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.