Защитная инструкция по Spring Cloud Function и ghsa-x9c7-5h6g-hq8q: применимость, обратимый тест границы «обнаружение цикла и ограничение глубины при разрешении function definition», измеримый исход, stop-rule и обезличенный пакет поддержки.
Сначала определите применимость для Spring Cloud Function
Проверяемая граница здесь — обнаружение цикла и ограничение глубины при разрешении function definition. Зафиксируйте runtime version, digest сборки, способ поставки и включённость именно этого пути. Reviewed advisory перечисляет «org.springframework.cloud:spring-cloud-function-context >= 4.3.0, < 4.3.3 → исправлено в 4.3.3; org.springframework.cloud:spring-cloud-function-context >= 5.0.0, < 5.0.2 → исправлено в 5.0.2; org.springframework.cloud:spring-cloud-function-context >= 3.2.10, <= 3.2.15 → patched version в record не указана; org.springframework.cloud:spring-cloud-function-context >= 4.1.0, <= 4.1.9 → patched version в record не указана; org.springframework.cloud:spring-cloud-function-context >= 4.2.0, <= 4.2.5 → patched version в record не указана», но одна запись в lockfile не доказывает версию загруженного процесса. Отдельно укажите, кто может достичь функции и какие защитные слои стоят перед ней. Если provenance, конфигурация или достижимость не подтверждены, итоговый статус должен быть unknown, а не vulnerable или safe. Оценка advisory не является доказательством эксплуатации, ущерба или применимости к конкретному серверу.
Что подтверждает GHSA-x9c7-5h6g-hq8q, а что остаётся неизвестным
GitHub Reviewed Advisory опубликована 2026-06-01, обновлена 2026-07-09 и описывает: Spring Cloud Function Context has Uncontrolled Recursion. Для пакетов указана граница «org.springframework.cloud:spring-cloud-function-context >= 4.3.0, < 4.3.3 → исправлено в 4.3.3; org.springframework.cloud:spring-cloud-function-context >= 5.0.0, < 5.0.2 → исправлено в 5.0.2; org.springframework.cloud:spring-cloud-function-context >= 3.2.10, <= 3.2.15 → patched version в record не указана; org.springframework.cloud:spring-cloud-function-context >= 4.1.0, <= 4.1.9 → patched version в record не указана; org.springframework.cloud:spring-cloud-function-context >= 4.2.0, <= 4.2.5 → patched version в record не указана». Upstream spring-cloud/spring-cloud-function подтверждает происхождение проекта; даты, механизм и версии берутся из advisory, а не выводятся по README или поисковому сниппету. Источники не сообщают состояние вашей установки, частоту проблемы, наличие атаки, популярность запроса, индексацию или позицию страницы. Любой community-пост можно использовать лишь как лид для перепроверки, но не как основание технического вывода.
Диагностическая модель: обнаружение цикла и ограничение глубины при разрешении function definition
Пользовательская боль формулируется узко: циклическая цепочка функций может вызвать неконтролируемую рекурсию. Наблюдайте не общий признак «работает/не работает», а независимые контрольные точки из артефакта «trace definition / resolution-depth / invocation-A-B-C / exception-class / process-status». Положительная ветвь нужна для отличия защиты от сломанного стенда: A|B возвращает исходный marker и вызывает обе inert функции ровно по одному разу. Граничную ветвь запускают после baseline, один раз и с заранее записанными лимитами. Такой порядок отделяет сам механизм от сетевого сбоя, неверной роли, старого cache, несовпадения конфигурации или ошибки fixture. Все marker-значения должны быть бессмысленными и не пригодными как credential.
Один обратимый опыт с измеримым результатом
Подготовьте три inert функции identity-A/B/C и конфигурации линейной A|B и циклической A|B|A композиции. После снимка baseline нужно в отдельной JVM разрешить linear control, затем cyclic definition с ограниченным stack и записать depth, exception и invocation counters. До запуска задайте пределы wall-time, CPU, памяти, файлов, сокетов и числа запросов, подходящие этому fixture. Ожидаемое наблюдение формулируется заранее: линейная цепочка вызывается по одному разу, цикл прекращается контролируемой ошибкой до stack exhaustion и без повторных side effects. Не используйте production tokens, реальные документы, пользовательские журналы, публичные цели или чужие адреса. После первой граничной точки не увеличивайте нагрузку и не расширяйте вход: очистите только созданные ресурсы, повторите normal-control и сравните состояние с первоначальным digest.
Как вынести вердикт из контрольных точек
Основной результат — trace definition / resolution-depth / invocation-A-B-C / exception-class / process-status. Passed требует одновременно защитного исхода «линейная цепочка вызывается по одному разу, цикл прекращается контролируемой ошибкой до stack exhaustion и без повторных side effects», успешного normal-control и возврата к baseline. Failed допустим только при воспроизводимом нарушении той же границы на том же fixture; один timeout или неожиданный status недостаточен. Not-applicable требует доказанной runtime-версии вне advisory range либо документированно недостижимого кода. Unknown сохраняют при неполном provenance, нестабильной среде, отсутствующем trace или несогласованных показаниях. Эти четыре исхода нельзя заменять одним severity score.
Stop-rule, обновление и обезличенный пакет поддержки
Жёсткий stop-rule: завершить JVM при росте depth выше стендового порога. При попадании runtime в затронутый range обновление берут только из доверенного канала spring-cloud/spring-cloud-function, затем повторяют прежний fixture с теми же лимитами и normal-control. В поддержку передают версию процесса, build digest, ветвь конфигурации, expected/observed, класс исключения или status, лимиты, временную шкалу и хэши synthetic fixtures. Удалите cookies, ключи, IP, внутренние имена, абсолютные пути и содержимое файлов. Этот материал описывает безопасную проверку и не является инструкцией по эксплуатации, обещанием нулевого риска или универсальным доказательством защищённости.
Материал подготовлен редакцией VOne с помощью ИИ; ссылки, даты, диапазоны версий, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по прямым источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-x9c7-5h6g-hq8q проверено 2026-08-31
- Upstream-репозиторий spring-cloud/spring-cloud-function проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.