Трендовые github проекты в нашем телеграм канале. Подпишись → Spring Boot 3.5.16 стал последним бесплатным патчем: как устроены окна поддержки и что проверить в своих сервисах
Типичная ситуация перед релизом: тесты зелёные, сборка готова, а шаг SCA в пайплайне падает из-за уязвимости в зависимости. Обычное решение — поднять patch-версию. Для Spring Boot 3.5 оно больше не работает: 3.5.16 вышел 25 июня 2026 года и стал последним открытым релизом линии. Версия 3.5.17 в календаре Spring есть, но помечена как enterprise и на Maven Central не попадёт. Пайплайн, который ходит только в Central, этот патч никогда не увидит.
Чтобы понимать, когда такое случится с вашим сервисом, нужно знать три вещи: как работает release train, сколько длится OSS-окно и что Spring понимает под LTS.
Release train: обновляется весь портфель сразу
Spring Boot управляет согласованными версиями Spring Framework, Spring Security, Spring Data и остальных проектов. Поэтому вопрос при найденной CVE в Framework звучит так: в какой линии Boot это исправление приедет в приложение. Сроки поддержки проектов портфеля тоже привязаны к линиям Boot.
Новый major или minor Boot выходит дважды в год, в мае и ноябре. Ориентир из описания поддерживаемых версий — четверг после третьего понедельника месяца. Patch-релизы выходят между поездами по необходимости, без жёсткого расписания.
Состав вагонов меняется неравномерно. Boot 4.0 в ноябре 2025 года привёз Framework 7.0 и Security 7.0. Boot 4.1 в июне 2026 года обновил Security до 7.1, а Framework остался на 7.0.
Разница между типами обновлений:
4.1.1 → 4.1.2— patch, рассчитан на обратную совместимость, его можно брать незадолго до релиза;4.0 → 4.1— minor, с новыми deprecations и возможными ломающими изменениями, требует отдельного тестирования;- переход на следующий major — полноценная миграция.
Около тринадцати месяцев на линию
Политика поддержки обещает минимум 13 месяцев OSS для minor-линии Boot (в wiki проекта встречается формулировка «минимум 12»). По опубликованному календарю майская линия получает открытые патчи примерно до конца июня следующего года, ноябрьская — до конца декабря.
| Линия | Вышла | OSS до | Коммерческая поддержка до |
|---|---|---|---|
| 3.4 | — | завершена | 31.12.2026 |
| 3.5 | май 2025 | 30.06.2026 | 30.06.2032 |
| 4.0 | ноябрь 2025 | 31.12.2026 | 31.12.2027 |
| 4.1 | июнь 2026 | 31.07.2027 | — |
Major-версия 4.0 не получает удлинённого OSS-окна из-за смены первой цифры. Фраза из политики про «до трёх лет поддержки» для major относится к поколению целиком: чтобы оставаться внутри него на открытых патчах, нужно переезжать с 4.0 на 4.1, затем на следующий minor и так далее.
Соседние окна перекрываются примерно на полгода, так что обычно открыты две линии одновременно. Пропустили один поезд — ещё можно успеть на следующий. Пропустили два — бесплатного патча для вашей линии уже нет.
После конца OSS у обычной линии остаётся коммерческий хвост, примерно до 25 месяцев от выхода. Эти сборки лежат в закрытом enterprise-репозитории.
Отдельная ловушка с вагонами: Spring Framework 7.0 открыт до июля 2027 года, потому что его использует Boot 4.1. Сервис на Boot 4.0 от этого ничего не выигрывает — после 31 декабря 2026 года новых открытых patch-релизов Boot 4.0 не будет.
Что в Spring называют LTS
В Java LTS-релизы вроде 21 и 25 годами получают бесплатные патчи от вендоров, а non-LTS живут до следующего feature-релиза. Эту модель часто переносят на Spring, и зря.
В Spring «LTS» — это последний minor внутри поколения: 2.7, 3.5. С февраля 2025 года правило формализовано: такая линия получает пять дополнительных лет enterprise-поддержки, итого около семи лет жизни. Почти весь этот срок коммерческий, OSS-окно у неё такое же, как у остальных.
Ожидания от LTS сформировались на исторических прецедентах. Spring Framework 5.3 вышел 31 октября 2020 года и получал открытые релизы до 31 августа 2024 года — почти четыре года. Это было разовое решение команды по конкретной линии, общей гарантии за ним не стояло.
Сейчас под правило пяти лет попадают:
- Boot 2.7: OSS закончился 30 июня 2023 года, коммерческая поддержка до 30 июня 2029 года;
- Boot 3.5: OSS закончился 30 июня 2026 года, коммерческая поддержка до 30 июня 2032 года.
Boot 3.4 и 4.0 в этот список не входят. Пять лет получит тот minor, который окажется последним в четвёртом поколении, и пока это ни 4.0, ни 4.1.
Коммерческие сборки распространяются под названием TrueSource Spring Enterprise (раньше — Tanzu Spring). С июня 2026 года подписчикам доступны CVE-only сборки в день ноль, до публичного advisory: в них только исправление уязвимости, без остального содержимого patch-релиза.
Для команды без подписки практический вывод такой: LTS-метка в Spring ничего не меняет. Линия 3.5 для неё закончилась 30 июня 2026 года так же, как закончилась бы любая другая.
2026 год: поезд задержали из-за CVE
Исторически команда Spring получала около 6,5 security-отчётов в месяц. За 2024 год закрыли 22 уязвимости, за 2025 — 16.
В 2026 году цифры выглядят так:
- март — 55 отчётов от сообщества, из этой волны в апреле объявили 26 CVE;
- апрель — команда включила собственное сканирование и получила 482 отчёта по 65 проектам: 370 от внутреннего сканирования, 112 от сообщества; 37% внутренних находок оказались дубликатами или ложными срабатываниями;
- май — ещё 72 отчёта от сообщества;
- 20 августа — пачка исправлений, в которой Sonatype насчитала 91 CVE; к 24 августа за год закрыли больше 200 уязвимостей.
Майский release train из-за этого сдвинули и сжали в окно 8–14 июня: набор security-исправлений не помещался в исходную дату. Boot 4.1.0 вышел 10 июня. Копить подтверждённые CVE до ноябрьского поезда команда не стала. Broadcom назвал июньский набор крупнейшей пачкой security-обновлений за 23 года истории Spring и сообщил, что за пять месяцев на поиск уязвимостей frontier-моделями ушло больше 12 миллиардов токенов.
Модели используются для поиска, патчи пишут и проверяют люди. В обоснование Broadcom приводит исследование 1Password: из 6000 сгенерированных моделью патчей только 26% устраняли уязвимость и при этом не ломали приложение.
Команда ожидает, что темп снизится от апрельского пика за счёт роста числа дублей, но к 6,5 отчётам в месяц уже не вернётся. Для пользователей это значит две вещи:
- Security-релизы стали крупнее и выходят вне привычного расписания. Иногда приходится обновлять сразу часть портфеля.
- Исправления распространяются по тем же правилам: открытая линия получает patch на Central, закрытая — сборку в enterprise-репозитории. Новая CVE старую линию заново не открывает.
Что делать с красным SCA
Сначала проверить, открыта ли ваша линия:
Для Maven:
mvn help:evaluate -Dexpression=project.parent.version -q -DforceStdout
Для Gradle:
./gradlew dependencyInsight --dependency org.springframework.boot:spring-boot --configuration runtimeClasspath
Дальше развилка короткая:
- Линия открыта (4.1, 4.0 до конца 2026 года) — поднимаете patch и выкатываете релиз без миграции.
- Линия закрыта (3.5 и старше) — переезжаете на поддерживаемый minor или получаете исправление через коммерческую поддержку. Ждать бесплатного патча на старой линии бессмысленно, политика его не обещает.
- Boot 3.4 — 31 декабря 2026 года заканчивается даже коммерческое окно. Линии 3.0–3.3 уже завершены полностью.
Переход на следующий minor стоит планировать как плановую задачу, пока окна перекрываются. Если ждать до первого красного пайплайна, выбирать придётся между срочной миграцией, покупкой подписки и релизом с известной уязвимостью.
При нескольких десятках сервисов полезно держать сводку версий Boot и Framework по всем репозиториям рядом с датами конца OSS-окна. Тогда сервис на 4.0 с дедлайном в декабре виден заранее, а не в день релиза.