71 уязвимость за июнь: что произошло в экосистеме Spring
В июне 2026 года Broadcom опубликовала сведения о 71 уязвимости в экосистеме Spring. В статье разберём что произошло и чего касаются эти уязвимости.
В июне 2026 года Broadcom опубликовала сведения о 71 уязвимости в экосистеме Spring. Из них 31 получила уровень опасности High, 36 — Medium и четыре — Low. Для сравнения: за весь 2025 год в проектах Spring было опубликовано 16 CVE.
Речь не о 71 дефекте непосредственно в Spring Boot. Список охватывает Spring Framework, Spring Security, Spring Data, Spring Web Services, Spring for Apache Kafka, Micrometer и другие компоненты. Некоторые входят в типичный стек приложения напрямую, другие появляются в нём как транзитивные зависимости. В обоих случаях уязвимый код становится частью поверхности атаки, даже если команда явно не добавляла соответствующую библиотеку в pom.xml или build.gradle.
Само по себе число CVE ещё не описывает реальный риск. Компонент может отсутствовать в сборке, уязвимый код может быть недостижим в конкретной конфигурации, а диапазон затронутых версий может не пересекаться с тем, что работает в продакшене. Поэтому такой список нельзя просто загрузить в трекер и получить 71 одинаково срочную задачу. Сначала нужно определить, какие компоненты используются, какие версии установлены и при каких условиях проявляется каждая уязвимость.
Но масштаб июньской публикации всё равно показателен. Поиск уязвимостей вышел на новый уровень: ИИ-инструменты умеют анализировать большие кодовые базы, прослеживать потенциально опасные пути выполнения и помогать исследователям готовить проверяемые сценарии эксплуатации. В 2026 году Anthropic сообщила уже о 2300 уязвимостях, переданных разработчикам 392 open source-проектов после проверки специалистами. В Linux система Xint Code примерно за час обнаружила Copy Fail — уязвимость повышения привилегий, которая затрагивала основные дистрибутивы.
Это не означает, что всю 71 уязвимость в Spring нашёл ИИ. В бюллетенях указаны разные источники: внутренние проверки Broadcom и сообщения внешних исследователей. Мы говорим о том, что общий процесс уже изменился. Анализировать код и находить подозрительные участки теперь можно быстрее, а значит, поток новых отчётов будет расти. Для команд, которые продолжают использовать неподдерживаемые ветки, это особенно чувствительно: новые дефекты появляются быстрее, чем их можно закрывать обычным обновлением внутри завершившегося жизненного цикла.
Мы сопоставили июньский список с составом Axiom Spring. Во всех компонентах, которые входят в поставку, перечисленные уязвимости устранены. Если исправление для компонента ещё не подготовлено и не прошло проверку, мы не включаем этот компонент в релиз. После устранения уязвимости и тестирования он может вернуться в состав поставки. Поэтому прочерк в таблице означает не пропущенное исправление, а отсутствие соответствующего уязвимого компонента в продукте.
Заглянем в историю репозиториев Spring
Отдельный интерес представляет хронология исправлений. История репозиториев показывает, что работу над частью дефектов Broadcom начала ещё до публикации бюллетеней: самые ранние авторские даты некоторых коммитов приходятся на апрель и май, тогда как сведения о CVE появились в июне. Это обычная часть coordinated disclosure: разработчик получает закрытый отчёт, готовит и проверяет исправление, а подробности раскрывают после того, как патч готов к выпуску.
При чтении истории Git важно учитывать две даты:
- «Исправлено» в таблице — дата самого раннего найденного коммита с изменением.
- «Опубликовано» — ориентировочный момент, когда коммит появился в публичном git-репозитории.
Специфика в том, что дата коммита сохраняется при переносах, поэтому их порядок следования произвольный, а в публичном репозитории Spring они могут появляться с большой задержкой.
В таблице ниже приведены найденные коммиты и версии компонентов из Spring Boot 2.7.18, в которой CVE не закрыты. Эта хронология помогает понять, сколько времени проходит между подготовкой исправления и публичным раскрытием уязвимости.
| CVE | Уровень опасности | Компонент | Коммиты | Версия компонента в Spring Boot 2.7.18 |
|---|---|---|---|---|
| CVE-2026-40988 | HIGH | Spring Security | 9d4d9065b4 (исправлено 17 апреля, опубликовано между 27 апреля и 5 июня) | 5.7.11 |
| CVE-2026-41003 | HIGH | Spring Security | 356131b1ea (исправлено 29 апреля, опубликовано между 27 апреля и 5 июня) | 5.7.11 |
| CVE-2026-41700 | HIGH | Spring for GraphQL | 169bfc94 (исправлено 7 мая, опубликовано между 21 апреля и 19 мая) | 1.0.6 |
| CVE-2026-41716 | HIGH | Spring Data Commons | e71100a8b (исправлено 8 июня) | 2.7.18 |
| CVE-2026-41717 | HIGH | Spring Data MongoDB | 4488760cd (исправлено 8 июня) | 3.4.18 |
| CVE-2026-41720 | HIGH | Spring LDAP | e2748d44 (исправлено 7 мая, опубликовано не позднее 8 июня) | 2.4.1 |
| CVE-2026-41728 | HIGH | Spring Data REST | d5b4de42c (исправлено 8 июня) | 3.7.18 |
| CVE-2026-41729 | HIGH | Spring Data REST | 9ba7da5cc (исправлено 8 июня) | 3.7.18 |
| CVE-2026-41731 | HIGH | Spring for Apache Kafka | 9439fbb9e (исправлено 13 мая, опубликовано не позднее 9 июня) | 2.8.11 |
| CVE-2026-41842 | HIGH | Spring Framework | 4fb0244b (исправлено и опубликовано 23 апреля) | 5.3.31 |
| CVE-2026-41845 | HIGH | Spring Framework | 86d99790 (исправлено 3 мая, опубликовано не позднее 8 июня) | 5.3.31 |
| CVE-2026-41849 | HIGH | Spring Framework | 7a8917b1 (исправлено 11 мая, опубликовано не позднее 8 июня) | 5.3.31 |
| CVE-2026-41850 | HIGH | Spring Framework | 2c18c33c (исправлено 21 апреля, опубликовано не позднее 8 июня) | 5.3.31 |
| CVE-2026-41855 | HIGH | Spring Framework | 9bec52b1 (исправлено 1 мая, опубликовано не позднее 8 июня) | 5.3.31 |
| CVE-2026-41856 | HIGH | Spring for GraphQL | 63a89ed1 (исправлено 17 мая, опубликовано не позднее 19 мая) | 1.0.6 |
| CVE-2026-47825 | HIGH | Spring Cloud Gateway | 9041b5497 (исправлено 19 августа 2025, опубликовано не позднее 10 июня, но вряд ли за год коммит никто не видел) | 3.1.8 |
| CVE-2026-41001 | MEDIUM | Spring Boot | 4218bd76e93 (исправлено 28 апреля, опубликовано не позднее 10 июня) | 2.7.18 |
| CVE-2026-41696 | MEDIUM | Spring Data MongoDB | f040a38a3 (исправлено 8 июня) | 3.4.18 |
| CVE-2026-41697 | MEDIUM | Spring Data Relational | 4defdc4a2 (исправлено 8 июня) | 2.4.18 |
| CVE-2026-41701 | MEDIUM | Spring AMQP | ca163ae82 (исправлено 4 мая, опубликовано 9 июня) | 2.4.17 |
| CVE-2026-41706 | MEDIUM | Spring Security | a14c9d66b1 (исправлено 6 мая, опубликовано не позднее 28 мая) | 5.7.11 |
| CVE-2026-41710 | MEDIUM | Spring Retry | 6f351ed (исправлено 8 мая, опубликовано 8 июня) | 1.3.4 |
| CVE-2026-41711 | MEDIUM | Spring Data Commons | e377d6b93 (исправлено 8 июня) | 2.7.18 |
| CVE-2026-41714 | MEDIUM | Spring AMQP | 3a38397bd (исправлено 5 мая, опубликовано 9 июня) | 2.4.17 |
| CVE-2026-41719 | MEDIUM | Spring Data KeyValue | 3d72c00 (исправлено 8 июня) | 2.7.18 |
| CVE-2026-41721 | MEDIUM | Spring Data Commons | 56685ec2f (исправлено 8 июня) | 2.7.18 |
| CVE-2026-41726 | MEDIUM | Spring for Apache Kafka | ca2337ba7 (исправлено 6 мая, опубликовано 9 июня) | 2.8.11 |
| CVE-2026-41727 | MEDIUM | Spring for Apache Kafka | 7495b376b (исправлено 24 апреля, опубликовано 9 июня) | 2.8.11 |
| CVE-2026-41730 | MEDIUM | Spring Data REST | f6d19aaca (исправлено 8 июня) | 3.7.18 |
| CVE-2026-41837 | MEDIUM | Spring Data REST | 3dc76b887 (исправлено 8 июня) | 3.7.18 |
| CVE-2026-41838 | MEDIUM | Spring Framework | 4e5b74c2 (исправлено и опубликовано 1 мая) | 5.3.31 |
| CVE-2026-41839 | MEDIUM | Spring Framework | 548dc007 (исправлено и опубликовано 1 мая) | 5.3.31 |
| CVE-2026-41840 | MEDIUM | Spring Framework | 952198b2 (исправлено и опубликовано 28 апреля) | 5.3.31 |
| CVE-2026-41841 | MEDIUM | Spring Framework | 32170e58 (исправлено и опубликовано 28 апреля) | 5.3.31 |
| CVE-2026-41843 | MEDIUM | Spring Framework | 4fb0244b (исправлено и опубликовано 23 апреля) | 5.3.31 |
| CVE-2026-41844 | MEDIUM | Spring Framework | 7add5243 (исправлено 3 мая, опубликовано 8 июня) | 5.3.31 |
| CVE-2026-41846 | MEDIUM | Spring Framework | e8f10244 (исправлено 3 мая, опубликовано 8 июня) | 5.3.31 |
| CVE-2026-41847 | MEDIUM | Spring Framework | 9d263668 (исправлено в 2021 году в более современных версиях) | 5.3.31 |
| CVE-2026-41851 | MEDIUM | Spring Framework | 7baa8653 (исправлено 17 апреля, опубликовано 8 июня) | 5.3.31 |
| CVE-2026-41853 | MEDIUM | Spring Framework | 696692f1 (исправлено и опубликовано 16 июня 2025) | 5.3.31 |
| CVE-2026-47838 | MEDIUM | Spring Security | e3ad551ab (исправлено 16 мая, опубликовано не позднее 5 июня) | 5.7.11 |
| CVE-2026-41694 | LOW | Spring Security | cf06871200 (исправлено 30 апреля, опубликовано не позднее 29 мая) | 5.7.11 |
| CVE-2026-41848 | LOW | Spring Framework | 12b44f25 (исправлено 11 мая, опубликовано 8 июня) | 5.3.31 |
| CVE-2026-41852 | LOW | Spring Framework | 83667f80 (исправлено 4 мая, опубликовано 8 июня) | 5.3.31 |
История коммитов показывает, как исправления готовились, но ничего не говорит о структуре самого массива уязвимостей. Чтобы понять, где сосредоточен риск, мы рассмотрели список в нескольких разрезах: по уровню опасности, компонентам, функциональным областям, доступности атаки, возможным последствиям и техническому механизму.
Мы сгруппировали уязвимости по разным критериям, чтобы вы могли посмотреть на них под разным углом.
По уровню опасности
Сначала посмотрим на распределение по уровню опасности. На диаграмме указаны уровень опасности, количество CVE в каждой группе и их доля от общего числа. Уровень опасности отражает потенциальную тяжесть последствий, но не учитывает, используется ли компонент в конкретном приложении и достижим ли уязвимый код.

По компонентам Spring
Следующий разрез показывает, в каких проектах экосистемы опубликовано больше всего уязвимостей. На диаграмме приведено общее число CVE для компонента, а «High», «Medium» и «Low» показывают их распределение по уровню опасности. Это позволяет увидеть не только количество записей, но и их состав.

По функциональной области
Отдельные проекты Spring часто решают одну общую задачу, поэтому мы объединили их по функциональным областям. В таблице указана область применения, относящиеся к ней компоненты и суммарное количество CVE. Такое представление помогает оценить, какие части типичного Spring-приложения затронуты сильнее: веб-стек, работа с данными, идентификация или наблюдаемость.
| Функциональная область | Компоненты | Количество |
|---|---|---|
| Веб-стек и базовая платформа | Spring Framework, Spring Web Flow, Reactor Netty, Spring Boot | 23 |
| Идентификация и безопасность протоколов | Spring Security, Spring Authorization Server, Spring LDAP, Spring Web Services | 16 |
| Данные и API-представление | Spring Data Commons, REST, MongoDB, Relational, KeyValue, Spring HATEOAS, Spring for GraphQL | 17 |
| Messaging, интеграция и сохраняемое состояние | Spring Integration, AMQP, Kafka, Pulsar, Statemachine | 8 |
| Наблюдаемость и устойчивость | Micrometer, Spring Cloud Sleuth, Spring Retry, Spring Cloud Gateway | 5 |
| AI и инструменты разработки | Spring AI, Spring REST Docs | 2 |
По области доступности атаки и требованиям CVSS
Количество CVE не показывает, насколько легко добраться до уязвимого кода. В этой таблице разобраны эксплуатационные метрики CVSS: вектор атаки, её сложность, необходимые привилегии, участие пользователя и выход последствий за границы компонента.
Как читать вектор CVSS
Векторы вида AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N — это метрики CVSS v3.1, записанные сокращённо. Каждая пара «буква:значение» описывает одно свойство оценки:
| Метрика | Сокращение | Значение | Смысл |
|---|---|---|---|
| AV — Attack Vector (откуда атакуют) | N | Network | по сети извне |
| A | Adjacent | с соседней сети (например, Wi-Fi) | |
| L | Local | с локальной машины | |
| P | Physical | физический доступ | |
| AC — Attack Complexity (сложность атаки) | L | Low | не требует особых условий |
| H | High | нужны обходные условия/стечение обстоятельств | |
| PR — Privileges Required (нужные права) | N | None | без авторизации |
| L | Low | с правами обычного пользователя | |
| H | High | с правами администратора | |
| UI — User Interaction (участие пользователя) | N | None | пользователь ничего не делает |
| R | Required | нужно действие жертвы (клик по ссылке и т.п.) | |
| S — Scope (выход за границы компонента) | U | Unchanged | ущерб не выходит за уязвимый компонент |
| C | Changed | последствия перекидываются на другие системы | |
| C — Confidentiality (конфиденциальность) | H/L/N | High/Low/None | насколько раскрываются данные |
| I — Integrity (целостность) | H/L/N | High/Low/None | насколько данные можно изменить |
| A — Availability (доступность) | H/L/N | High/Low/None | насколько сервис можно положить |
Примеры к нашим CVE:
- C:H/I:H/A:N — высокая потеря конфиденциальности и целостности, на доступность не влияет.
- PR:N — привилегии не требуются; PR:L — нужны низкие привилегии.
- AC:L — низкая сложность атаки (просто); AC:H — высокая (нужны особые условия).
- S:C — ущерб выходит за пределы уязвимого компонента (в текущем списке таких нет: все три CVE с S:U).

| Критерий | Значение | Количество |
|---|---|---|
| Attack Vector | Network (AV:N) | 68 |
| Attack Vector | Adjacent (AV:A) | 2 |
| Attack Vector | Local (AV:L) | 1 |
| Attack Complexity | Low (AC:L) | 36 |
| Attack Complexity | High (AC:H) | 35 |
| Privileges Required | None (PR:N) | 56 |
| Privileges Required | Low (PR:L) | 13 |
| Privileges Required | High (PR:H) | 2 |
| User Interaction | None (UI:N) | 55 |
| User Interaction | Required (UI:R) | 16 |
| Scope | Unchanged (S:U) | 60 |
| Scope | Changed (S:C) | 11 |
Практический сетевой разрез:
- 44 CVE: сеть, без привилегий и без действий пользователя (AV:N/PR:N/UI:N);
- 23 CVE: дополнительно низкая сложность (AV:N/AC:L/PR:N/UI:N);
- 16 CVE требуют действия пользователя, поэтому их приоритет сильнее зависит от реального browser-facing сценария;
- 11 CVE имеют измененную область воздействия (S:C): последствие выходит за исходную границу уязвимого компонента.
По воздействию на конфиденциальность, целостность и доступность
Следующий разрез описывает возможные последствия для трёх базовых свойств безопасности: конфиденциальности, целостности и доступности. Значения High, Low и None показывают степень воздействия, а столбец «Затронуто всего» — количество CVE, которые хотя бы в какой-то мере влияют на соответствующее свойство. Строки пересекаются: одна уязвимость может одновременно влиять на несколько свойств.
| Свойство | High | Low | None | Затронуто всего |
|---|---|---|---|---|
| Конфиденциальность (C) | 24 | 21 | 26 | 45 |
| Целостность (I) | 17 | 21 | 33 | 38 |
| Доступность (A) | 24 | 10 | 37 | 34 |
По техническому механизму
Наконец, мы сгруппировали уязвимости по механизму эксплуатации: отказ в обслуживании, инъекции, небезопасная десериализация, обход аутентификации, ошибки обработки XML и другие классы. В первой колонке указан технический класс, во второй — количество и идентификаторы относящихся к нему CVE. Категории могут пересекаться, поэтому их сумма превышает 71: одна уязвимость иногда использует сразу несколько механизмов или приводит к нескольким типам последствий.
Полный список уязвимостей
Агрегированные данные позволяют увидеть общую картину, но для приоритизации этого недостаточно. Ниже приведён полный список. Для каждой CVE указаны компонент, уровень опасности, поверхность атаки, технический класс, ключевое условие эксплуатации и влияние на конфиденциальность, целостность и доступность. Эти условия особенно важны: именно по ним можно определить, применима ли уязвимость к конкретному приложению.
| CVE | Компонент | Уровень опасности | Поверхность | Технический класс | Ключевое условие | CVSS C/I/A |
|---|---|---|---|---|---|---|
| CVE-2026-40983 | Micrometer | HIGH | gRPC-сервер и метрики | Исчерпание ресурсов и DoS | Включены ObservationRegistry, метрики Observation и ObservationGrpcServerInterceptor | C:N / I:N / A:H |
| CVE-2026-40984 | Micrometer | HIGH | HTTP-сервер и метрики | Исчерпание ресурсов и DoS | Включена уязвимая HTTP-инструментация Micrometer и запись метрик | C:N / I:N / A:H |
| CVE-2026-40987 | Spring Integration | HIGH | FTP, SFTP или SMB-клиент | Path traversal и произвольная запись файла | Удаленный файловый сервер злонамерен или скомпрометирован | C:L / I:H / A:L |
| CVE-2026-40988 | Spring Security | HIGH | SAML 2.0 endpoint | Decompression bomb и DoS | Используется spring-security-saml2-service-provider с REDIRECT binding | C:N / I:N / A:H |
| CVE-2026-40993 | Spring Security | HIGH | База метаданных SAML | Небезопасная Java-десериализация и RCE | Атакующий может записывать BLOB-поля таблицы saml2_asserting_party_metadata | C:N / I:H / A:H |
| CVE-2026-40994 | Spring Web Services | HIGH | SOAP и WS-Security | Небезопасное значение по умолчанию | Wss4jSecurityInterceptor используется без явного включения BSP | C:L / I:H / A:N |
| CVE-2026-40998 | Spring Web Services | HIGH | SOAP и XPath | XXE при разборе XML | Jaxp13XPathTemplate обрабатывает недоверенный StreamSource или SAXSource | C:H / I:L / A:N |
| CVE-2026-40999 | Spring Web Services | HIGH | SOAP и исходящие соединения | SSRF через WS-Addressing | Разрешены недоверенные ReplyTo или FaultTo и настроены out-of-band ответы | C:H / I:N / A:N |
| CVE-2026-41003 | Spring Security | HIGH | Браузер и SAML-формы | XSS из-за отсутствия HTML-кодирования | Атакующий влияет на RelyingPartyRegistration, требуется действие пользователя | C:H / I:L / A:N |
| CVE-2026-41006 | Spring HATEOAS | HIGH | HTTP API и hypermedia | Mass assignment и обход Jackson-ограничений | Включен Collection+JSON или UBER, endpoint принимает RepresentationModel с чувствительным setter | C:N / I:N / A:H |
| CVE-2026-41007 | Spring HATEOAS | HIGH | HTTP API и hypermedia | Неограниченный кэш и DoS | Приложение разбирает недоверенные ссылки или hypermedia | C:N / I:N / A:H |
| CVE-2026-41695 | Spring Data Commons | HIGH | Spring Data API | Ресурсный DoS при разрешении property path | Недоверенный путь свойства попадает в MappingContext при глубокой или рекурсивной модели | C:N / I:N / A:H |
| CVE-2026-41699 | Spring for GraphQL | HIGH | GraphQL API | Небезопасная десериализация и RCE | Есть paginated Connection field и доступные gadget-классы | C:H / I:H / A:H |
| CVE-2026-41700 | Spring for GraphQL | HIGH | GraphQL WebSocket и браузер | Cross-Site WebSocket Hijacking | Включен WebSocket transport, cookie-сессия и нет проверки Origin | C:H / I:H / A:N |
| CVE-2026-41708 | Spring Cloud Sleuth | HIGH | Трассировка транзакций | Исчерпание ресурсов и DoS | Включена Spring TX-инструментация Sleuth | C:N / I:N / A:H |
| CVE-2026-41716 | Spring Data Commons | HIGH | Spring Data web binding | Неограниченный negative-result cache и DoS | Недоверенные имена свойств приходят через Querydsl binding или @ProjectedPayload | C:N / I:N / A:H |
| CVE-2026-41717 | Spring Data MongoDB | HIGH | MongoDB repository | SpEL-инъекция | @Query или @Aggregation использует capture-all placeholder с недоверенным вводом | C:H / I:H / A:H |
| CVE-2026-41720 | Spring LDAP | HIGH | LDAP-аутентификация | Обход аутентификации пустым паролем | LDAP-сервер разрешает unauthenticated bind, известно имя пользователя | C:H / I:H / A:N |
| CVE-2026-41728 | Spring Data REST | HIGH | Spring Data REST JSON Patch | Обход read-only ограничений | Модель содержит вложенный объект, коллекцию или map с Jackson read-only на контейнере | C:N / I:H / A:N |
| CVE-2026-41729 | Spring Data REST | HIGH | Spring Data REST JSON Patch | SpEL-инъекция через ключ map | Entity содержит Map, атакующему доступен JSON Patch item endpoint | C:H / I:H / A:N |
| CVE-2026-41731 | Spring for Apache Kafka | HIGH | Kafka consumer | Небезопасная десериализация заголовков | Недоверенный producer задает type header, trusted packages сопоставляются по префиксу | C:H / I:H / A:H |
| CVE-2026-41732 | Spring for Apache Pulsar | HIGH | Pulsar consumer | Небезопасная десериализация заголовков | Недоверенный producer задает type header, trusted packages слишком широки или пусты | C:H / I:H / A:H |
| CVE-2026-41842 | Spring Framework | HIGH | MVC или WebFlux static resources | Алгоритмический DoS при разрешении ресурса | Статические файлы отдаются с файловой системы и включено versioning | C:N / I:N / A:H |
| CVE-2026-41845 | Spring Framework | HIGH | Браузер и JavaScript | XSS из-за неверного экранирования | Недоверенный ввод передается в JavaScriptUtils.javaScriptEscape, требуется действие пользователя | C:H / I:L / A:N |
| CVE-2026-41849 | Spring Framework | HIGH | SpEL evaluator | Integer overflow и DoS | Приложение вычисляет недоверенные SpEL-выражения | C:N / I:N / A:H |
| CVE-2026-41850 | Spring Framework | HIGH | SpEL evaluator | Алгоритмический DoS | Приложение вычисляет недоверенные SpEL-выражения | C:N / I:N / A:H |
| CVE-2026-41855 | Spring Framework | HIGH | JMS consumer | Небезопасная Jackson-десериализация | JMS-окружение недоверенное и используется Jackson message converter | C:H / I:H / A:H |
| CVE-2026-41856 | Spring for GraphQL | HIGH | GraphQL controller | Обход method security | Используются @EnableMethodSecurity и @Controller в иерархии типов | C:H / I:N / A:N |
| CVE-2026-41862 | Spring Statemachine | HIGH | Хранилище состояния | Небезопасная Kryo-десериализация и RCE | Атакующий способен изменить сохраненный state-machine context | C:H / I:H / A:H |
| CVE-2026-47825 | Spring Cloud Gateway | HIGH | API gateway и reverse proxy | Доверие к поддельным forwarding-заголовкам | Gateway принимает X-Forwarded-For или Forwarded от недоверенного proxy | C:N / I:H / A:N |
| CVE-2026-47835 | Spring AI | HIGH | Vector store | Инъекция в metadata filter | Недоверенные спецсимволы попадают в фильтр Elasticsearch, OpenSearch или GemFire | C:H / I:L / A:L |
| CVE-2026-40985 | Spring Web Flow | MEDIUM | Spring Web Flow и формы | EL-инъекция через привязку данных | Явно настроен WebFlowELExpressionParser, отключена безопасная Spring binding и не объявлены binding-поля | C:H / I:H / A:N |
| CVE-2026-40986 | Spring Web Flow | MEDIUM | Браузер и Ajax | XSS из-за неверного типа содержимого | Используются spring-js-resources и Spring-Dojo.js, требуется действие пользователя | C:N / I:H / A:N |
| CVE-2026-40991 | Spring REST Docs | MEDIUM | Тесты генерации документации | XXE при разборе XML | Тест документирует недоверенный удаленный XML через WebTestClient или REST Assured | C:H / I:N / A:L |
| CVE-2026-40992 | Spring Boot | MEDIUM | SMTP-клиент | Отключенная проверка имени TLS-сервера | Проверка checkserveridentity не включена, атакующий находится в смежной сети | C:L / I:L / A:L |
| CVE-2026-40995 | Spring Web Services | MEDIUM | SOAP и X.509-аутентификация | Обход проверок состояния учетной записи | X509AuthenticationProvider получает заблокированного, отключенного или просроченного пользователя | C:L / I:L / A:N |
| CVE-2026-40996 | Spring Web Services | MEDIUM | SOAP и XML Encryption | Слабый алгоритм транспорта ключа | Разрешен RSA PKCS#1 v1.5, атакующий способен на MITM или oracle-атаку | C:L / I:L / A:N |
| CVE-2026-40997 | Spring Web Services | MEDIUM | SOAP-аутентификация | Раскрытие состояния учетной записи | Исключения состояния пользователя доходят до удаленного SOAP-клиента | C:L / I:N / A:N |
| CVE-2026-41001 | Spring Boot | MEDIUM | Локальный хост и Artemis | Предсказуемый временный каталог и symlink-атака | Embedded Artemis работает без явно заданного каталога, атакующий имеет локальную учетную запись | C:L / I:L / A:L |
| CVE-2026-41008 | Spring Authorization Server | MEDIUM | OAuth 2.0 authorization endpoint | Open redirect | Используется request_uri с непроверенным redirect_uri, требуется действие пользователя | C:L / I:L / A:N |
| CVE-2026-41696 | Spring Data MongoDB | MEDIUM | MongoDB repository | Инъекция в regex-шаблон запроса | Недоверенный параметр передается в @Query с regex binding | C:H / I:N / A:N |
| CVE-2026-41697 | Spring Data Relational | MEDIUM | Relational repository | Wildcard-инъекция и слепое извлечение данных | Недоверенный ввод попадает в QBE со StringMatcher STARTING, ENDING или CONTAINING | C:L / I:N / A:L |
| CVE-2026-41701 | Spring AMQP | MEDIUM | AMQP reply queue | Предсказуемый correlation ID и reply poisoning | Используется фиксированная очередь ответов, атакующий может публиковать сообщения | C:L / I:L / A:N |
| CVE-2026-41706 | Spring Security | MEDIUM | Браузер и страница входа | Open redirect через cookie | Используется CookieRequestCache, атакующий может внедрить REDIRECT_URI, требуется вход пользователя | C:L / I:L / A:N |
| CVE-2026-41710 | Spring Retry | MEDIUM | Stateful retry | Неограниченное накопление записей кэша | Включен @Retryable(stateful=true), ключи и ошибки контролирует атакующий | C:N / I:N / A:H |
| CVE-2026-41711 | Spring Data Commons | MEDIUM | Spring Data web binding | Stack overflow и DoS | Недоверенный Sort передается без фильтрации либо используется @ProjectedPayload или @QuerydslPredicate | C:N / I:N / A:H |
| CVE-2026-41714 | Spring AMQP | MEDIUM | AMQP TLS-клиент | Отключенная проверка сертификата и имени | Вызван setUri(amqps://...) без setUseSSL(true), возможен MITM | C:L / I:N / A:N |
| CVE-2026-41715 | Reactor Netty | MEDIUM | Reactive HTTP-клиент | Утечка credentials при downgrade redirect | Клиенту явно разрешено следовать редиректам с HTTPS на HTTP | C:L / I:L / A:N |
| CVE-2026-41719 | Spring Data KeyValue | MEDIUM | KeyValue repository | SpEL-инъекция | SpelPropertyComparator сортирует по недоверенному значению Sort | C:H / I:L / A:L |
| CVE-2026-41721 | Spring Data Commons | MEDIUM | Spring Data web binding | Чрезмерное выделение памяти и DoS | Включен Spring Data Web Support, контроллер использует @ProjectedPayload | C:N / I:N / A:H |
| CVE-2026-41726 | Spring for Apache Kafka | MEDIUM | Kafka consumer | Неограниченный кэш десериализаторов и DoS | Явно включен DelegatingDeserializer, producer контролирует selector header | C:N / I:N / A:H |
| CVE-2026-41727 | Spring for Apache Kafka | MEDIUM | Kafka retry topics | Подмена служебных заголовков и остановка consumer | Producer контролирует retry_topic-attempts или retry_topic_backoff-timestamp | C:N / I:N / A:H |
| CVE-2026-41730 | Spring Data REST | MEDIUM | Spring Data REST error response | Раскрытие внутренних данных | Наружу открыт repository endpoint без дополнительной обработки ошибок или политики доступа | C:L / I:N / A:N |
| CVE-2026-41837 | Spring Data REST | MEDIUM | Spring Data REST Querydsl | Обход Jackson-скрытия полей | Клиент использует скрытое persistent-поле как filter key | C:L / I:N / A:N |
| CVE-2026-41838 | Spring Framework | MEDIUM | WebSocket | Предсказуемый идентификатор сессии | Есть недостаточные правила авторизации и возможность угадать session ID | C:H / I:N / A:N |
| CVE-2026-41839 | Spring Framework | MEDIUM | WebFlux session | Session fixation | Скомпрометирован связанный поддомен, требуется действие пользователя | C:L / I:L / A:N |
| CVE-2026-41840 | Spring Framework | MEDIUM | WebFlux multipart endpoint | Утечка памяти и DoS | Приложение принимает multipart-запросы через WebFlux | C:N / I:N / A:H |
| CVE-2026-41841 | Spring Framework | MEDIUM | MVC или WebFlux static resources | Ошибочное разделение кэша и обход доступа | Несколько resource handler используют общий кэш, один путь защищен | C:H / I:N / A:N |
| CVE-2026-41843 | Spring Framework | MEDIUM | MVC или WebFlux static resources | Path traversal | Включено versioning файловых ресурсов, атакующий знает или угадывает метаданные | C:H / I:N / A:N |
| CVE-2026-41844 | Spring Framework | MEDIUM | MVC или WebFlux view resolution | Open redirect или internal forward | Есть mapping /** без явного view name, требуется переход пользователя | C:L / I:L / A:N |
| CVE-2026-41846 | Spring Framework | MEDIUM | Браузер и JSP | XSS через form tags | Недоверенный ввод попадает в cssClass, cssErrorClass или cssStyle, требуется действие пользователя | C:H / I:L / A:N |
| CVE-2026-41847 | Spring Framework | MEDIUM | WebFlux Kotlin Router DSL | Обход security filter | Фильтр передает измененный ServerRequest для реализации security concern | C:L / I:L / A:N |
| CVE-2026-41851 | Spring Framework | MEDIUM | SpEL evaluator | Неограниченный кэш и DoS | Недоверенные SpEL-выражения разбираются и кэшируются | C:N / I:N / A:L |
| CVE-2026-41853 | Spring Framework | MEDIUM | MVC или WebFlux multipart endpoint | Multipart request smuggling | Перед приложением есть WAF или proxy, который отдельно разбирает multipart | C:N / I:L / A:N |
| CVE-2026-41854 | Spring Framework | MEDIUM | Исходящий HTTP-клиент | SSRF через неоднозначный разбор URL | UriComponentsBuilder применяется для проверки внешнего URL перед соединением | C:L / I:L / A:N |
| CVE-2026-47838 | Spring Security | MEDIUM | X.509 pre-authentication | Имперсонация из-за неверного разбора CN | Атакующий предъявляет специально сформированный сертификат при скомпрометированной upstream trust boundary | C:H / I:H / A:N |
| CVE-2026-59355 | Spring Authorization Server | MEDIUM | OAuth 2.0 authorization endpoint | Open redirect | Используется request_uri с непроверенным redirect_uri, требуется действие пользователя | C:L / I:L / A:N |
| CVE-2026-41000 | Spring Web Services | LOW | SOAP и WS-Security | Обход защиты от повторов | Приложение рассчитывает на ReplayCache для UsernameToken, Timestamp или SAML | C:N / I:L / A:N |
| CVE-2026-41694 | Spring Security | LOW | SAML 2.0 endpoint | Decryption oracle | Приложение расшифровывает SAML payload до проверки подписи | C:L / I:N / A:N |
| CVE-2026-41848 | Spring Framework | LOW | AntPathMatcher | ReDoS | Атакующий контролирует pattern, передаваемый в методы сопоставления | C:N / I:N / A:L |
| CVE-2026-41852 | Spring Framework | LOW | Ограниченный SpEL evaluator | Произвольный вызов метода | Приложение вычисляет недоверенные SpEL-выражения в restricted или read-only контексте | C:N / I:N / A:L |
Июньский список не означает, что любое приложение на Spring Boot 2.7 содержит 71 эксплуатируемую уязвимость. Реальная оценка начинается не с общего числа, а с состава сборки, версий компонентов, конфигурации и достижимости уязвимого кода.
ИИ снижает стоимость анализа больших кодовых баз, поэтому уязвимости находят быстрее и в большем количестве. Для поддерживаемых веток это означает более плотный поток обновлений.
История коммитов показывает, что для части июньских CVE исправления начали готовить за несколько недель до публичного раскрытия. Получается, на момент публикации данных, разработчики уже не только знали о проблеме, но и успели подготовить соответствующий патч.
В Axiom Spring мы проверили июньские уязвимости применительно к фактическому составу продукта. Во всех компонентах, входящих в поставку, они устранены. Компонент с неисправленной уязвимостью в релиз не включается и добавляется только после исправления и тестирования. Это не отменяет необходимость инвентаризации и анализа применимости CVE, но не оставляет заведомо уязвимый код в поддерживаемой поставке.
Теги:

Илья Сазонов
Директор по продуктам Axiom JDK, направления Spring и OpenIDE